mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
bb7a2d40ff
proc.c, vm.c, vm_macro.def, vm_macro.def, yarvcore.c, yarvcore.h, debug.c, debug.h: merge half-baked-1.9 changes. The biggest change is to change node structure around NODE_SCOPE, NODE_ARGS. Every scope (method/class/block) has own NODE_SCOPE node and NODE_ARGS represents more details of arguments information. I'll write a document about detail of node structure. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12117 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
50 lines
1.3 KiB
C
50 lines
1.3 KiB
C
/**********************************************************************
|
|
|
|
debug.h - YARV Debug function interface
|
|
|
|
$Author$
|
|
$Date$
|
|
created at: 04/08/25 02:33:49 JST
|
|
|
|
Copyright (C) 2004-2006 Koichi Sasada
|
|
|
|
**********************************************************************/
|
|
|
|
#ifndef _DEBUG_H_INCLUDED_
|
|
#define _DEBUG_H_INCLUDED_
|
|
|
|
#include <ruby.h>
|
|
#include <node.h>
|
|
|
|
#define dpv(h,v) ruby_debug_value(-1, 0, h, v)
|
|
#define dp(v) ruby_debug_value(-1, 0, "", v)
|
|
#define dpi(i) ruby_debug_id(-1, 0, "", i)
|
|
#define bp() ruby_debug_breakpoint()
|
|
#define dpn(n) ruby_debug_node(-1, 0, "", n)
|
|
|
|
VALUE ruby_debug_value(int level, int debug_level, char *header, VALUE v);
|
|
ID ruby_debug_id(int level, int debug_level, char *header, ID id);
|
|
NODE *ruby_debug_node(int level, int debug_level, char *header, NODE *node);
|
|
void ruby_debug_indent(int level, int debug_level, int indent_level);
|
|
void ruby_debug_breakpoint(void);
|
|
void ruby_debug_gc_check_func(void);
|
|
|
|
#if GCDEBUG == 1
|
|
|
|
#define GC_CHECK() \
|
|
gc_check_func()
|
|
|
|
#elif GCDEBUG == 2
|
|
|
|
#define GC_CHECK() \
|
|
(printf("** %s:%d gc start\n", __FILE__, __LINE__), \
|
|
ruby_debug_gc_check_func(), \
|
|
printf("** end\n"))
|
|
|
|
#else
|
|
|
|
#define GC_CHECK()
|
|
|
|
#endif
|
|
|
|
#endif /* _DEBUG_H_INCLUDED_ */
|