1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-06-21 19:20:21 +02:00

Make jit_get_note a public interface.

* include/lightning.h, include/lightning/jit_private.h,
	lib/jit_note.c: Change the code argument of jit_get_note
	to a jit_pointer_t and make jit_get_note a public interface.
	It was intended so since start, as a way to map an offset
	in the code to a function name, file name and line number
	mapping.
This commit is contained in:
pcpa 2013-09-13 18:57:32 -03:00
parent 5a2df005c5
commit 948315f45e
4 changed files with 17 additions and 6 deletions

View file

@ -1,3 +1,12 @@
2013-10-13 Paulo Andrade <pcpa@gnu.org>
* include/lightning.h, include/lightning/jit_private.h,
lib/jit_note.c: Change the code argument of jit_get_note
to a jit_pointer_t and make jit_get_note a public interface.
It was intended so since start, as a way to map an offset
in the code to a function name, file name and line number
mapping.
2013-10-10 Paulo Andrade <pcpa@gnu.org> 2013-10-10 Paulo Andrade <pcpa@gnu.org>
* doc/body.texi: Correct reversed arguments in example of * doc/body.texi: Correct reversed arguments in example of

View file

@ -954,6 +954,9 @@ 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) #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); extern jit_bool_t _jit_callee_save_p(jit_state_t*, jit_int32_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*);
#define jit_disassemble() _jit_disassemble(_jit) #define jit_disassemble() _jit_disassemble(_jit)
extern void _jit_disassemble(jit_state_t*); extern void _jit_disassemble(jit_state_t*);

View file

@ -550,8 +550,6 @@ extern void jit_init_note(void);
extern void jit_finish_note(void); extern void jit_finish_note(void);
#define jit_set_note(n,u,v,w) _jit_set_note(_jit, n, u, v, w) #define jit_set_note(n,u,v,w) _jit_set_note(_jit, n, u, v, w)
extern void _jit_set_note(jit_state_t*, jit_note_t*, char*, int, jit_int32_t); extern void _jit_set_note(jit_state_t*, jit_note_t*, char*, int, jit_int32_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_uint8_t*,char**,char**,int*);
#define jit_annotate() _jit_annotate(_jit) #define jit_annotate() _jit_annotate(_jit)
extern void _jit_annotate(jit_state_t*); extern void _jit_annotate(jit_state_t*);

View file

@ -213,7 +213,7 @@ _jit_set_note(jit_state_t *_jit, jit_note_t *note,
} }
jit_bool_t jit_bool_t
_jit_get_note(jit_state_t *_jit, jit_uint8_t *code, _jit_get_note(jit_state_t *_jit, jit_pointer_t code,
char **name, char **file, jit_int32_t *lineno) char **name, char **file, jit_int32_t *lineno)
{ {
jit_note_t *note; jit_note_t *note;
@ -221,12 +221,13 @@ _jit_get_note(jit_state_t *_jit, jit_uint8_t *code,
jit_int32_t index; jit_int32_t index;
jit_int32_t offset; jit_int32_t offset;
if ((index = note_search_index(code)) >= _jit->note.length) if ((index = note_search_index((jit_uint8_t *)code)) >= _jit->note.length)
return (0); return (0);
note = _jit->note.ptr + index; note = _jit->note.ptr + index;
if (code < note->code || code >= note->code + note->size) if ((jit_uint8_t *)code < note->code ||
(jit_uint8_t *)code >= note->code + note->size)
return (0); return (0);
offset = code - note->code; offset = (jit_uint8_t *)code - note->code;
if ((index = line_search_index(note, offset)) >= note->length) if ((index = line_search_index(note, offset)) >= note->length)
return (0); return (0);
if (index == 0 && offset < note->lines[0].offsets[0]) if (index == 0 && offset < note->lines[0].offsets[0])