author | pcpa <paulo.cesar.pereira.de.andrade@gmail.com> | 2013年09月14日 14:43:05 -0300 |
---|---|---|
committer | pcpa <paulo.cesar.pereira.de.andrade@gmail.com> | 2013年09月14日 14:43:05 -0300 |
commit | 95e3fbc8bc674a3d9ab745ae9d0a8ff630016fdf (patch) | |
tree | 33cc4ad82218999bf764bd41f6daeae118d17e88 | |
parent | 948315f45ebc6c378354d26738b376e87a1cb343 (diff) | |
download | lightning-95e3fbc8bc674a3d9ab745ae9d0a8ff630016fdf.tar.gz |
-rw-r--r-- | ChangeLog | 9 | ||||
-rw-r--r-- | include/lightning.h | 2 | ||||
-rw-r--r-- | lib/lightning.c | 7 |
@@ -1,3 +1,12 @@ +2013年10月14日 Paulo Andrade <pcpa@gnu.org> + + * include/lightning.h, lib/lightning.c: Add the new + jit_pointer_p interface, that returns a boolean value + telling if the pointer argument is inside the jit + code buffer. This is useful to avoid the need to add + extra labels and calls to jit_address to figure bounds + of code buffer, and still keep internal data private. + 2013年10月13日 Paulo Andrade <pcpa@gnu.org> * include/lightning.h, include/lightning/jit_private.h, diff --git a/include/lightning.h b/include/lightning.h index 3466c4a..561c559 100644 --- a/include/lightning.h +++ b/include/lightning.h @@ -953,6 +953,8 @@ extern jit_node_t *_jit_new_node_pwd(jit_state_t*, jit_code_t, #define jit_callee_save_p(u) _jit_callee_save_p(_jit,u) extern jit_bool_t _jit_callee_save_p(jit_state_t*, jit_int32_t); +#define jit_pointer_p(u) _jit_pointer_p(_jit,u) +extern jit_bool_t _jit_pointer_p(jit_state_t*,jit_pointer_t); #define jit_get_note(n,u,v,w) _jit_get_note(_jit,n,u,v,w) extern jit_bool_t _jit_get_note(jit_state_t*,jit_pointer_t,char**,char**,int*); diff --git a/lib/lightning.c b/lib/lightning.c index 58e7130..817976c 100644 --- a/lib/lightning.c +++ b/lib/lightning.c @@ -337,6 +337,13 @@ _jit_callee_save_p(jit_state_t *_jit, jit_int32_t regno) return (!!(_rvs[regno].spec & jit_class_sav)); } +extern jit_bool_t +_jit_pointer_p(jit_state_t *_jit, jit_pointer_t address) +{ + return ((jit_uint8_t *)address >= _jit->code.ptr && + (jit_word_t)address < _jit->pc.w); +} + #if __ia64__ void jit_regset_com(jit_regset_t *u, jit_regset_t *v) |