Created
March 3, 2015 20:13
-
-
Save niner/da27e8b68152c04b7936 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
make_str_result (tc=0x6036b0, type=type@entry=0x1d8b848, ret_type=ret_type@entry=18, cstring=0x7ffff3dfd61c "can") at src/core/nativecall.c:153 | |
153 result = MVM_repr_box_str(tc, type, value); | |
(gdb) p value | |
$1 = (MVMString *) 0x7ffff6780f30 | |
(gdb) p ((MVMString *) 0x7ffff6780f30)->body | |
$2 = {storage = {blob_32 = 0x7bd3000, blob_ascii = 0x7bd3000 "c", blob_8 = 0x7bd3000 "c", strands = 0x7bd3000, any = 0x7bd3000}, storage_type = 0, num_strands = 0, num_graphs = 3, cached_hash_code = 0} | |
(gdb) watch *0x7bd3000 | |
Hardware watchpoint 2: *0x7bd3000 | |
(gdb) s | |
MVM_repr_box_str (tc=tc@entry=0x6036b0, type=0x1d8b848, val=val@entry=0x7ffff6780f30) at src/6model/reprconv.c:300 | |
300 MVMObject * MVM_repr_box_str(MVMThreadContext *tc, MVMObject *type, MVMString *val) { | |
302 MVMROOT(tc, val, { | |
300 MVMObject * MVM_repr_box_str(MVMThreadContext *tc, MVMObject *type, MVMString *val) { | |
302 MVMROOT(tc, val, { | |
MVM_gc_root_temp_push (tc=tc@entry=0x6036b0, obj_ref=obj_ref@entry=0x7fffffffc748) at src/gc/roots.c:124 | |
124 void MVM_gc_root_temp_push(MVMThreadContext *tc, MVMCollectable **obj_ref) { | |
126 if (obj_ref == NULL) | |
124 void MVM_gc_root_temp_push(MVMThreadContext *tc, MVMCollectable **obj_ref) { | |
126 if (obj_ref == NULL) | |
130 if (tc->num_temproots == tc->alloc_temproots) { | |
137 tc->temproots[tc->num_temproots] = obj_ref; | |
138 tc->num_temproots++; | |
137 tc->temproots[tc->num_temproots] = obj_ref; | |
138 tc->num_temproots++; | |
139 } | |
MVM_repr_alloc_init (tc=tc@entry=0x6036b0, type=type@entry=0x1d8b848) at src/6model/reprconv.c:12 | |
12 MVMObject * MVM_repr_alloc_init(MVMThreadContext *tc, MVMObject *type) { | |
13 MVMObject *obj = REPR(type)->allocate(tc, STABLE(type)); | |
allocate (tc=0x6036b0, st=0x1d811d0) at src/6model/reprs/P6opaque.c:92 | |
92 if (st->size) | |
93 return MVM_gc_allocate_object(tc, st); | |
MVM_gc_allocate_object (tc=0x6036b0, st=0x1d811d0) at src/gc/allocation.c:83 | |
83 MVMObject * MVM_gc_allocate_object(MVMThreadContext *tc, MVMSTable *st) { | |
85 MVMROOT(tc, st, { | |
MVM_gc_root_temp_push (tc=tc@entry=0x6036b0, obj_ref=obj_ref@entry=0x7fffffffc6f8) at src/gc/roots.c:124 | |
124 void MVM_gc_root_temp_push(MVMThreadContext *tc, MVMCollectable **obj_ref) { | |
126 if (obj_ref == NULL) | |
124 void MVM_gc_root_temp_push(MVMThreadContext *tc, MVMCollectable **obj_ref) { | |
126 if (obj_ref == NULL) | |
130 if (tc->num_temproots == tc->alloc_temproots) { | |
137 tc->temproots[tc->num_temproots] = obj_ref; | |
138 tc->num_temproots++; | |
137 tc->temproots[tc->num_temproots] = obj_ref; | |
138 tc->num_temproots++; | |
139 } | |
MVM_gc_allocate_zeroed (tc=0x6036b0, size=40) at src/gc/allocation.c:49 | |
49 return MVM_gc_allocate(tc, size); | |
MVM_gc_allocate_nursery (tc=0x6036b0, size=40) at src/gc/allocation.c:10 | |
10 void * MVM_gc_allocate_nursery(MVMThreadContext *tc, size_t size) { | |
17 if (tc->gc_status) | |
21 if (size > 0) { | |
29 while ((char *)tc->nursery_alloc + size >= (char *)tc->nursery_alloc_limit) { | |
37 tc->nursery_alloc = (char *)tc->nursery_alloc + size; | |
44 } | |
MVM_gc_write_barrier (referenced=<optimized out>, update_root=<optimized out>, tc=<optimized out>) at src/gc/wb.h:8 | |
8 if (((update_root->flags & MVM_CF_SECOND_GEN) && referenced && !(referenced->flags & MVM_CF_SECOND_GEN))) | |
MVM_gc_allocate_object (tc=0x6036b0, st=0x1d811d0) at src/gc/allocation.c:85 | |
85 MVMROOT(tc, st, { | |
MVM_gc_write_barrier (referenced=0x1d811d0, update_root=0x7ffff6780f60, tc=0x6036b0) at src/gc/wb.h:8 | |
8 if (((update_root->flags & MVM_CF_SECOND_GEN) && referenced && !(referenced->flags & MVM_CF_SECOND_GEN))) | |
MVM_gc_root_temp_pop (tc=tc@entry=0x6036b0) at src/gc/roots.c:143 | |
143 if (tc->num_temproots > 0) | |
144 tc->num_temproots--; | |
MVM_gc_allocate_object (tc=0x6036b0, st=0x1d811d0) at src/gc/allocation.c:97 | |
97 } | |
MVM_repr_alloc_init (tc=tc@entry=0x6036b0, type=type@entry=0x1d8b848) at src/6model/reprconv.c:15 | |
15 if (REPR(obj)->initialize) { | |
13 MVMObject *obj = REPR(type)->allocate(tc, STABLE(type)); | |
15 if (REPR(obj)->initialize) { | |
16 MVMROOT(tc, obj, { | |
MVM_gc_root_temp_push (tc=tc@entry=0x6036b0, obj_ref=obj_ref@entry=0x7fffffffc728) at src/gc/roots.c:124 | |
124 void MVM_gc_root_temp_push(MVMThreadContext *tc, MVMCollectable **obj_ref) { | |
126 if (obj_ref == NULL) | |
124 void MVM_gc_root_temp_push(MVMThreadContext *tc, MVMCollectable **obj_ref) { | |
126 if (obj_ref == NULL) | |
130 if (tc->num_temproots == tc->alloc_temproots) { | |
137 tc->temproots[tc->num_temproots] = obj_ref; | |
138 tc->num_temproots++; | |
137 tc->temproots[tc->num_temproots] = obj_ref; | |
138 tc->num_temproots++; | |
139 } | |
initialize (tc=0x6036b0, st=0x1d811d0, root=0x7ffff6780f60, data=0x7ffff6780f78) at src/6model/reprs/P6opaque.c:99 | |
99 static void initialize(MVMThreadContext *tc, MVMSTable *st, MVMObject *root, void *data) { | |
100 MVMP6opaqueREPRData * repr_data = (MVMP6opaqueREPRData *)st->REPR_data; | |
101 data = MVM_p6opaque_real_data(tc, data); | |
MVM_p6opaque_real_data (tc=tc@entry=0x6036b0, data=0x7ffff6780f78) at src/6model/reprs/P6opaque.c:16 | |
16 return body->replaced ? body->replaced : data; | |
17 } | |
initialize (tc=0x6036b0, st=<optimized out>, root=0x7ffff6780f60, data=0x7ffff6780f30) at src/6model/reprs/P6opaque.c:102 | |
102 if (repr_data) { | |
104 for (i = 0; repr_data->initialize_slots[i] >= 0; i++) { | |
113 } | |
MVM_gc_root_temp_pop (tc=tc@entry=0x6036b0) at src/gc/roots.c:143 | |
143 if (tc->num_temproots > 0) | |
144 tc->num_temproots--; | |
MVM_repr_alloc_init (tc=tc@entry=0x6036b0, type=type@entry=0x1d8b848) at src/6model/reprconv.c:22 | |
22 } | |
MVM_repr_set_str (tc=0x6036b0, obj=0x7ffff6780f60, val=0x7ffff6780f30) at src/6model/reprconv.c:280 | |
280 void MVM_repr_set_str(MVMThreadContext *tc, MVMObject *obj, MVMString *val) { | |
281 REPR(obj)->box_funcs.set_str(tc, STABLE(obj), obj, OBJECT_BODY(obj), val); | |
280 void MVM_repr_set_str(MVMThreadContext *tc, MVMObject *obj, MVMString *val) { | |
281 REPR(obj)->box_funcs.set_str(tc, STABLE(obj), obj, OBJECT_BODY(obj), val); | |
set_str (tc=0x6036b0, st=0x1d811d0, root=0x7ffff6780f60, data=0x7ffff6780f78, value=0x7ffff6780f30) at src/6model/reprs/P6opaque.c:514 | |
514 static void set_str(MVMThreadContext *tc, MVMSTable *st, MVMObject *root, void *data, MVMString *value) { | |
515 MVMP6opaqueREPRData *repr_data = (MVMP6opaqueREPRData *)st->REPR_data; | |
516 data = MVM_p6opaque_real_data(tc, data); | |
MVM_p6opaque_real_data (tc=tc@entry=0x6036b0, data=0x7ffff6780f78) at src/6model/reprs/P6opaque.c:16 | |
16 return body->replaced ? body->replaced : data; | |
17 } | |
set_str (tc=0x6036b0, st=<optimized out>, root=0x7ffff6780f60, data=0x7ffff6780f78, value=0x7ffff6780f30) at src/6model/reprs/P6opaque.c:517 | |
517 if (repr_data->unbox_str_slot >= 0) { | |
518 MVMSTable *st = repr_data->flattened_stables[repr_data->unbox_str_slot]; | |
519 st->REPR->box_funcs.set_str(tc, st, root, (char *)data + repr_data->attribute_offsets[repr_data->unbox_str_slot], value); | |
518 MVMSTable *st = repr_data->flattened_stables[repr_data->unbox_str_slot]; | |
519 st->REPR->box_funcs.set_str(tc, st, root, (char *)data + repr_data->attribute_offsets[repr_data->unbox_str_slot], value); | |
525 } | |
519 st->REPR->box_funcs.set_str(tc, st, root, (char *)data + repr_data->attribute_offsets[repr_data->unbox_str_slot], value); | |
525 } | |
519 st->REPR->box_funcs.set_str(tc, st, root, (char *)data + repr_data->attribute_offsets[repr_data->unbox_str_slot], value); | |
set_str (tc=0x6036b0, st=0x6075c0, root=0x7ffff6780f60, data=0x7ffff6780f80, value=0x7ffff6780f30) at src/6model/reprs/P6str.c:28 | |
28 MVM_ASSIGN_REF(tc, &(root->header), ((MVMP6strBody *)data)->value, value); | |
MVM_gc_write_barrier (referenced=0x7ffff6780f30, update_root=0x7ffff6780f60, tc=0x6036b0) at src/gc/wb.h:8 | |
8 if (((update_root->flags & MVM_CF_SECOND_GEN) && referenced && !(referenced->flags & MVM_CF_SECOND_GEN))) | |
set_str (tc=0x6036b0, st=0x6075c0, root=0x7ffff6780f60, data=0x7ffff6780f80, value=0x7ffff6780f30) at src/6model/reprs/P6str.c:28 | |
28 MVM_ASSIGN_REF(tc, &(root->header), ((MVMP6strBody *)data)->value, value); | |
MVM_gc_root_temp_pop (tc=tc@entry=0x6036b0) at src/gc/roots.c:143 | |
143 if (tc->num_temproots > 0) | |
144 tc->num_temproots--; | |
MVM_repr_box_str (tc=tc@entry=0x6036b0, type=<optimized out>, val=val@entry=0x7ffff6780f30) at src/6model/reprconv.c:307 | |
307 } | |
make_str_result (tc=0x6036b0, type=type@entry=0x1d8b848, ret_type=ret_type@entry=18, cstring=0x7ffff3dfd61c "can") at src/core/nativecall.c:154 | |
154 if (ret_type & MVM_NATIVECALL_ARG_FREE_STR) | |
159 } | |
callback_handler (cb=<optimized out>, cb_args=<optimized out>, cb_result=<optimized out>, data=0x5960c30) at src/core/nativecall.c:468 | |
468 break; | |
438 for (i = 1; i < data->num_types; i++) { | |
439 MVMObject *type = data->types[i]; | |
440 MVMint16 typeinfo = data->typeinfos[i]; | |
441 switch (typeinfo & MVM_NATIVECALL_ARG_TYPE_MASK) { | |
474 args[i - 1].o = MVM_nativecall_make_cpointer(data->tc, type, | |
MVM_nativecall_make_cpointer (tc=0x6036b0, type=0x7ffff3dd3a70, ptr=0x5960c30) at src/core/nativecall.c:180 | |
180 if (ptr && type) { | |
178 MVMObject * MVM_nativecall_make_cpointer(MVMThreadContext *tc, MVMObject *type, void *ptr) { | |
180 if (ptr && type) { | |
178 MVMObject * MVM_nativecall_make_cpointer(MVMThreadContext *tc, MVMObject *type, void *ptr) { | |
180 if (ptr && type) { | |
181 if (REPR(type)->ID != MVM_REPR_ID_MVMCPointer) | |
184 result = REPR(type)->allocate(tc, STABLE(type)); | |
MVM_gc_allocate_object (tc=0x6036b0, st=0x2cfa848) at src/gc/allocation.c:83 | |
83 MVMObject * MVM_gc_allocate_object(MVMThreadContext *tc, MVMSTable *st) { | |
85 MVMROOT(tc, st, { | |
MVM_gc_root_temp_push (tc=tc@entry=0x6036b0, obj_ref=obj_ref@entry=0x7fffffffc778) at src/gc/roots.c:124 | |
124 void MVM_gc_root_temp_push(MVMThreadContext *tc, MVMCollectable **obj_ref) { | |
126 if (obj_ref == NULL) | |
124 void MVM_gc_root_temp_push(MVMThreadContext *tc, MVMCollectable **obj_ref) { | |
126 if (obj_ref == NULL) | |
130 if (tc->num_temproots == tc->alloc_temproots) { | |
137 tc->temproots[tc->num_temproots] = obj_ref; | |
138 tc->num_temproots++; | |
137 tc->temproots[tc->num_temproots] = obj_ref; | |
138 tc->num_temproots++; | |
139 } | |
MVM_gc_allocate_zeroed (tc=0x6036b0, size=32) at src/gc/allocation.c:49 | |
49 return MVM_gc_allocate(tc, size); | |
MVM_gc_allocate_nursery (tc=0x6036b0, size=32) at src/gc/allocation.c:10 | |
10 void * MVM_gc_allocate_nursery(MVMThreadContext *tc, size_t size) { | |
17 if (tc->gc_status) | |
21 if (size > 0) { | |
29 while ((char *)tc->nursery_alloc + size >= (char *)tc->nursery_alloc_limit) { | |
37 tc->nursery_alloc = (char *)tc->nursery_alloc + size; | |
44 } | |
MVM_gc_write_barrier (referenced=<optimized out>, update_root=<optimized out>, tc=<optimized out>) at src/gc/wb.h:8 | |
8 if (((update_root->flags & MVM_CF_SECOND_GEN) && referenced && !(referenced->flags & MVM_CF_SECOND_GEN))) | |
MVM_gc_allocate_object (tc=0x6036b0, st=0x2cfa848) at src/gc/allocation.c:85 | |
85 MVMROOT(tc, st, { | |
MVM_gc_write_barrier (referenced=0x2cfa848, update_root=0x7ffff6780f88, tc=0x6036b0) at src/gc/wb.h:8 | |
8 if (((update_root->flags & MVM_CF_SECOND_GEN) && referenced && !(referenced->flags & MVM_CF_SECOND_GEN))) | |
MVM_gc_root_temp_pop (tc=tc@entry=0x6036b0) at src/gc/roots.c:143 | |
143 if (tc->num_temproots > 0) | |
144 tc->num_temproots--; | |
MVM_gc_allocate_object (tc=0x6036b0, st=0x2cfa848) at src/gc/allocation.c:97 | |
97 } | |
MVM_nativecall_make_cpointer (tc=0x6036b0, type=0x7ffff6780f88, ptr=0x7ffff3dd3a70) at src/core/nativecall.c:185 | |
185 ((MVMCPointer *)result)->body.ptr = ptr; | |
188 } | |
callback_handler (cb=<optimized out>, cb_args=<optimized out>, cb_result=<optimized out>, data=0x5960c30) at src/core/nativecall.c:438 | |
438 for (i = 1; i < data->num_types; i++) { | |
439 MVMObject *type = data->types[i]; | |
440 MVMint16 typeinfo = data->typeinfos[i]; | |
441 switch (typeinfo & MVM_NATIVECALL_ARG_TYPE_MASK) { | |
474 args[i - 1].o = MVM_nativecall_make_cpointer(data->tc, type, | |
MVM_nativecall_make_cpointer (tc=0x6036b0, type=0x7fffffffc9f8, ptr=0x5960c30) at src/core/nativecall.c:180 | |
180 if (ptr && type) { | |
178 MVMObject * MVM_nativecall_make_cpointer(MVMThreadContext *tc, MVMObject *type, void *ptr) { | |
180 if (ptr && type) { | |
178 MVMObject * MVM_nativecall_make_cpointer(MVMThreadContext *tc, MVMObject *type, void *ptr) { | |
180 if (ptr && type) { | |
181 if (REPR(type)->ID != MVM_REPR_ID_MVMCPointer) | |
184 result = REPR(type)->allocate(tc, STABLE(type)); | |
MVM_gc_allocate_object (tc=0x6036b0, st=0x2cfa848) at src/gc/allocation.c:83 | |
83 MVMObject * MVM_gc_allocate_object(MVMThreadContext *tc, MVMSTable *st) { | |
85 MVMROOT(tc, st, { | |
MVM_gc_root_temp_push (tc=tc@entry=0x6036b0, obj_ref=obj_ref@entry=0x7fffffffc778) at src/gc/roots.c:124 | |
124 void MVM_gc_root_temp_push(MVMThreadContext *tc, MVMCollectable **obj_ref) { | |
126 if (obj_ref == NULL) | |
124 void MVM_gc_root_temp_push(MVMThreadContext *tc, MVMCollectable **obj_ref) { | |
126 if (obj_ref == NULL) | |
130 if (tc->num_temproots == tc->alloc_temproots) { | |
137 tc->temproots[tc->num_temproots] = obj_ref; | |
138 tc->num_temproots++; | |
137 tc->temproots[tc->num_temproots] = obj_ref; | |
138 tc->num_temproots++; | |
139 } | |
MVM_gc_allocate_zeroed (tc=0x6036b0, size=32) at src/gc/allocation.c:49 | |
49 return MVM_gc_allocate(tc, size); | |
MVM_gc_allocate_nursery (tc=0x6036b0, size=32) at src/gc/allocation.c:10 | |
10 void * MVM_gc_allocate_nursery(MVMThreadContext *tc, size_t size) { | |
17 if (tc->gc_status) | |
21 if (size > 0) { | |
29 while ((char *)tc->nursery_alloc + size >= (char *)tc->nursery_alloc_limit) { | |
37 tc->nursery_alloc = (char *)tc->nursery_alloc + size; | |
44 } | |
MVM_gc_write_barrier (referenced=<optimized out>, update_root=<optimized out>, tc=<optimized out>) at src/gc/wb.h:8 | |
8 if (((update_root->flags & MVM_CF_SECOND_GEN) && referenced && !(referenced->flags & MVM_CF_SECOND_GEN))) | |
MVM_gc_allocate_object (tc=0x6036b0, st=0x2cfa848) at src/gc/allocation.c:85 | |
85 MVMROOT(tc, st, { | |
MVM_gc_write_barrier (referenced=0x2cfa848, update_root=0x7ffff6780fa8, tc=0x6036b0) at src/gc/wb.h:8 | |
8 if (((update_root->flags & MVM_CF_SECOND_GEN) && referenced && !(referenced->flags & MVM_CF_SECOND_GEN))) | |
MVM_gc_root_temp_pop (tc=tc@entry=0x6036b0) at src/gc/roots.c:143 | |
143 if (tc->num_temproots > 0) | |
144 tc->num_temproots--; | |
MVM_gc_allocate_object (tc=0x6036b0, st=0x2cfa848) at src/gc/allocation.c:97 | |
97 } | |
MVM_nativecall_make_cpointer (tc=0x6036b0, type=0x7ffff6780fa8, ptr=0x7fffffffc9f8) at src/core/nativecall.c:185 | |
185 ((MVMCPointer *)result)->body.ptr = ptr; | |
188 } | |
callback_handler (cb=<optimized out>, cb_args=<optimized out>, cb_result=<optimized out>, data=0x5960c30) at src/core/nativecall.c:438 | |
438 for (i = 1; i < data->num_types; i++) { | |
495 cid.invokee = data->target; | |
499 MVMThreadContext *tc = data->tc; | |
508 memcpy(backup_interp_jump, tc->interp_jump, sizeof(jmp_buf)); | |
510 tc->cur_frame->return_value = &res; | |
495 cid.invokee = data->target; | |
496 cid.args = args; | |
508 memcpy(backup_interp_jump, tc->interp_jump, sizeof(jmp_buf)); | |
500 MVMuint8 **backup_interp_cur_op = tc->interp_cur_op; | |
501 MVMuint8 **backup_interp_bytecode_start = tc->interp_bytecode_start; | |
506 MVMuint32 backup_mark = MVM_gc_root_temp_mark(tc); | |
502 MVMRegister **backup_interp_reg_base = tc->interp_reg_base; | |
503 MVMCompUnit **backup_interp_cu = tc->interp_cu; | |
496 cid.args = args; | |
497 cid.cs = data->cs; | |
505 MVMFrame *backup_thread_entry_frame = tc->thread_entry_frame; | |
500 MVMuint8 **backup_interp_cur_op = tc->interp_cur_op; | |
501 MVMuint8 **backup_interp_bytecode_start = tc->interp_bytecode_start; | |
502 MVMRegister **backup_interp_reg_base = tc->interp_reg_base; | |
497 cid.cs = data->cs; | |
504 MVMFrame *backup_cur_frame = tc->cur_frame; | |
503 MVMCompUnit **backup_interp_cu = tc->interp_cu; | |
505 MVMFrame *backup_thread_entry_frame = tc->thread_entry_frame; | |
504 MVMFrame *backup_cur_frame = tc->cur_frame; | |
506 MVMuint32 backup_mark = MVM_gc_root_temp_mark(tc); | |
MVM_gc_root_temp_mark (tc=tc@entry=0x6036b0) at src/gc/roots.c:163 | |
163 tc->mark_temproots = tc->num_temproots; | |
162 MVMint32 current = tc->mark_temproots; | |
163 tc->mark_temproots = tc->num_temproots; | |
165 } | |
callback_handler (cb=<optimized out>, cb_args=<optimized out>, cb_result=<optimized out>, data=0x5960c30) at src/core/nativecall.c:508 | |
508 memcpy(backup_interp_jump, tc->interp_jump, sizeof(jmp_buf)); | |
512 MVM_interp_run(tc, &callback_invoke, &cid); | |
506 MVMuint32 backup_mark = MVM_gc_root_temp_mark(tc); | |
510 tc->cur_frame->return_value = &res; | |
511 tc->cur_frame->return_type = MVM_RETURN_OBJ; | |
512 MVM_interp_run(tc, &callback_invoke, &cid); | |
MVM_interp_run (tc=tc@entry=0x6036b0, initial_invoke=0x0, invoke_data=invoke_data@entry=0x7fffffffc800) at src/core/interp.c:29 | |
29 void MVM_interp_run(MVMThreadContext *tc, void (*initial_invoke)(MVMThreadContext *, void *), void *invoke_data) { | |
61 initial_invoke(tc, invoke_data); | |
29 void MVM_interp_run(MVMThreadContext *tc, void (*initial_invoke)(MVMThreadContext *, void *), void *invoke_data) { | |
53 tc->interp_cur_op = &cur_op; | |
29 void MVM_interp_run(MVMThreadContext *tc, void (*initial_invoke)(MVMThreadContext *, void *), void *invoke_data) { | |
35 MVMuint8 *cur_op = NULL; | |
38 MVMuint8 *bytecode_start = NULL; | |
42 MVMRegister *reg_base = NULL; | |
53 tc->interp_cur_op = &cur_op; | |
54 tc->interp_bytecode_start = &bytecode_start; | |
45 MVMCompUnit *cu = NULL; | |
48 MVMCallsite *cur_callsite = NULL; | |
54 tc->interp_bytecode_start = &bytecode_start; | |
55 tc->interp_reg_base = ®_base; | |
56 tc->interp_cu = &cu; | |
61 initial_invoke(tc, invoke_data); | |
callback_invoke (tc=0x6036b0, data=0x7fffffffc800) at src/core/nativecall.c:423 | |
423 static void callback_invoke(MVMThreadContext *tc, void *data) { | |
426 STABLE(cid->invokee)->invoke(tc, cid->invokee, cid->cs, cid->args); | |
423 static void callback_invoke(MVMThreadContext *tc, void *data) { | |
426 STABLE(cid->invokee)->invoke(tc, cid->invokee, cid->cs, cid->args); | |
invoke_handler (tc=0x6036b0, invokee=0x809e1a0, callsite=0x4bb0980, args=0x5e1c9f0) at src/6model/reprs/MVMCode.c:7 | |
7 static void invoke_handler(MVMThreadContext *tc, MVMObject *invokee, MVMCallsite *callsite, MVMRegister *args) { | |
8 if (IS_CONCRETE(invokee)) { | |
7 static void invoke_handler(MVMThreadContext *tc, MVMObject *invokee, MVMCallsite *callsite, MVMRegister *args) { | |
8 if (IS_CONCRETE(invokee)) { | |
10 MVM_frame_invoke(tc, code->body.sf, callsite, args, code->body.outer, invokee, -1); | |
MVM_frame_invoke (tc=0x6036b0, static_frame=0x68733c0, callsite=0x4bb0980, args=0x5e1c9f0, outer=0x7554700, code_ref=0x809e1a0, spesh_cand=spesh_cand@entry=-1) at src/core/frame.c:335 | |
335 MVMFrame *outer, MVMObject *code_ref, MVMint32 spesh_cand) { | |
339 MVMStaticFrameBody *static_frame_body = &static_frame->body; | |
335 MVMFrame *outer, MVMObject *code_ref, MVMint32 spesh_cand) { | |
339 MVMStaticFrameBody *static_frame_body = &static_frame->body; | |
344 if (static_frame_body->instrumentation_level != tc->instance->instrumentation_level) | |
335 MVMFrame *outer, MVMObject *code_ref, MVMint32 spesh_cand) { | |
344 if (static_frame_body->instrumentation_level != tc->instance->instrumentation_level) | |
349 if (spesh_cand >= 0 && spesh_cand < static_frame_body->num_spesh_candidates) { | |
361 if (!found_spesh && ++static_frame_body->invocations >= static_frame_body->spesh_threshold && callsite->is_interned) { | |
363 MVMint32 num_spesh = static_frame_body->num_spesh_candidates; | |
366 for (i = 0; i < num_spesh; i++) { | |
363 MVMint32 num_spesh = static_frame_body->num_spesh_candidates; | |
366 for (i = 0; i < num_spesh; i++) { | |
389 STABLE(arg)->container_spec->fetch(tc, arg, &dc); | |
367 MVMSpeshCandidate *cand = &static_frame_body->spesh_candidates[i]; | |
368 if (cand->cs == callsite) { | |
370 for (j = 0; j < cand->num_guards; j++) { | |
371 MVMint32 pos = cand->guards[j].slot; | |
373 MVMObject *arg = args[pos].o; | |
372 MVMSTable *st = (MVMSTable *)cand->guards[j].match; | |
373 MVMObject *arg = args[pos].o; | |
374 if (!arg) { | |
378 switch (cand->guards[j].kind) { | |
380 if (!IS_CONCRETE(arg) || STABLE(arg) != st) | |
384 if (IS_CONCRETE(arg) || STABLE(arg) != st) | |
370 for (j = 0; j < cand->num_guards; j++) { | |
371 MVMint32 pos = cand->guards[j].slot; | |
373 MVMObject *arg = args[pos].o; | |
372 MVMSTable *st = (MVMSTable *)cand->guards[j].match; | |
373 MVMObject *arg = args[pos].o; | |
374 if (!arg) { | |
378 switch (cand->guards[j].kind) { | |
380 if (!IS_CONCRETE(arg) || STABLE(arg) != st) | |
384 if (IS_CONCRETE(arg) || STABLE(arg) != st) | |
370 for (j = 0; j < cand->num_guards; j++) { | |
371 MVMint32 pos = cand->guards[j].slot; | |
373 MVMObject *arg = args[pos].o; | |
372 MVMSTable *st = (MVMSTable *)cand->guards[j].match; | |
373 MVMObject *arg = args[pos].o; | |
374 if (!arg) { | |
378 switch (cand->guards[j].kind) { | |
380 if (!IS_CONCRETE(arg) || STABLE(arg) != st) | |
384 if (IS_CONCRETE(arg) || STABLE(arg) != st) | |
370 for (j = 0; j < cand->num_guards; j++) { | |
420 if (chosen_cand) { | |
421 if (chosen_cand->sg) { | |
441 frame = allocate_frame(tc, static_frame_body, chosen_cand); | |
allocate_frame (tc=tc@entry=0x6036b0, static_frame_body=static_frame_body@entry=0x68733d8, spesh_cand=spesh_cand@entry=0x82dce30) at src/core/frame.c:218 | |
218 MVMSpeshCandidate *spesh_cand) { | |
224 if (!spesh_cand || | |
218 MVMSpeshCandidate *spesh_cand) { | |
224 if (!spesh_cand || | |
225 (spesh_cand->num_locals == static_frame_body->num_locals && | |
224 if (!spesh_cand || | |
281 frame = MVM_fixed_size_alloc(tc, tc->instance->fsa, sizeof(MVMFrame)); | |
MVM_fixed_size_alloc (tc=tc@entry=0x6036b0, al=0x604530, bytes=bytes@entry=288) at src/core/fixedsizealloc.c:102 | |
102 void * MVM_fixed_size_alloc(MVMThreadContext *tc, MVMFixedSizeAlloc *al, size_t bytes) { | |
108 MVMuint32 bin = bin_for(bytes); | |
bin_for (bytes=bytes@entry=288) at src/core/fixedsizealloc.c:34 | |
34 MVMuint32 bin = (MVMuint32)(bytes >> MVM_FSA_BIN_BITS); | |
MVM_fixed_size_alloc (tc=tc@entry=0x6036b0, al=0x604530, bytes=bytes@entry=288) at src/core/fixedsizealloc.c:102 | |
102 void * MVM_fixed_size_alloc(MVMThreadContext *tc, MVMFixedSizeAlloc *al, size_t bytes) { | |
108 MVMuint32 bin = bin_for(bytes); | |
bin_for (bytes=bytes@entry=288) at src/core/fixedsizealloc.c:36 | |
36 bin--; | |
MVM_fixed_size_alloc (tc=tc@entry=0x6036b0, al=0x604530, bytes=bytes@entry=288) at src/core/fixedsizealloc.c:102 | |
102 void * MVM_fixed_size_alloc(MVMThreadContext *tc, MVMFixedSizeAlloc *al, size_t bytes) { | |
108 MVMuint32 bin = bin_for(bytes); | |
bin_for (bytes=bytes@entry=288) at src/core/fixedsizealloc.c:36 | |
36 bin--; | |
MVM_fixed_size_alloc (tc=tc@entry=0x6036b0, al=0x604530, bytes=bytes@entry=288) at src/core/fixedsizealloc.c:109 | |
109 if (bin < MVM_FSA_BINS) { | |
113 MVMFixedSizeAllocSizeClass *bin_ptr = &(al->size_classes[bin]); | |
115 if (tc->instance->next_user_thread_id != 2) { | |
113 MVMFixedSizeAllocSizeClass *bin_ptr = &(al->size_classes[bin]); | |
115 if (tc->instance->next_user_thread_id != 2) { | |
113 MVMFixedSizeAllocSizeClass *bin_ptr = &(al->size_classes[bin]); | |
115 if (tc->instance->next_user_thread_id != 2) { | |
125 fle = bin_ptr->free_list; | |
126 if (fle) | |
127 bin_ptr->free_list = fle->next; | |
133 return alloc_slow_path(tc, al, bin); | |
alloc_slow_path (tc=<optimized out>, bin=<optimized out>, al=<optimized out>) at src/core/fixedsizealloc.c:80 | |
80 MVMint32 lock = tc->instance->next_user_thread_id != 2; | |
MVM_fixed_size_alloc (tc=tc@entry=0x6036b0, al=<optimized out>, bytes=bytes@entry=288) at src/core/fixedsizealloc.c:139 | |
139 } | |
allocate_frame (tc=tc@entry=0x6036b0, static_frame_body=static_frame_body@entry=0x68733d8, spesh_cand=spesh_cand@entry=0x82dce30) at src/core/frame.c:282 | |
282 frame->params.named_used = NULL; | |
286 frame->special_return = NULL; | |
287 frame->special_unwind = NULL; | |
288 frame->continuation_tags = NULL; | |
289 frame->dynlex_cache_name = NULL; | |
290 frame->return_address = NULL; | |
291 frame->jit_entry_label = NULL; | |
295 env_size = spesh_cand ? spesh_cand->env_size : static_frame_body->env_size; | |
296 if (env_size) { | |
297 frame->env = MVM_fixed_size_alloc_zeroed(tc, tc->instance->fsa, env_size); | |
MVM_fixed_size_alloc_zeroed (tc=tc@entry=0x6036b0, al=0x604530, bytes=bytes@entry=136) at src/core/fixedsizealloc.c:143 | |
143 void * MVM_fixed_size_alloc_zeroed(MVMThreadContext *tc, MVMFixedSizeAlloc *al, size_t bytes) { | |
144 void *allocd = MVM_fixed_size_alloc(tc, al, bytes); | |
MVM_fixed_size_alloc (tc=tc@entry=0x6036b0, al=0x604530, bytes=bytes@entry=136) at src/core/fixedsizealloc.c:102 | |
102 void * MVM_fixed_size_alloc(MVMThreadContext *tc, MVMFixedSizeAlloc *al, size_t bytes) { | |
108 MVMuint32 bin = bin_for(bytes); | |
bin_for (bytes=bytes@entry=136) at src/core/fixedsizealloc.c:34 | |
34 MVMuint32 bin = (MVMuint32)(bytes >> MVM_FSA_BIN_BITS); | |
MVM_fixed_size_alloc (tc=tc@entry=0x6036b0, al=0x604530, bytes=bytes@entry=136) at src/core/fixedsizealloc.c:102 | |
102 void * MVM_fixed_size_alloc(MVMThreadContext *tc, MVMFixedSizeAlloc *al, size_t bytes) { | |
108 MVMuint32 bin = bin_for(bytes); | |
bin_for (bytes=bytes@entry=136) at src/core/fixedsizealloc.c:36 | |
36 bin--; | |
MVM_fixed_size_alloc (tc=tc@entry=0x6036b0, al=0x604530, bytes=bytes@entry=136) at src/core/fixedsizealloc.c:102 | |
102 void * MVM_fixed_size_alloc(MVMThreadContext *tc, MVMFixedSizeAlloc *al, size_t bytes) { | |
108 MVMuint32 bin = bin_for(bytes); | |
bin_for (bytes=bytes@entry=136) at src/core/fixedsizealloc.c:36 | |
36 bin--; | |
MVM_fixed_size_alloc (tc=tc@entry=0x6036b0, al=0x604530, bytes=bytes@entry=136) at src/core/fixedsizealloc.c:109 | |
109 if (bin < MVM_FSA_BINS) { | |
113 MVMFixedSizeAllocSizeClass *bin_ptr = &(al->size_classes[bin]); | |
115 if (tc->instance->next_user_thread_id != 2) { | |
113 MVMFixedSizeAllocSizeClass *bin_ptr = &(al->size_classes[bin]); | |
115 if (tc->instance->next_user_thread_id != 2) { | |
113 MVMFixedSizeAllocSizeClass *bin_ptr = &(al->size_classes[bin]); | |
115 if (tc->instance->next_user_thread_id != 2) { | |
125 fle = bin_ptr->free_list; | |
126 if (fle) | |
127 bin_ptr->free_list = fle->next; | |
133 return alloc_slow_path(tc, al, bin); | |
alloc_slow_path (tc=<optimized out>, bin=<optimized out>, al=<optimized out>) at src/core/fixedsizealloc.c:80 | |
80 MVMint32 lock = tc->instance->next_user_thread_id != 2; | |
MVM_fixed_size_alloc (tc=tc@entry=0x6036b0, al=<optimized out>, bytes=bytes@entry=136) at src/core/fixedsizealloc.c:139 | |
139 } | |
MVM_fixed_size_alloc_zeroed (tc=tc@entry=0x6036b0, al=<optimized out>, bytes=bytes@entry=136) at src/core/fixedsizealloc.c:145 | |
145 memset(allocd, 0, bytes); | |
144 void *allocd = MVM_fixed_size_alloc(tc, al, bytes); | |
145 memset(allocd, 0, bytes); | |
__memset_sse2 () at ../sysdeps/x86_64/memset.S:53 | |
53 ../sysdeps/x86_64/memset.S: No such file or directory. | |
54 in ../sysdeps/x86_64/memset.S | |
55 in ../sysdeps/x86_64/memset.S | |
56 in ../sysdeps/x86_64/memset.S | |
57 in ../sysdeps/x86_64/memset.S | |
59 in ../sysdeps/x86_64/memset.S | |
60 in ../sysdeps/x86_64/memset.S | |
77 in ../sysdeps/x86_64/memset.S | |
78 in ../sysdeps/x86_64/memset.S | |
79 in ../sysdeps/x86_64/memset.S | |
80 in ../sysdeps/x86_64/memset.S | |
81 in ../sysdeps/x86_64/memset.S | |
82 in ../sysdeps/x86_64/memset.S | |
83 in ../sysdeps/x86_64/memset.S | |
84 in ../sysdeps/x86_64/memset.S | |
85 in ../sysdeps/x86_64/memset.S | |
86 in ../sysdeps/x86_64/memset.S | |
87 in ../sysdeps/x86_64/memset.S | |
88 in ../sysdeps/x86_64/memset.S | |
89 in ../sysdeps/x86_64/memset.S | |
90 in ../sysdeps/x86_64/memset.S | |
91 in ../sysdeps/x86_64/memset.S | |
92 in ../sysdeps/x86_64/memset.S | |
93 in ../sysdeps/x86_64/memset.S | |
96 in ../sysdeps/x86_64/memset.S | |
97 in ../sysdeps/x86_64/memset.S | |
98 in ../sysdeps/x86_64/memset.S | |
99 in ../sysdeps/x86_64/memset.S | |
100 in ../sysdeps/x86_64/memset.S | |
101 in ../sysdeps/x86_64/memset.S | |
102 in ../sysdeps/x86_64/memset.S | |
103 in ../sysdeps/x86_64/memset.S | |
MVM_fixed_size_alloc_zeroed (tc=tc@entry=0x6036b0, al=<optimized out>, bytes=bytes@entry=136) at src/core/fixedsizealloc.c:147 | |
147 } | |
allocate_frame (tc=tc@entry=0x6036b0, static_frame_body=static_frame_body@entry=0x68733d8, spesh_cand=spesh_cand@entry=0x82dce30) at src/core/frame.c:304 | |
304 work_size = spesh_cand ? spesh_cand->work_size : static_frame_body->work_size; | |
297 frame->env = MVM_fixed_size_alloc_zeroed(tc, tc->instance->fsa, env_size); | |
298 frame->allocd_env = env_size; | |
304 work_size = spesh_cand ? spesh_cand->work_size : static_frame_body->work_size; | |
305 if (work_size) { | |
306 frame->work = MVM_fixed_size_alloc_zeroed(tc, tc->instance->fsa, work_size); | |
MVM_fixed_size_alloc_zeroed (tc=tc@entry=0x6036b0, al=0x604530, bytes=bytes@entry=312) at src/core/fixedsizealloc.c:143 | |
143 void * MVM_fixed_size_alloc_zeroed(MVMThreadContext *tc, MVMFixedSizeAlloc *al, size_t bytes) { | |
144 void *allocd = MVM_fixed_size_alloc(tc, al, bytes); | |
MVM_fixed_size_alloc (tc=tc@entry=0x6036b0, al=0x604530, bytes=bytes@entry=312) at src/core/fixedsizealloc.c:102 | |
102 void * MVM_fixed_size_alloc(MVMThreadContext *tc, MVMFixedSizeAlloc *al, size_t bytes) { | |
108 MVMuint32 bin = bin_for(bytes); | |
bin_for (bytes=bytes@entry=312) at src/core/fixedsizealloc.c:34 | |
34 MVMuint32 bin = (MVMuint32)(bytes >> MVM_FSA_BIN_BITS); | |
MVM_fixed_size_alloc (tc=tc@entry=0x6036b0, al=0x604530, bytes=bytes@entry=312) at src/core/fixedsizealloc.c:102 | |
102 void * MVM_fixed_size_alloc(MVMThreadContext *tc, MVMFixedSizeAlloc *al, size_t bytes) { | |
108 MVMuint32 bin = bin_for(bytes); | |
bin_for (bytes=bytes@entry=312) at src/core/fixedsizealloc.c:36 | |
36 bin--; | |
MVM_fixed_size_alloc (tc=tc@entry=0x6036b0, al=0x604530, bytes=bytes@entry=312) at src/core/fixedsizealloc.c:102 | |
102 void * MVM_fixed_size_alloc(MVMThreadContext *tc, MVMFixedSizeAlloc *al, size_t bytes) { | |
108 MVMuint32 bin = bin_for(bytes); | |
bin_for (bytes=bytes@entry=312) at src/core/fixedsizealloc.c:36 | |
36 bin--; | |
MVM_fixed_size_alloc (tc=tc@entry=0x6036b0, al=0x604530, bytes=bytes@entry=312) at src/core/fixedsizealloc.c:109 | |
109 if (bin < MVM_FSA_BINS) { | |
113 MVMFixedSizeAllocSizeClass *bin_ptr = &(al->size_classes[bin]); | |
115 if (tc->instance->next_user_thread_id != 2) { | |
113 MVMFixedSizeAllocSizeClass *bin_ptr = &(al->size_classes[bin]); | |
115 if (tc->instance->next_user_thread_id != 2) { | |
113 MVMFixedSizeAllocSizeClass *bin_ptr = &(al->size_classes[bin]); | |
115 if (tc->instance->next_user_thread_id != 2) { | |
125 fle = bin_ptr->free_list; | |
126 if (fle) | |
127 bin_ptr->free_list = fle->next; | |
133 return alloc_slow_path(tc, al, bin); | |
alloc_slow_path (tc=<optimized out>, bin=<optimized out>, al=<optimized out>) at src/core/fixedsizealloc.c:80 | |
80 MVMint32 lock = tc->instance->next_user_thread_id != 2; | |
MVM_fixed_size_alloc (tc=tc@entry=0x6036b0, al=<optimized out>, bytes=bytes@entry=312) at src/core/fixedsizealloc.c:139 | |
139 } | |
MVM_fixed_size_alloc_zeroed (tc=tc@entry=0x6036b0, al=<optimized out>, bytes=bytes@entry=312) at src/core/fixedsizealloc.c:145 | |
145 memset(allocd, 0, bytes); | |
144 void *allocd = MVM_fixed_size_alloc(tc, al, bytes); | |
145 memset(allocd, 0, bytes); | |
__memset_sse2 () at ../sysdeps/x86_64/memset.S:53 | |
53 ../sysdeps/x86_64/memset.S: No such file or directory. | |
54 in ../sysdeps/x86_64/memset.S | |
55 in ../sysdeps/x86_64/memset.S | |
56 in ../sysdeps/x86_64/memset.S | |
57 in ../sysdeps/x86_64/memset.S | |
59 in ../sysdeps/x86_64/memset.S | |
60 in ../sysdeps/x86_64/memset.S | |
77 in ../sysdeps/x86_64/memset.S | |
78 in ../sysdeps/x86_64/memset.S | |
79 in ../sysdeps/x86_64/memset.S | |
80 in ../sysdeps/x86_64/memset.S | |
81 in ../sysdeps/x86_64/memset.S | |
82 in ../sysdeps/x86_64/memset.S | |
83 in ../sysdeps/x86_64/memset.S | |
84 in ../sysdeps/x86_64/memset.S | |
85 in ../sysdeps/x86_64/memset.S | |
86 in ../sysdeps/x86_64/memset.S | |
87 in ../sysdeps/x86_64/memset.S | |
88 in ../sysdeps/x86_64/memset.S | |
89 in ../sysdeps/x86_64/memset.S | |
90 in ../sysdeps/x86_64/memset.S | |
91 in ../sysdeps/x86_64/memset.S | |
92 in ../sysdeps/x86_64/memset.S | |
93 in ../sysdeps/x86_64/memset.S | |
96 in ../sysdeps/x86_64/memset.S | |
97 in ../sysdeps/x86_64/memset.S | |
98 in ../sysdeps/x86_64/memset.S | |
99 in ../sysdeps/x86_64/memset.S | |
100 in ../sysdeps/x86_64/memset.S | |
101 in ../sysdeps/x86_64/memset.S | |
102 in ../sysdeps/x86_64/memset.S | |
96 in ../sysdeps/x86_64/memset.S | |
97 in ../sysdeps/x86_64/memset.S | |
98 in ../sysdeps/x86_64/memset.S | |
99 in ../sysdeps/x86_64/memset.S | |
100 in ../sysdeps/x86_64/memset.S | |
101 in ../sysdeps/x86_64/memset.S | |
102 in ../sysdeps/x86_64/memset.S | |
96 in ../sysdeps/x86_64/memset.S | |
97 in ../sysdeps/x86_64/memset.S | |
98 in ../sysdeps/x86_64/memset.S | |
99 in ../sysdeps/x86_64/memset.S | |
100 in ../sysdeps/x86_64/memset.S | |
101 in ../sysdeps/x86_64/memset.S | |
102 in ../sysdeps/x86_64/memset.S | |
96 in ../sysdeps/x86_64/memset.S | |
97 in ../sysdeps/x86_64/memset.S | |
98 in ../sysdeps/x86_64/memset.S | |
99 in ../sysdeps/x86_64/memset.S | |
100 in ../sysdeps/x86_64/memset.S | |
101 in ../sysdeps/x86_64/memset.S | |
102 in ../sysdeps/x86_64/memset.S | |
103 in ../sysdeps/x86_64/memset.S | |
MVM_fixed_size_alloc_zeroed (tc=tc@entry=0x6036b0, al=<optimized out>, bytes=bytes@entry=312) at src/core/fixedsizealloc.c:147 | |
147 } | |
allocate_frame (tc=tc@entry=0x6036b0, static_frame_body=static_frame_body@entry=0x68733d8, spesh_cand=spesh_cand@entry=0x82dce30) at src/core/frame.c:317 | |
317 ? frame->work + (spesh_cand ? spesh_cand->num_locals : static_frame_body->num_locals) | |
306 frame->work = MVM_fixed_size_alloc_zeroed(tc, tc->instance->fsa, work_size); | |
307 frame->allocd_work = work_size; | |
317 ? frame->work + (spesh_cand ? spesh_cand->num_locals : static_frame_body->num_locals) | |
318 : NULL; | |
316 frame->args = work_size | |
319 frame->cur_args_callsite = NULL; | |
321 return frame; | |
322 } | |
MVM_frame_invoke (tc=<optimized out>, static_frame=0x68733c0, callsite=0x4bb0980, args=0x5e1c9f0, outer=<optimized out>, code_ref=0x809e1a0, spesh_cand=spesh_cand@entry=-1) at src/core/frame.c:442 | |
442 if (chosen_cand->jitcode) { | |
441 frame = allocate_frame(tc, static_frame_body, chosen_cand); | |
442 if (chosen_cand->jitcode) { | |
443 frame->effective_bytecode = chosen_cand->jitcode->bytecode; | |
444 frame->jit_entry_label = chosen_cand->jitcode->labels[0]; | |
443 frame->effective_bytecode = chosen_cand->jitcode->bytecode; | |
444 frame->jit_entry_label = chosen_cand->jitcode->labels[0]; | |
449 frame->effective_handlers = chosen_cand->handlers; | |
450 frame->effective_spesh_slots = chosen_cand->spesh_slots; | |
451 frame->spesh_cand = chosen_cand; | |
452 frame->spesh_log_idx = -1; | |
450 frame->effective_spesh_slots = chosen_cand->spesh_slots; | |
471 frame->code_ref = code_ref; | |
474 if (outer) { | |
465 frame->tc = tc; | |
468 frame->static_info = static_frame; | |
471 frame->code_ref = code_ref; | |
474 if (outer) { | |
478 if (outer->static_info->body.orig_bytecode == static_frame_body->outer->body.orig_bytecode) | |
479 frame->outer = outer; | |
505 MVM_frame_inc_ref(tc, frame->outer); | |
MVM_frame_inc_ref (tc=tc@entry=0x6036b0, frame=0x7554700) at src/core/frame.c:76 | |
76 MVMFrame * MVM_frame_inc_ref(MVMThreadContext *tc, MVMFrame *frame) { | |
77 MVM_incr(&frame->ref_count); | |
AO_fetch_and_add_full (incr=1, p=0x7554770) at 3rdparty/libatomic_ops/src/atomic_ops/sysdeps/gcc/x86.h:57 | |
57 __asm__ __volatile__ ("lock; xadd %0, %1" : | |
MVM_frame_inc_ref (tc=tc@entry=0x6036b0, frame=0x7554700) at src/core/frame.c:79 | |
79 } | |
MVM_frame_invoke (tc=<optimized out>, static_frame=<optimized out>, callsite=0x4bb0980, args=0x5e1c9f0, outer=<optimized out>, code_ref=<optimized out>, spesh_cand=spesh_cand@entry=-1) at src/core/frame.c:508 | |
508 if (tc->cur_frame) | |
509 frame->caller = MVM_frame_inc_ref(tc, tc->cur_frame); | |
MVM_frame_inc_ref (tc=tc@entry=0x6036b0, frame=0x78ae6b0) at src/core/frame.c:76 | |
76 MVMFrame * MVM_frame_inc_ref(MVMThreadContext *tc, MVMFrame *frame) { | |
77 MVM_incr(&frame->ref_count); | |
AO_fetch_and_add_full (incr=1, p=0x78ae720) at 3rdparty/libatomic_ops/src/atomic_ops/sysdeps/gcc/x86.h:57 | |
57 __asm__ __volatile__ ("lock; xadd %0, %1" : | |
MVM_frame_inc_ref (tc=tc@entry=0x6036b0, frame=0x78ae6b0) at src/core/frame.c:79 | |
79 } | |
MVM_frame_invoke (tc=<optimized out>, static_frame=<optimized out>, callsite=0x4bb0980, args=0x5e1c9f0, outer=<optimized out>, code_ref=<optimized out>, spesh_cand=spesh_cand@entry=-1) at src/core/frame.c:521 | |
521 MVM_args_proc_init(tc, &frame->params, callsite, args); | |
512 frame->keep_caller = 0; | |
513 frame->in_continuation = 0; | |
517 frame->ref_count = 1; | |
521 MVM_args_proc_init(tc, &frame->params, callsite, args); | |
518 frame->gc_seq_number = 0; | |
521 MVM_args_proc_init(tc, &frame->params, callsite, args); | |
MVM_args_proc_init (tc=tc@entry=0x6036b0, ctx=ctx@entry=0x84795b8, callsite=callsite@entry=0x4bb0980, args=args@entry=0x5e1c9f0) at src/core/args.c:21 | |
21 void MVM_args_proc_init(MVMThreadContext *tc, MVMArgProcContext *ctx, MVMCallsite *callsite, MVMRegister *args) { | |
25 init_named_used(tc, ctx, (callsite->arg_count - callsite->num_pos) / 2); | |
23 ctx->callsite = callsite; | |
25 init_named_used(tc, ctx, (callsite->arg_count - callsite->num_pos) / 2); | |
init_named_used (tc=0x6036b0, num=0, ctx=<optimized out>, ctx=<optimized out>) at src/core/args.c:3 | |
3 static void init_named_used(MVMThreadContext *tc, MVMArgProcContext *ctx, MVMuint16 num) { | |
4 if (ctx->named_used && ctx->named_used_size >= num) { /* reuse the old one */ | |
16 : NULL; | |
13 ctx->named_used_size = num; | |
16 : NULL; | |
14 ctx->named_used = ctx->named_used_size | |
18 } | |
MVM_args_proc_init (tc=tc@entry=0x6036b0, ctx=ctx@entry=0x84795b8, callsite=callsite@entry=0x4bb0980, args=args@entry=0x5e1c9f0) at src/core/args.c:27 | |
27 ctx->num_pos = callsite->num_pos; | |
26 ctx->args = args; | |
27 ctx->num_pos = callsite->num_pos; | |
28 ctx->arg_count = callsite->arg_count; | |
29 ctx->arg_flags = NULL; /* will be populated by flattener if needed */ | |
28 ctx->arg_count = callsite->arg_count; | |
30 } | |
MVM_frame_invoke (tc=<optimized out>, static_frame=<optimized out>, callsite=0x4bb0980, args=0x5e1c9f0, outer=<optimized out>, code_ref=<optimized out>, spesh_cand=spesh_cand@entry=-1) at src/core/frame.c:529 | |
529 frame->flags = 0; | |
532 frame->osr_counter = 0; | |
537 *(tc->interp_cur_op) = frame->effective_bytecode; | |
524 frame->context_object = NULL; | |
525 frame->special_return_data = NULL; | |
526 frame->mark_special_return_data = NULL; | |
536 tc->cur_frame = frame; | |
537 *(tc->interp_cur_op) = frame->effective_bytecode; | |
538 *(tc->interp_bytecode_start) = frame->effective_bytecode; | |
539 *(tc->interp_reg_base) = frame->work; | |
540 *(tc->interp_cu) = static_frame_body->cu; | |
546 if (static_frame_body->has_state_vars) { | |
590 } | |
invoke_handler (tc=<optimized out>, invokee=<optimized out>, callsite=<optimized out>, args=<optimized out>) at src/6model/reprs/MVMCode.c:15 | |
15 } | |
callback_invoke (tc=0x6036b0, data=<optimized out>) at src/core/nativecall.c:429 | |
429 tc->thread_entry_frame = tc->cur_frame; | |
430 } | |
MVM_interp_run (tc=tc@entry=0x6036b0, initial_invoke=0x8479570, invoke_data=0x666650, invoke_data@entry=0x7fffffffc800) at src/core/interp.c:65 | |
65 setjmp(tc->interp_jump); | |
_setjmp () at ../sysdeps/x86_64/bsd-_setjmp.S:30 | |
30 ../sysdeps/x86_64/bsd-_setjmp.S: No such file or directory. | |
32 in ../sysdeps/x86_64/bsd-_setjmp.S | |
__sigsetjmp () at ../sysdeps/x86_64/setjmp.S:26 | |
26 ../sysdeps/x86_64/setjmp.S: No such file or directory. | |
35 in ../sysdeps/x86_64/setjmp.S | |
36 in ../sysdeps/x86_64/setjmp.S | |
37 in ../sysdeps/x86_64/setjmp.S | |
41 in ../sysdeps/x86_64/setjmp.S | |
42 in ../sysdeps/x86_64/setjmp.S | |
43 in ../sysdeps/x86_64/setjmp.S | |
44 in ../sysdeps/x86_64/setjmp.S | |
45 in ../sysdeps/x86_64/setjmp.S | |
47 in ../sysdeps/x86_64/setjmp.S | |
49 in ../sysdeps/x86_64/setjmp.S | |
50 in ../sysdeps/x86_64/setjmp.S | |
53 in ../sysdeps/x86_64/setjmp.S | |
55 in ../sysdeps/x86_64/setjmp.S | |
64 in ../sysdeps/x86_64/setjmp.S | |
__sigjmp_save (env=0x603808, savemask=0) at sigjmp.c:29 | |
29 sigjmp.c: No such file or directory. | |
28 in sigjmp.c | |
29 in sigjmp.c | |
34 in sigjmp.c | |
MVM_interp_run (tc=0x603808, tc@entry=0x6036b0, initial_invoke=0x0, invoke_data=0x3e6f54103b011e8d, invoke_data@entry=0x7fffffffc800) at src/core/interp.c:84 | |
84 goto NEXT; | |
4799 if (tc->cur_frame->spesh_cand->jitcode == NULL) { | |
4804 if (MVM_jit_enter_code(tc, cu, tc->cur_frame->spesh_cand->jitcode)) { | |
4803 cur_op -= 2; | |
4804 if (MVM_jit_enter_code(tc, cu, tc->cur_frame->spesh_cand->jitcode)) { | |
MVM_jit_enter_code (tc=0x6036b0, cu=0x666650, code=0x76e9a60) at src/jit/compile.c:120 | |
120 MVMJitCode *code) { | |
122 void *label = tc->cur_frame->jit_entry_label; | |
123 MVMint32 ctrl = code->func_ptr(tc, cu, label); | |
Hardware watchpoint 2: *0x7bd3000 | |
Old value = 99 | |
New value = 0 | |
_int_free (av=0x7ffff7844640 <main_arena>, p=0x7bd2ff0, have_lock=0) at malloc.c:3909 | |
3909 malloc.c: No such file or directory. | |
3911 in malloc.c | |
4067 in malloc.c | |
gc_free (tc=<optimized out>, obj=0x7ffff6780f30) at src/6model/reprs/MVMString.c:66 | |
66 MVM_checked_free_null(str->body.storage.any); | |
67 str->body.num_graphs = str->body.num_strands = 0; | |
68 } | |
MVM_gc_collect_free_nursery_uncopied (tc=tc@entry=0x6036b0, limit=0x7ffff6780fc8) at src/gc/collect.c:563 | |
563 if (dead && item->flags & MVM_CF_HAS_OBJECT_ID) | |
587 scan = (char *)scan + item->size; | |
533 while (scan < limit) { | |
537 MVMuint8 dead = !(item->flags & MVM_CF_FORWARDER_VALID); | |
543 if (!(item->flags & (MVM_CF_TYPE_OBJECT | MVM_CF_STABLE))) { | |
548 if (dead && REPR(obj)->gc_free) | |
549 REPR(obj)->gc_free(tc, obj); | |
gc_free (tc=0x6036b0, obj=0x7ffff6780f60) at src/6model/reprs/P6opaque.c:157 | |
157 static void gc_free(MVMThreadContext *tc, MVMObject *obj) { | |
160 void *data = MVM_p6opaque_real_data(tc, OBJECT_BODY(obj)); | |
157 static void gc_free(MVMThreadContext *tc, MVMObject *obj) { | |
163 for (i = 0; repr_data->gc_cleanup_slots[i] >= 0; i++) { | |
157 static void gc_free(MVMThreadContext *tc, MVMObject *obj) { | |
158 MVMP6opaqueREPRData *repr_data = (MVMP6opaqueREPRData *)STABLE(obj)->REPR_data; | |
(gdb) bt | |
#0 gc_free (tc=0x6036b0, obj=0x7ffff6780f60) at src/6model/reprs/P6opaque.c:158 | |
#1 0x00007ffff79994c0 in MVM_gc_collect_free_nursery_uncopied (tc=tc@entry=0x6036b0, limit=0x7ffff6780fc8) at src/gc/collect.c:549 | |
#2 0x00007ffff79963bd in run_gc (tc=tc@entry=0x6036b0, what_to_do=what_to_do@entry=0 '\000') at src/gc/orchestrate.c:308 | |
#3 0x00007ffff79969c7 in MVM_gc_enter_from_allocator (tc=tc@entry=0x6036b0) at src/gc/orchestrate.c:408 | |
#4 0x00007ffff7996ba8 in MVM_gc_allocate_nursery (tc=0x6036b0, size=72) at src/gc/allocation.c:32 | |
#5 0x00007ffff7996d6a in MVM_gc_allocate_object (tc=0x6036b0, st=0x605848) at src/gc/allocation.c:85 | |
#6 0x00007ffff7983022 in MVM_frame_takeclosure (tc=0x6036b0, code=0x6950ad0) at src/core/frame.c:900 | |
#7 0x00007ffff2e4b07e in ?? () | |
#8 0x00000000006036b0 in ?? () | |
#9 0x00007fffffffc520 in ?? () | |
#10 0x00000001f3dd5d00 in ?? () | |
#11 0x0000000007554700 in ?? () | |
#12 0x00007fffffffc5f0 in ?? () | |
#13 0x00007fffffffc530 in ?? () | |
#14 0x00007fffffffd3d0 in ?? () | |
#15 0x00000000006036b0 in ?? () | |
#16 0x0000000000000000 in ?? () |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment