From a9ba30ee8661fbbb01f79a923cef70e2aa050a06 Mon Sep 17 00:00:00 2001 From: nobu Date: Mon, 6 Aug 2007 04:09:56 +0000 Subject: * common.mk (node_name.inc): auto-generate node name list. * iseq.c (ruby_node_name): ditto. * tool/node_name.rb: ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12876 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 8 +- common.mk | 8 +- iseq.c | 231 +----------------------------------------------------- tool/node_name.rb | 4 + 4 files changed, 18 insertions(+), 233 deletions(-) create mode 100755 tool/node_name.rb diff --git a/ChangeLog b/ChangeLog index 23ba9bb945..c410189e9f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,10 +1,16 @@ -Mon Aug 6 13:00:07 2007 Nobuyoshi Nakada +Mon Aug 6 13:09:55 2007 Nobuyoshi Nakada * common.mk (INSNS): not chdir to srcdir. + * common.mk (node_name.inc): auto-generate node name list. + + * iseq.c (ruby_node_name): ditto. + * lib/vm/instruction.rb (RubyVM::SourceCodeGenerator): --destdir option. + * tool/node_name.rb: ditto. + Sun Aug 5 11:51:39 2007 Kouhei Sutou * lib/rss, sample/rss, test/rss: diff --git a/common.mk b/common.mk index d085d1a93f..2921c2a30d 100644 --- a/common.mk +++ b/common.mk @@ -560,7 +560,8 @@ iseq.$(OBJEXT): {$(VPATH)}iseq.c {$(VPATH)}vm_core.h {$(VPATH)}id.h {$(VPATH)}de {$(VPATH)}ruby.h {$(VPATH)}defines.h {$(VPATH)}missing.h \ {$(VPATH)}intern.h {$(VPATH)}st.h {$(VPATH)}signal.h \ {$(VPATH)}gc.h {$(VPATH)}vm_opts.h {$(VPATH)}config.h {$(VPATH)}node.h \ - {$(VPATH)}thread_$(THREAD_MODEL).h {$(VPATH)}insns_info.inc + {$(VPATH)}thread_$(THREAD_MODEL).h {$(VPATH)}insns_info.inc \ + {$(VPATH)}node_name.inc vm.$(OBJEXT): {$(VPATH)}vm.c {$(VPATH)}vm.h {$(VPATH)}vm_core.h {$(VPATH)}id.h \ {$(VPATH)}debug.h {$(VPATH)}ruby.h {$(VPATH)}config.h \ {$(VPATH)}node.h {$(VPATH)}util.h {$(VPATH)}signal.h {$(VPATH)}dln.h \ @@ -611,7 +612,10 @@ vmtc.inc: $(srcdir)/template/vmtc.inc.tmpl vm.inc: $(srcdir)/template/vm.inc.tmpl -incs: $(INSNS) +incs: $(INSNS) node_name.inc + +node_name.inc: {$(VPATH)}node.h + $(BASERUBY) -n $(srcdir)/tool/node_name.rb $< > $@ docs: $(BASERUBY) -I$(srcdir) $(srcdir)/tool/makedocs.rb $(INSNS2VMOPT) diff --git a/iseq.c b/iseq.c index c50a6d443d..7e652492cb 100644 --- a/iseq.c +++ b/iseq.c @@ -853,236 +853,7 @@ const char * ruby_node_name(int node) { switch (node) { -/* -# generated by this script. -src = 'include/ruby/node.h' -f = open(File.expand_path(src)) -line = f.gets while /enum node_type \{/ !~ line -while line = f.gets - break if /(NODE_.+),/ !~ line - node = $1 - puts " case #{node}:" - puts "\treturn \"#{node}\";" -end - */ - case NODE_METHOD: - return "NODE_METHOD"; - case NODE_FBODY: - return "NODE_FBODY"; - case NODE_CFUNC: - return "NODE_CFUNC"; - case NODE_SCOPE: - return "NODE_SCOPE"; - case NODE_BLOCK: - return "NODE_BLOCK"; - case NODE_IF: - return "NODE_IF"; - case NODE_CASE: - return "NODE_CASE"; - case NODE_WHEN: - return "NODE_WHEN"; - case NODE_OPT_N: - return "NODE_OPT_N"; - case NODE_WHILE: - return "NODE_WHILE"; - case NODE_UNTIL: - return "NODE_UNTIL"; - case NODE_ITER: - return "NODE_ITER"; - case NODE_FOR: - return "NODE_FOR"; - case NODE_BREAK: - return "NODE_BREAK"; - case NODE_NEXT: - return "NODE_NEXT"; - case NODE_REDO: - return "NODE_REDO"; - case NODE_RETRY: - return "NODE_RETRY"; - case NODE_BEGIN: - return "NODE_BEGIN"; - case NODE_RESCUE: - return "NODE_RESCUE"; - case NODE_RESBODY: - return "NODE_RESBODY"; - case NODE_ENSURE: - return "NODE_ENSURE"; - case NODE_AND: - return "NODE_AND"; - case NODE_OR: - return "NODE_OR"; - case NODE_NOT: - return "NODE_NOT"; - case NODE_MASGN: - return "NODE_MASGN"; - case NODE_LASGN: - return "NODE_LASGN"; - case NODE_DASGN: - return "NODE_DASGN"; - case NODE_DASGN_CURR: - return "NODE_DASGN_CURR"; - case NODE_GASGN: - return "NODE_GASGN"; - case NODE_IASGN: - return "NODE_IASGN"; - case NODE_IASGN2: - return "NODE_IASGN2"; - case NODE_CDECL: - return "NODE_CDECL"; - case NODE_CVASGN: - return "NODE_CVASGN"; - case NODE_CVDECL: - return "NODE_CVDECL"; - case NODE_OP_ASGN1: - return "NODE_OP_ASGN1"; - case NODE_OP_ASGN2: - return "NODE_OP_ASGN2"; - case NODE_OP_ASGN_AND: - return "NODE_OP_ASGN_AND"; - case NODE_OP_ASGN_OR: - return "NODE_OP_ASGN_OR"; - case NODE_CALL: - return "NODE_CALL"; - case NODE_FCALL: - return "NODE_FCALL"; - case NODE_VCALL: - return "NODE_VCALL"; - case NODE_SUPER: - return "NODE_SUPER"; - case NODE_ZSUPER: - return "NODE_ZSUPER"; - case NODE_ARRAY: - return "NODE_ARRAY"; - case NODE_ZARRAY: - return "NODE_ZARRAY"; - case NODE_VALUES: - return "NODE_VALUES"; - case NODE_HASH: - return "NODE_HASH"; - case NODE_RETURN: - return "NODE_RETURN"; - case NODE_YIELD: - return "NODE_YIELD"; - case NODE_LVAR: - return "NODE_LVAR"; - case NODE_DVAR: - return "NODE_DVAR"; - case NODE_GVAR: - return "NODE_GVAR"; - case NODE_IVAR: - return "NODE_IVAR"; - case NODE_CONST: - return "NODE_CONST"; - case NODE_CVAR: - return "NODE_CVAR"; - case NODE_NTH_REF: - return "NODE_NTH_REF"; - case NODE_BACK_REF: - return "NODE_BACK_REF"; - case NODE_MATCH: - return "NODE_MATCH"; - case NODE_MATCH2: - return "NODE_MATCH2"; - case NODE_MATCH3: - return "NODE_MATCH3"; - case NODE_LIT: - return "NODE_LIT"; - case NODE_STR: - return "NODE_STR"; - case NODE_DSTR: - return "NODE_DSTR"; - case NODE_XSTR: - return "NODE_XSTR"; - case NODE_DXSTR: - return "NODE_DXSTR"; - case NODE_EVSTR: - return "NODE_EVSTR"; - case NODE_DREGX: - return "NODE_DREGX"; - case NODE_DREGX_ONCE: - return "NODE_DREGX_ONCE"; - case NODE_ARGS: - return "NODE_ARGS"; - case NODE_ARGS_AUX: - return "NODE_ARGS_AUX"; - case NODE_OPT_ARG: - return "NODE_OPT_ARG"; - case NODE_POSTARG: - return "NODE_POSTARG"; - case NODE_ARGSCAT: - return "NODE_ARGSCAT"; - case NODE_ARGSPUSH: - return "NODE_ARGSPUSH"; - case NODE_SPLAT: - return "NODE_SPLAT"; - case NODE_TO_ARY: - return "NODE_TO_ARY"; - case NODE_BLOCK_ARG: - return "NODE_BLOCK_ARG"; - case NODE_BLOCK_PASS: - return "NODE_BLOCK_PASS"; - case NODE_DEFN: - return "NODE_DEFN"; - case NODE_DEFS: - return "NODE_DEFS"; - case NODE_ALIAS: - return "NODE_ALIAS"; - case NODE_VALIAS: - return "NODE_VALIAS"; - case NODE_UNDEF: - return "NODE_UNDEF"; - case NODE_CLASS: - return "NODE_CLASS"; - case NODE_MODULE: - return "NODE_MODULE"; - case NODE_SCLASS: - return "NODE_SCLASS"; - case NODE_COLON2: - return "NODE_COLON2"; - case NODE_COLON3: - return "NODE_COLON3"; - case NODE_DOT2: - return "NODE_DOT2"; - case NODE_DOT3: - return "NODE_DOT3"; - case NODE_FLIP2: - return "NODE_FLIP2"; - case NODE_FLIP3: - return "NODE_FLIP3"; - case NODE_ATTRSET: - return "NODE_ATTRSET"; - case NODE_SELF: - return "NODE_SELF"; - case NODE_NIL: - return "NODE_NIL"; - case NODE_TRUE: - return "NODE_TRUE"; - case NODE_FALSE: - return "NODE_FALSE"; - case NODE_ERRINFO: - return "NODE_ERRINFO"; - case NODE_DEFINED: - return "NODE_DEFINED"; - case NODE_POSTEXE: - return "NODE_POSTEXE"; - case NODE_ALLOCA: - return "NODE_ALLOCA"; - case NODE_BMETHOD: - return "NODE_BMETHOD"; - case NODE_MEMO: - return "NODE_MEMO"; - case NODE_IFUNC: - return "NODE_IFUNC"; - case NODE_DSYM: - return "NODE_DSYM"; - case NODE_ATTRASGN: - return "NODE_ATTRASGN"; - case NODE_PRELUDE: - return "NODE_PRELUDE"; - case NODE_LAMBDA: - return "NODE_LAMBDA"; - case NODE_OPTBLOCK: - return "NODE_OPTBLOCK"; +#include "node_name.inc" default: rb_bug("unknown node (%d)", node); return 0; diff --git a/tool/node_name.rb b/tool/node_name.rb new file mode 100755 index 0000000000..5d39e9f5cc --- /dev/null +++ b/tool/node_name.rb @@ -0,0 +1,4 @@ +#! ./miniruby -n +if ~/enum node_type \{/..~/^\};/ + ~/(NODE_.+),/ and puts(" case #{$1}:\n\treturn \"#{$1}\";") +end -- cgit v1.2.3