* 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
This commit is contained in:
nobu 2012-12-04 17:36:19 +00:00
Родитель 01380620bd
Коммит 28ee4c2966
7 изменённых файлов: 94 добавлений и 95 удалений

2
.gitignore поставляемый
Просмотреть файл

@ -56,7 +56,7 @@ y.tab.c
/encdb.h
/exts.mk
/goruby
/id.h
/id.[ch]
/largefile.h
/lex.c
/libruby*.*

Просмотреть файл

@ -1,3 +1,7 @@
Wed Dec 5 02:36:10 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
* 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 <kosaki.motohiro@gmail.com>
* thread.c (rb_mutex_owned_p): new method that return current

Просмотреть файл

@ -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
@ -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

50
defs/id.def Normal file
Просмотреть файл

@ -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
id.c
Просмотреть файл

@ -1,56 +0,0 @@
/**********************************************************************
id.c -
$Author$
created at: Thu Jul 12 04:37:51 2007
Copyright (C) 2004-2007 Koichi Sasada
**********************************************************************/
#include "ruby/ruby.h"
#include "id.h"
static void
Init_id(void)
{
#undef rb_intern
#define rb_intern(str) rb_intern_const(str)
rb_encoding *enc = rb_usascii_encoding();
REGISTER_SYMID(idNULL, "");
REGISTER_SYMID(idIFUNC, "<IFUNC>");
REGISTER_SYMID(idCFUNC, "<CFUNC>");
REGISTER_SYMID(idRespond_to, "respond_to?");
REGISTER_SYMID(idRespond_to_missing, "respond_to_missing?");
REGISTER_SYMID(id_core_set_method_alias, "core#set_method_alias");
REGISTER_SYMID(id_core_set_variable_alias, "core#set_variable_alias");
REGISTER_SYMID(id_core_undef_method, "core#undef_method");
REGISTER_SYMID(id_core_define_method, "core#define_method");
REGISTER_SYMID(id_core_define_singleton_method, "core#define_singleton_method");
REGISTER_SYMID(id_core_set_postexe, "core#set_postexe");
REGISTER_SYMID(id_core_hash_from_ary, "core#hash_from_ary");
REGISTER_SYMID(id_core_hash_merge_ary, "core#hash_merge_ary");
REGISTER_SYMID(id_core_hash_merge_ptr, "core#hash_merge_ptr");
REGISTER_SYMID(id_core_hash_merge_kwd, "core#hash_merge_kwd");
REGISTER_SYMID(idEach, "each");
REGISTER_SYMID(idLength, "length");
REGISTER_SYMID(idSize, "size");
REGISTER_SYMID(idEmptyP, "empty?");
REGISTER_SYMID(idLambda, "lambda");
REGISTER_SYMID(idIntern, "intern");
REGISTER_SYMID(idGets, "gets");
REGISTER_SYMID(idSucc, "succ");
REGISTER_SYMID(idMethodMissing, "method_missing");
REGISTER_SYMID(idSend, "send");
REGISTER_SYMID(id__send__, "__send__");
REGISTER_SYMID(idInitialize, "initialize");
REGISTER_SYMID(idInitialize_copy, "initialize_copy");
REGISTER_SYMID(idInitialize_clone, "initialize_clone");
REGISTER_SYMID(idInitialize_dup, "initialize_dup");
REGISTER_SYMID(idUScore, "_");
}

28
template/id.c.tmpl Normal file
Просмотреть файл

@ -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
}

Просмотреть файл

@ -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