コード例 #1
0
ファイル: vm_dump.c プロジェクト: rhenium/ruby
void
rb_vmdebug_debug_print_pre(rb_thread_t *th, rb_control_frame_t *cfp,VALUE *_pc)
{
    const rb_iseq_t *iseq = cfp->iseq;

    if (iseq != 0) {
	ptrdiff_t pc = _pc - iseq->body->iseq_encoded;
	int i;

	for (i=0; i<(int)VM_CFP_CNT(th, cfp); i++) {
	    printf(" ");
	}
	printf("| ");
	if(0)printf("[%03ld] ", (long)(cfp->sp - th->stack));

	/* printf("%3"PRIdPTRDIFF" ", VM_CFP_CNT(th, cfp)); */
	if (pc >= 0) {
	    const VALUE *iseq_original = rb_iseq_original_iseq((rb_iseq_t *)iseq);

	    rb_iseq_disasm_insn(0, iseq_original, (size_t)pc, iseq, 0);
	}
    }

#if VMDEBUG > 3
    fprintf(stderr, "        (1)");
    rb_vmdebug_debug_print_register(th);
#endif
}
コード例 #2
0
ファイル: vm_dump.c プロジェクト: alansparrow/learningruby
void
rb_vmdebug_debug_print_pre(rb_thread_t *th, rb_control_frame_t *cfp)
{
    rb_iseq_t *iseq = cfp->iseq;

    if (iseq != 0) {
	VALUE *seq = iseq->iseq;
	ptrdiff_t pc = cfp->pc - iseq->iseq_encoded;
	int i;

	for (i=0; i<(int)VM_CFP_CNT(th, cfp); i++) {
	    printf(" ");
	}
	printf("| ");
	/* printf("%3"PRIdPTRDIFF" ", VM_CFP_CNT(th, cfp)); */
	if (pc >= 0) {
	    rb_iseq_disasm_insn(0, seq, (size_t)pc, iseq, 0);
	}
    }

#if VMDEBUG > 3
    fprintf(stderr, "        (1)");
    rb_vmdebug_debug_print_register(th);
#endif
}
コード例 #3
0
ファイル: vm_dump.c プロジェクト: AdamDotCom/my-rvm
void
rb_vmdebug_debug_print_pre(rb_thread_t *th, rb_control_frame_t *cfp)
{
    rb_iseq_t *iseq = cfp->iseq;

    if (iseq != 0 && VM_FRAME_TYPE(cfp) != VM_FRAME_MAGIC_FINISH) {
	VALUE *seq = iseq->iseq;
	int pc = cfp->pc - iseq->iseq_encoded;

	printf("%3"PRIdPTRDIFF" ", VM_CFP_CNT(th, cfp));
	rb_iseq_disasm_insn(0, seq, pc, iseq, 0);
    }

#if VMDEBUG > 3
    fprintf(stderr, "        (1)");
    rb_vmdebug_debug_print_register(th);
#endif
}