Skip to content

Commit

Permalink
id.c: generate
Browse files Browse the repository at this point in the history
* common.mk, defs/id.def, template/id.c.tmpl: generate id.c as well as id.h.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38192 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
  • Loading branch information
nobu committed Dec 4, 2012
1 parent 0138062 commit 28ee4c2
Show file tree
Hide file tree
Showing 7 changed files with 94 additions and 95 deletions.
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ y.tab.c
/encdb.h
/exts.mk
/goruby
/id.h
/id.[ch]
/largefile.h
/lex.c
/libruby*.*
Expand Down
4 changes: 4 additions & 0 deletions ChangeLog
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
Wed Dec 5 02:36:10 2012 Nobuyoshi Nakada <[email protected]>

* common.mk, defs/id.def, template/id.c.tmpl: generate id.c as well as id.h.

Wed Dec 5 00:56:21 2012 KOSAKI Motohiro <[email protected]>

* thread.c (rb_mutex_owned_p): new method that return current
Expand Down
9 changes: 7 additions & 2 deletions common.mk
Original file line number Diff line number Diff line change
Expand Up @@ -841,7 +841,7 @@ INSNS2VMOPT = --srcdir="$(srcdir)"

{$(VPATH)}vm.inc: $(srcdir)/template/vm.inc.tmpl

srcs: {$(VPATH)}parse.c {$(VPATH)}lex.c {$(VPATH)}newline.c srcs-ext srcs-enc
srcs: {$(VPATH)}parse.c {$(VPATH)}lex.c {$(VPATH)}newline.c {$(VPATH)}id.c srcs-ext srcs-enc

EXT_SRCS = $(srcdir)/ext/ripper/ripper.c $(srcdir)/ext/json/parser/parser.c

Expand All @@ -857,7 +857,12 @@ incs: $(INSNS) {$(VPATH)}node_name.inc {$(VPATH)}encdb.h {$(VPATH)}transdb.h {$(

insns: $(INSNS)

id.h: $(srcdir)/tool/generic_erb.rb $(srcdir)/template/id.h.tmpl
id.h: $(srcdir)/tool/generic_erb.rb $(srcdir)/template/id.h.tmpl $(srcdir)/defs/id.def
$(ECHO) generating $@
$(Q) $(BASERUBY) $(srcdir)/tool/generic_erb.rb --output=$@ \
$(srcdir)/template/$@.tmpl

id.c: $(srcdir)/tool/generic_erb.rb $(srcdir)/template/id.c.tmpl $(srcdir)/defs/id.def
$(ECHO) generating $@
$(Q) $(BASERUBY) $(srcdir)/tool/generic_erb.rb --output=$@ \
$(srcdir)/template/$@.tmpl
Expand Down
50 changes: 50 additions & 0 deletions defs/id.def
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
# -*- ruby -*-
predefined = %[\
intern
method_missing MethodMissing
length
size
gets
succ
each
lambda
send
__send__
initialize
initialize_copy
initialize_clone
initialize_dup
_ UScore
"/*NULL*/" NULL
empty?
respond_to? Respond_to
respond_to_missing? Respond_to_missing
<IFUNC>
<CFUNC>
core#set_method_alias
core#set_variable_alias
core#undef_method
core#define_method
core#define_singleton_method
core#set_postexe
core#hash_from_ary
core#hash_merge_ary
core#hash_merge_ptr
core#hash_merge_kwd
]

predefined_ids = {}
preserved_ids = []
attr_ids = []
predefined.each_line do |line|
next if /^#/ =~ line or (name, token = line.split; !name)
token ||= name
if /#/ =~ token
token = "_#{token.gsub(/\W+/, '_')}"
else
token = token.sub(/\?/, 'P').sub(/\A[a-z]/) {$&.upcase}
token.gsub!(/\W+/, "")
end
(/\A(?!\d)\w+\z/ =~ name ? attr_ids : preserved_ids) << token
predefined_ids[token] = name
end
56 changes: 0 additions & 56 deletions id.c

This file was deleted.

28 changes: 28 additions & 0 deletions template/id.c.tmpl
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
%# -*- c -*-
/* DO NOT EDIT THIS FILE DIRECTLY */
/**********************************************************************
id.c -
$Author$
created at: Wed Dec 5 02:36:10 2012
Copyright (C) 2004-2007 Koichi Sasada
**********************************************************************/
<%
predefined_ids = nil
defs = File.join(File.dirname(erb.filename), "../defs/id.def")
eval(File.read(defs), binding, defs)
%>
static void
Init_id(void)
{
#undef rb_intern
#define rb_intern(str) rb_intern_const(str)
rb_encoding *enc = rb_usascii_encoding();

% predefined_ids.each_pair do |token, name|
REGISTER_SYMID(id<%=token%>, "<%=name%>");
% end
}
40 changes: 4 additions & 36 deletions template/id.h.tmpl
Original file line number Diff line number Diff line change
Expand Up @@ -15,48 +15,16 @@ require 'optparse'

op_id_offset = 128

attr_ids = %w[
Intern
MethodMissing
Length
Size
Gets
Succ
Each
Lambda
Send
__send__
Initialize
Initialize_copy
Initialize_clone
Initialize_dup
UScore
]

token_op_ids = %w[
tDOT2 tDOT3 tUPLUS tUMINUS tPOW tDSTAR tCMP tLSHFT tRSHFT
tLEQ tGEQ tEQ tEQQ tNEQ tMATCH tNMATCH tAREF tASET
tCOLON2 tCOLON3
]

preserved_ids = %w[
NULL
EmptyP
Respond_to
Respond_to_missing
IFUNC
CFUNC
_core_set_method_alias
_core_set_variable_alias
_core_undef_method
_core_define_method
_core_define_singleton_method
_core_set_postexe
_core_hash_from_ary
_core_hash_merge_ary
_core_hash_merge_ptr
_core_hash_merge_kwd
]
preserved_ids = nil
attr_ids = nil
defs = File.join(File.dirname(erb.filename), "../defs/id.def")
eval(File.read(defs), binding, defs)
%>
#ifndef RUBY_ID_H
#define RUBY_ID_H
Expand Down

0 comments on commit 28ee4c2

Please sign in to comment.