- remove blockinlining.$(OBJEXT) to built
  - make ENCODING_H_INCLDUES variable (include/ruby/encoding.h)
  - make VM_CORE_H_INCLUDES variable (vm_core.h)
  - simplify rules.
  - make depends rule to output depend status using gcc -MM.
* include/ruby/mvm.h, include/ruby/vm.h: rename mvm.h to vm.h.
* include/ruby.h: ditto.
* load.c: add inclusion explicitly.
* enumerator.c, object.c, parse.y, thread.c, vm_dump.c:
  remove useless inclusion.
* eval_intern.h: cleanup inclusion.
* vm_core.h: rb_thread_t should be defined in this file.
* vm_evalbody.c, vm_exec.c: rename vm_evalbody.c to vm_exec.c.
* vm.h, vm_exec.h: rename vm.h to vm_exec.h.
* insnhelper.h, vm_insnhelper.h: rename insnhelper.h to vm_insnhelper.h.
* vm.c, vm_insnhelper.c, vm_insnhelper.h:
  - rename vm_eval() to vm_exec_core().
  - rename vm_eval_body() to vm_exec().
  - cleanup include order.
* vm_method.c: fix comment.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@19466 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
ko1 2008-09-23 00:20:28 +00:00
Родитель f398d750ea
Коммит 8cd252ac6f
19 изменённых файлов: 284 добавлений и 376 удалений

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

@ -1,3 +1,38 @@
Tue Sep 23 09:20:00 2008 Koichi Sasada <ko1@atdot.net>
* common.mk: clean up
- remove blockinlining.$(OBJEXT) to built
- make ENCODING_H_INCLDUES variable (include/ruby/encoding.h)
- make VM_CORE_H_INCLUDES variable (vm_core.h)
- simplify rules.
- make depends rule to output depend status using gcc -MM.
* include/ruby/mvm.h, include/ruby/vm.h: rename mvm.h to vm.h.
* include/ruby.h: ditto.
* load.c: add inclusion explicitly.
* enumerator.c, object.c, parse.y, thread.c, vm_dump.c:
remove useless inclusion.
* eval_intern.h: cleanup inclusion.
* vm_core.h: rb_thread_t should be defined in this file.
* vm_evalbody.c, vm_exec.c: rename vm_evalbody.c to vm_exec.c.
* vm.h, vm_exec.h: rename vm.h to vm_exec.h.
* insnhelper.h, vm_insnhelper.h: rename insnhelper.h to vm_insnhelper.h.
* vm.c, vm_insnhelper.c, vm_insnhelper.h:
- rename vm_eval() to vm_exec_core().
- rename vm_eval_body() to vm_exec().
- cleanup include order.
* vm_method.c: fix comment.
Tue Sep 23 09:01:15 2008 Yusuke Endoh <mame@tsg.ne.jp>
* lib/pathname.rb (each_filename): return Enumerator if no block

314
common.mk
Просмотреть файл

@ -71,7 +71,6 @@ COMMONOBJS = array.$(OBJEXT) \
util.$(OBJEXT) \
variable.$(OBJEXT) \
version.$(OBJEXT) \
blockinlining.$(OBJEXT) \
compile.$(OBJEXT) \
debug.$(OBJEXT) \
iseq.$(OBJEXT) \
@ -435,232 +434,133 @@ win32.$(OBJEXT): {$(VPATH)}win32.c
###
RUBY_H_INCLUDES = {$(VPATH)}ruby.h {$(VPATH)}config.h {$(VPATH)}defines.h \
{$(VPATH)}intern.h {$(VPATH)}missing.h
ID_H_INCLUDES = {$(VPATH)}id.h {$(VPATH)}parse.h
RUBY_H_INCLUDES = {$(VPATH)}ruby.h {$(VPATH)}config.h {$(VPATH)}defines.h \
{$(VPATH)}intern.h {$(VPATH)}missing.h {$(VPATH)}st.h
ENCODING_H_INCLDUES= {$(VPATH)}encoding.h {$(VPATH)}oniguruma.h
ID_H_INCLUDES = {$(VPATH)}id.h {$(VPATH)}parse.h
VM_CORE_H_INCLUDES = {$(VPATH)}vm_core.h {$(VPATH)}vm_opts.h \
{$(VPATH)}vm.h {$(VPATH)}thread_$(THREAD_MODEL).h \
{$(VPATH)}node.h $(ID_H_INCLUDES)
array.$(OBJEXT): {$(VPATH)}array.c $(RUBY_H_INCLUDES) {$(VPATH)}st.h \
{$(VPATH)}util.h
bignum.$(OBJEXT): {$(VPATH)}bignum.c $(RUBY_H_INCLUDES) {$(VPATH)}st.h
class.$(OBJEXT): {$(VPATH)}class.c $(RUBY_H_INCLUDES) {$(VPATH)}st.h \
{$(VPATH)}node.h {$(VPATH)}vm_core.h \
{$(VPATH)}debug.h {$(VPATH)}vm_opts.h {$(VPATH)}id.h \
{$(VPATH)}thread_$(THREAD_MODEL).h {$(VPATH)}mvm.h {$(VPATH)}parse.h \
{$(VPATH)}parse.y
compar.$(OBJEXT): {$(VPATH)}compar.c $(RUBY_H_INCLUDES) {$(VPATH)}st.h
complex.$(OBJEXT): {$(VPATH)}complex.c $(RUBY_H_INCLUDES) {$(VPATH)}st.h \
{$(VPATH)}mvm.h
dir.$(OBJEXT): {$(VPATH)}dir.c $(RUBY_H_INCLUDES) {$(VPATH)}st.h \
{$(VPATH)}util.h {$(VPATH)}encoding.h {$(VPATH)}oniguruma.h
dln.$(OBJEXT): {$(VPATH)}dln.c $(RUBY_H_INCLUDES) {$(VPATH)}st.h \
{$(VPATH)}dln.h
array.$(OBJEXT): {$(VPATH)}array.c $(RUBY_H_INCLUDES) {$(VPATH)}util.h
bignum.$(OBJEXT): {$(VPATH)}bignum.c $(RUBY_H_INCLUDES)
class.$(OBJEXT): {$(VPATH)}class.c $(RUBY_H_INCLUDES) $(VM_CORE_H_INCLUDES)
compar.$(OBJEXT): {$(VPATH)}compar.c $(RUBY_H_INCLUDES)
complex.$(OBJEXT): {$(VPATH)}complex.c $(RUBY_H_INCLUDES)
dir.$(OBJEXT): {$(VPATH)}dir.c $(RUBY_H_INCLUDES) {$(VPATH)}util.h \
$(ENCODING_H_INCLDUES)
dln.$(OBJEXT): {$(VPATH)}dln.c {$(VPATH)}dln.h $(RUBY_H_INCLUDES)
dmydln.$(OBJEXT): {$(VPATH)}dmydln.c dln.$(OBJEXT)
dmyext.$(OBJEXT): {$(VPATH)}dmyext.c
dmyencoding.$(OBJEXT): {$(VPATH)}dmyencoding.c {$(VPATH)}encoding.c \
$(RUBY_H_INCLUDES) {$(VPATH)}st.h {$(VPATH)}encoding.h \
{$(VPATH)}oniguruma.h {$(VPATH)}regenc.h {$(VPATH)}util.h
dmyencoding.$(OBJEXT): {$(VPATH)}dmyencoding.c $(RUBY_H_INCLUDES) \
{$(VPATH)}regenc.h {$(VPATH)}util.h $(ENCODING_H_INCLDUES)
encoding.$(OBJEXT): {$(VPATH)}encoding.c $(RUBY_H_INCLUDES) \
{$(VPATH)}st.h {$(VPATH)}encoding.h {$(VPATH)}oniguruma.h \
{$(VPATH)}regenc.h {$(VPATH)}util.h
enum.$(OBJEXT): {$(VPATH)}enum.c $(RUBY_H_INCLUDES) {$(VPATH)}st.h \
$(ENCODING_H_INCLDUES) {$(VPATH)}regenc.h {$(VPATH)}util.h
enum.$(OBJEXT): {$(VPATH)}enum.c $(RUBY_H_INCLUDES) \
{$(VPATH)}node.h {$(VPATH)}util.h
enumerator.$(OBJEXT): {$(VPATH)}enumerator.c $(RUBY_H_INCLUDES) \
{$(VPATH)}st.h {$(VPATH)}debug.h {$(VPATH)}node.h
error.$(OBJEXT): {$(VPATH)}error.c $(RUBY_H_INCLUDES) {$(VPATH)}st.h \
{$(VPATH)}vm_core.h {$(VPATH)}node.h \
{$(VPATH)}debug.h {$(VPATH)}vm_opts.h $(ID_H_INCLUDES) \
{$(VPATH)}thread_$(THREAD_MODEL).h {$(VPATH)}mvm.h {$(VPATH)}parse.y
{$(VPATH)}node.h
error.$(OBJEXT): {$(VPATH)}error.c $(RUBY_H_INCLUDES) $(VM_CORE_H_INCLUDES)
eval.$(OBJEXT): {$(VPATH)}eval.c {$(VPATH)}eval_intern.h \
$(RUBY_H_INCLUDES) {$(VPATH)}st.h {$(VPATH)}node.h {$(VPATH)}util.h \
{$(VPATH)}vm_core.h {$(VPATH)}debug.h \
{$(VPATH)}vm_opts.h $(ID_H_INCLUDES) {$(VPATH)}thread_$(THREAD_MODEL).h \
{$(VPATH)}dln.h {$(VPATH)}eval_error.c {$(VPATH)}eval_safe.c \
{$(VPATH)}eval_jump.c {$(VPATH)}mvm.h {$(VPATH)}parse.y
$(RUBY_H_INCLUDES) {$(VPATH)}util.h $(VM_CORE_H_INCLUDES) \
{$(VPATH)}eval_error.c {$(VPATH)}eval_safe.c {$(VPATH)}eval_jump.c
load.$(OBJEXT): {$(VPATH)}load.c {$(VPATH)}eval_intern.h \
$(RUBY_H_INCLUDES) {$(VPATH)}st.h {$(VPATH)}node.h {$(VPATH)}util.h \
{$(VPATH)}vm_core.h {$(VPATH)}debug.h \
{$(VPATH)}vm_opts.h $(ID_H_INCLUDES) {$(VPATH)}thread_$(THREAD_MODEL).h \
{$(VPATH)}dln.h {$(VPATH)}mvm.h {$(VPATH)}parse.y
file.$(OBJEXT): {$(VPATH)}file.c $(RUBY_H_INCLUDES) {$(VPATH)}st.h \
{$(VPATH)}io.h {$(VPATH)}encoding.h {$(VPATH)}oniguruma.h \
{$(VPATH)}util.h {$(VPATH)}dln.h
gc.$(OBJEXT): {$(VPATH)}gc.c $(RUBY_H_INCLUDES) {$(VPATH)}st.h \
{$(VPATH)}node.h {$(VPATH)}re.h {$(VPATH)}regex.h \
{$(VPATH)}oniguruma.h {$(VPATH)}io.h {$(VPATH)}encoding.h \
{$(VPATH)}vm_core.h {$(VPATH)}debug.h {$(VPATH)}vm_opts.h \
$(ID_H_INCLUDES) {$(VPATH)}thread_$(THREAD_MODEL).h {$(VPATH)}gc.h \
{$(VPATH)}eval_intern.h {$(VPATH)}util.h {$(VPATH)}mvm.h \
{$(VPATH)}parse.y {$(VPATH)}dln.h
hash.$(OBJEXT): {$(VPATH)}hash.c $(RUBY_H_INCLUDES) $(ID_H_INCLUDES) \
{$(VPATH)}st.h {$(VPATH)}util.h \
{$(VPATH)}eval_intern.h {$(VPATH)}node.h {$(VPATH)}vm_core.h \
{$(VPATH)}mvm.h {$(VPATH)}debug.h {$(VPATH)}vm_opts.h {$(VPATH)}parse.y \
{$(VPATH)}thread_$(THREAD_MODEL).h {$(VPATH)}dln.h
inits.$(OBJEXT): {$(VPATH)}inits.c $(RUBY_H_INCLUDES) {$(VPATH)}st.h
io.$(OBJEXT): {$(VPATH)}io.c $(RUBY_H_INCLUDES) {$(VPATH)}st.h \
{$(VPATH)}io.h {$(VPATH)}encoding.h {$(VPATH)}oniguruma.h \
{$(VPATH)}util.h {$(VPATH)}vm_core.h \
{$(VPATH)}debug.h {$(VPATH)}vm_opts.h {$(VPATH)}id.h \
{$(VPATH)}thread_$(THREAD_MODEL).h {$(VPATH)}mvm.h {$(VPATH)}node.h \
{$(VPATH)}parse.h {$(VPATH)}parse.y
main.$(OBJEXT): {$(VPATH)}main.c $(RUBY_H_INCLUDES) {$(VPATH)}st.h \
{$(VPATH)}mvm.h
marshal.$(OBJEXT): {$(VPATH)}marshal.c $(RUBY_H_INCLUDES) {$(VPATH)}st.h \
{$(VPATH)}io.h {$(VPATH)}encoding.h {$(VPATH)}oniguruma.h \
{$(VPATH)}util.h
math.$(OBJEXT): {$(VPATH)}math.c $(RUBY_H_INCLUDES) {$(VPATH)}st.h
numeric.$(OBJEXT): {$(VPATH)}numeric.c $(RUBY_H_INCLUDES) {$(VPATH)}st.h \
{$(VPATH)}encoding.h {$(VPATH)}oniguruma.h
object.$(OBJEXT): {$(VPATH)}object.c $(RUBY_H_INCLUDES) {$(VPATH)}st.h \
{$(VPATH)}util.h {$(VPATH)}debug.h {$(VPATH)}node.h
pack.$(OBJEXT): {$(VPATH)}pack.c $(RUBY_H_INCLUDES) {$(VPATH)}st.h
{$(VPATH)}util.h $(RUBY_H_INCLUDES) $(VM_CORE_H_INCLUDES)
file.$(OBJEXT): {$(VPATH)}file.c $(RUBY_H_INCLUDES) {$(VPATH)}io.h \
$(ENCODING_H_INCLDUES) {$(VPATH)}util.h {$(VPATH)}dln.h
gc.$(OBJEXT): {$(VPATH)}gc.c $(RUBY_H_INCLUDES) \
{$(VPATH)}re.h {$(VPATH)}regex.h \
$(ENCODING_H_INCLDUES) $(VM_CORE_H_INCLUDES) \
{$(VPATH)}gc.h {$(VPATH)}io.h {$(VPATH)}eval_intern.h {$(VPATH)}util.h
hash.$(OBJEXT): {$(VPATH)}hash.c $(RUBY_H_INCLUDES) {$(VPATH)}util.h \
{$(VPATH)}eval_intern.h $(VM_CORE_H_INCLUDES)
inits.$(OBJEXT): {$(VPATH)}inits.c $(RUBY_H_INCLUDES)
io.$(OBJEXT): {$(VPATH)}io.c $(RUBY_H_INCLUDES) {$(VPATH)}io.h \
{$(VPATH)}util.h $(VM_CORE_H_INCLUDES) $(ENCODING_H_INCLDUES)
main.$(OBJEXT): {$(VPATH)}main.c $(RUBY_H_INCLUDES) {$(VPATH)}vm.h
marshal.$(OBJEXT): {$(VPATH)}marshal.c $(RUBY_H_INCLUDES) \
{$(VPATH)}io.h $(ENCODING_H_INCLDUES) {$(VPATH)}util.h
math.$(OBJEXT): {$(VPATH)}math.c $(RUBY_H_INCLUDES)
numeric.$(OBJEXT): {$(VPATH)}numeric.c $(RUBY_H_INCLUDES) $(ENCODING_H_INCLDUES)
object.$(OBJEXT): {$(VPATH)}object.c $(RUBY_H_INCLUDES) {$(VPATH)}util.h
pack.$(OBJEXT): {$(VPATH)}pack.c $(RUBY_H_INCLUDES)
parse.$(OBJEXT): {$(VPATH)}parse.c {$(VPATH)}parse.y $(RUBY_H_INCLUDES) \
{$(VPATH)}st.h {$(VPATH)}node.h {$(VPATH)}encoding.h \
{$(VPATH)}oniguruma.h $(ID_H_INCLUDES) {$(VPATH)}regenc.h \
{$(VPATH)}node.h $(ENCODING_H_INCLDUES) $(ID_H_INCLUDES) {$(VPATH)}regenc.h \
{$(VPATH)}regex.h {$(VPATH)}util.h {$(VPATH)}lex.c {$(VPATH)}keywords \
{$(VPATH)}debug.h {$(VPATH)}id.c
proc.$(OBJEXT): {$(VPATH)}proc.c {$(VPATH)}eval_intern.h \
$(RUBY_H_INCLUDES) {$(VPATH)}st.h {$(VPATH)}node.h {$(VPATH)}util.h \
{$(VPATH)}vm_core.h {$(VPATH)}debug.h \
{$(VPATH)}vm_opts.h $(ID_H_INCLUDES) {$(VPATH)}thread_$(THREAD_MODEL).h \
{$(VPATH)}dln.h {$(VPATH)}gc.h {$(VPATH)}mvm.h {$(VPATH)}parse.y
process.$(OBJEXT): {$(VPATH)}process.c $(RUBY_H_INCLUDES) {$(VPATH)}st.h \
{$(VPATH)}vm_core.h {$(VPATH)}util.h {$(VPATH)}node.h \
{$(VPATH)}debug.h {$(VPATH)}vm_opts.h $(ID_H_INCLUDES) \
{$(VPATH)}thread_$(THREAD_MODEL).h {$(VPATH)}io.h {$(VPATH)}encoding.h \
{$(VPATH)}oniguruma.h {$(VPATH)}mvm.h {$(VPATH)}parse.y {$(VPATH)}dln.h
random.$(OBJEXT): {$(VPATH)}random.c $(RUBY_H_INCLUDES) {$(VPATH)}st.h
range.$(OBJEXT): {$(VPATH)}range.c $(RUBY_H_INCLUDES) {$(VPATH)}st.h \
{$(VPATH)}encoding.h {$(VPATH)}oniguruma.h
rational.$(OBJEXT): {$(VPATH)}rational.c $(RUBY_H_INCLUDES) \
{$(VPATH)}st.h {$(VPATH)}mvm.h
re.$(OBJEXT): {$(VPATH)}re.c $(RUBY_H_INCLUDES) {$(VPATH)}st.h \
{$(VPATH)}re.h {$(VPATH)}regex.h {$(VPATH)}oniguruma.h \
{$(VPATH)}encoding.h {$(VPATH)}util.h {$(VPATH)}regint.h \
{$(VPATH)}regenc.h
regcomp.$(OBJEXT): {$(VPATH)}regcomp.c {$(VPATH)}regparse.h \
{$(VPATH)}regint.h {$(VPATH)}config.h {$(VPATH)}defines.h \
{$(VPATH)}regenc.h {$(VPATH)}oniguruma.h {$(VPATH)}st.h {$(VPATH)}ruby.h \
{$(VPATH)}missing.h {$(VPATH)}intern.h
regenc.$(OBJEXT): {$(VPATH)}regenc.c {$(VPATH)}regint.h \
{$(VPATH)}config.h {$(VPATH)}defines.h {$(VPATH)}regenc.h \
{$(VPATH)}oniguruma.h {$(VPATH)}st.h {$(VPATH)}ruby.h \
{$(VPATH)}missing.h {$(VPATH)}intern.h
{$(VPATH)}id.c
proc.$(OBJEXT): {$(VPATH)}proc.c {$(VPATH)}eval_intern.h {$(VPATH)}util.h \
$(RUBY_H_INCLUDES) {$(VPATH)}gc.h $(VM_CORE_H_INCLUDES)
process.$(OBJEXT): {$(VPATH)}process.c $(RUBY_H_INCLUDES) \
{$(VPATH)}util.h {$(VPATH)}io.h $(ENCODING_H_INCLDUES) \
{$(VPATH)}dln.h $(VM_CORE_H_INCLUDES)
random.$(OBJEXT): {$(VPATH)}random.c $(RUBY_H_INCLUDES)
range.$(OBJEXT): {$(VPATH)}range.c $(RUBY_H_INCLUDES) $(ENCODING_H_INCLDUES)
rational.$(OBJEXT): {$(VPATH)}rational.c $(RUBY_H_INCLUDES)
re.$(OBJEXT): {$(VPATH)}re.c $(RUBY_H_INCLUDES) \
{$(VPATH)}re.h {$(VPATH)}regex.h $(ENCODING_H_INCLDUES) \
{$(VPATH)}util.h {$(VPATH)}regint.h {$(VPATH)}regenc.h
regcomp.$(OBJEXT): {$(VPATH)}regcomp.c {$(VPATH)}regparse.h {$(VPATH)}regint.h \
{$(VPATH)}regenc.h $(ENCODING_H_INCLDUES) $(RUBY_H_INCLUDES)
regenc.$(OBJEXT): {$(VPATH)}regenc.c {$(VPATH)}regint.h {$(VPATH)}regenc.h \
$(ENCODING_H_INCLDUES) $(RUBY_H_INCLUDES)
regerror.$(OBJEXT): {$(VPATH)}regerror.c {$(VPATH)}regint.h \
{$(VPATH)}config.h {$(VPATH)}defines.h {$(VPATH)}regenc.h \
{$(VPATH)}oniguruma.h {$(VPATH)}st.h {$(VPATH)}ruby.h \
{$(VPATH)}missing.h {$(VPATH)}intern.h
{$(VPATH)}regenc.h $(ENCODING_H_INCLDUES) $(RUBY_H_INCLUDES)
regexec.$(OBJEXT): {$(VPATH)}regexec.c {$(VPATH)}regint.h \
{$(VPATH)}config.h {$(VPATH)}defines.h {$(VPATH)}regenc.h \
{$(VPATH)}oniguruma.h {$(VPATH)}st.h {$(VPATH)}ruby.h \
{$(VPATH)}missing.h {$(VPATH)}intern.h
{$(VPATH)}regenc.h $(ENCODING_H_INCLDUES) $(RUBY_H_INCLUDES)
regparse.$(OBJEXT): {$(VPATH)}regparse.c {$(VPATH)}regparse.h \
{$(VPATH)}regint.h {$(VPATH)}config.h {$(VPATH)}defines.h \
{$(VPATH)}regenc.h {$(VPATH)}oniguruma.h {$(VPATH)}st.h {$(VPATH)}ruby.h \
{$(VPATH)}missing.h {$(VPATH)}intern.h
{$(VPATH)}regint.h {$(VPATH)}regenc.h $(ENCODING_H_INCLDUES) $(RUBY_H_INCLUDES)
regsyntax.$(OBJEXT): {$(VPATH)}regsyntax.c {$(VPATH)}regint.h \
{$(VPATH)}config.h {$(VPATH)}defines.h {$(VPATH)}regenc.h \
{$(VPATH)}oniguruma.h {$(VPATH)}st.h {$(VPATH)}ruby.h \
{$(VPATH)}missing.h {$(VPATH)}intern.h
ruby.$(OBJEXT): {$(VPATH)}ruby.c $(RUBY_H_INCLUDES) {$(VPATH)}st.h \
{$(VPATH)}node.h {$(VPATH)}encoding.h {$(VPATH)}oniguruma.h \
{$(VPATH)}eval_intern.h {$(VPATH)}util.h \
{$(VPATH)}vm_core.h {$(VPATH)}debug.h {$(VPATH)}vm_opts.h \
$(ID_H_INCLUDES) {$(VPATH)}thread_$(THREAD_MODEL).h {$(VPATH)}dln.h \
{$(VPATH)}mvm.h {$(VPATH)}parse.y
signal.$(OBJEXT): {$(VPATH)}signal.c $(RUBY_H_INCLUDES) {$(VPATH)}st.h \
{$(VPATH)}node.h {$(VPATH)}vm_core.h \
{$(VPATH)}debug.h {$(VPATH)}vm_opts.h $(ID_H_INCLUDES) \
{$(VPATH)}thread_$(THREAD_MODEL).h {$(VPATH)}mvm.h {$(VPATH)}parse.y
sprintf.$(OBJEXT): {$(VPATH)}sprintf.c $(RUBY_H_INCLUDES) {$(VPATH)}st.h \
{$(VPATH)}re.h {$(VPATH)}regex.h {$(VPATH)}oniguruma.h \
{$(VPATH)}encoding.h {$(VPATH)}vsnprintf.c
{$(VPATH)}regenc.h $(ENCODING_H_INCLDUES) $(RUBY_H_INCLUDES)
ruby.$(OBJEXT): {$(VPATH)}ruby.c $(RUBY_H_INCLUDES) {$(VPATH)}util.h \
$(ENCODING_H_INCLDUES) {$(VPATH)}eval_intern.h \
$(VM_CORE_H_INCLUDES) {$(VPATH)}dln.h
signal.$(OBJEXT): {$(VPATH)}signal.c $(RUBY_H_INCLUDES) $(VM_CORE_H_INCLUDES)
sprintf.$(OBJEXT): {$(VPATH)}sprintf.c $(RUBY_H_INCLUDES) {$(VPATH)}re.h \
{$(VPATH)}regex.h {$(VPATH)}vsnprintf.c $(ENCODING_H_INCLDUES)
st.$(OBJEXT): {$(VPATH)}st.c {$(VPATH)}config.h {$(VPATH)}defines.h \
{$(VPATH)}st.h
strftime.$(OBJEXT): {$(VPATH)}strftime.c {$(VPATH)}config.h \
{$(VPATH)}ruby.h {$(VPATH)}defines.h {$(VPATH)}missing.h \
{$(VPATH)}intern.h {$(VPATH)}st.h
string.$(OBJEXT): {$(VPATH)}string.c $(RUBY_H_INCLUDES) {$(VPATH)}st.h \
{$(VPATH)}re.h {$(VPATH)}regex.h {$(VPATH)}oniguruma.h \
{$(VPATH)}encoding.h
struct.$(OBJEXT): {$(VPATH)}struct.c $(RUBY_H_INCLUDES) {$(VPATH)}st.h
strftime.$(OBJEXT): {$(VPATH)}strftime.c $(RUBY_H_INCLDUES)
string.$(OBJEXT): {$(VPATH)}string.c $(RUBY_H_INCLUDES) \
{$(VPATH)}re.h {$(VPATH)}regex.h $(ENCODING_H_INCLDUES)
struct.$(OBJEXT): {$(VPATH)}struct.c $(RUBY_H_INCLUDES)
thread.$(OBJEXT): {$(VPATH)}thread.c {$(VPATH)}eval_intern.h \
$(RUBY_H_INCLUDES) {$(VPATH)}st.h {$(VPATH)}node.h {$(VPATH)}util.h \
{$(VPATH)}vm_core.h {$(VPATH)}debug.h \
{$(VPATH)}vm_opts.h $(ID_H_INCLUDES) {$(VPATH)}thread_$(THREAD_MODEL).h \
{$(VPATH)}dln.h {$(VPATH)}vm.h {$(VPATH)}gc.h \
{$(VPATH)}thread_$(THREAD_MODEL).c {$(VPATH)}mvm.h {$(VPATH)}parse.y
$(RUBY_H_INCLUDES) {$(VPATH)}util.h {$(VPATH)}gc.h $(VM_CORE_H_INCLUDES)
transcode.$(OBJEXT): {$(VPATH)}transcode.c $(RUBY_H_INCLUDES) \
{$(VPATH)}st.h {$(VPATH)}encoding.h {$(VPATH)}oniguruma.h \
{$(VPATH)}transcode_data.h
cont.$(OBJEXT): {$(VPATH)}cont.c $(RUBY_H_INCLUDES) {$(VPATH)}st.h \
{$(VPATH)}vm_core.h {$(VPATH)}node.h \
{$(VPATH)}debug.h {$(VPATH)}vm_opts.h $(ID_H_INCLUDES) \
{$(VPATH)}thread_$(THREAD_MODEL).h {$(VPATH)}gc.h \
{$(VPATH)}eval_intern.h {$(VPATH)}util.h {$(VPATH)}dln.h {$(VPATH)}mvm.h \
{$(VPATH)}parse.y
time.$(OBJEXT): {$(VPATH)}time.c $(RUBY_H_INCLUDES) {$(VPATH)}st.h \
{$(VPATH)}encoding.h {$(VPATH)}oniguruma.h
util.$(OBJEXT): {$(VPATH)}util.c $(RUBY_H_INCLUDES) {$(VPATH)}st.h \
{$(VPATH)}util.h
$(ENCODING_H_INCLDUES) {$(VPATH)}transcode_data.h
cont.$(OBJEXT): {$(VPATH)}cont.c $(RUBY_H_INCLUDES) \
$(VM_CORE_H_INCLUDES) {$(VPATH)}gc.h {$(VPATH)}eval_intern.h
time.$(OBJEXT): {$(VPATH)}time.c $(RUBY_H_INCLUDES) $(ENCODING_H_INCLDUES)
util.$(OBJEXT): {$(VPATH)}util.c $(RUBY_H_INCLUDES) {$(VPATH)}util.h
variable.$(OBJEXT): {$(VPATH)}variable.c $(RUBY_H_INCLUDES) \
{$(VPATH)}st.h {$(VPATH)}node.h {$(VPATH)}util.h
version.$(OBJEXT): {$(VPATH)}version.c $(RUBY_H_INCLUDES) {$(VPATH)}st.h \
{$(VPATH)}node.h {$(VPATH)}util.h
version.$(OBJEXT): {$(VPATH)}version.c $(RUBY_H_INCLUDES) \
{$(VPATH)}version.h $(srcdir)/revision.h
compile.$(OBJEXT): {$(VPATH)}compile.c $(RUBY_H_INCLUDES) {$(VPATH)}st.h \
{$(VPATH)}node.h {$(VPATH)}vm_core.h \
{$(VPATH)}debug.h {$(VPATH)}vm_opts.h $(ID_H_INCLUDES) \
{$(VPATH)}thread_$(THREAD_MODEL).h {$(VPATH)}compile.h \
{$(VPATH)}insns.inc {$(VPATH)}insns_info.inc {$(VPATH)}optinsn.inc \
{$(VPATH)}mvm.h {$(VPATH)}parse.y
iseq.$(OBJEXT): {$(VPATH)}iseq.c $(RUBY_H_INCLUDES) {$(VPATH)}st.h \
{$(VPATH)}node.h {$(VPATH)}gc.h {$(VPATH)}vm_core.h \
{$(VPATH)}debug.h {$(VPATH)}vm_opts.h $(ID_H_INCLUDES) \
{$(VPATH)}thread_$(THREAD_MODEL).h {$(VPATH)}insns.inc \
{$(VPATH)}insns_info.inc {$(VPATH)}node_name.inc {$(VPATH)}mvm.h \
{$(VPATH)}parse.y
vm.$(OBJEXT): {$(VPATH)}vm.c $(RUBY_H_INCLUDES) {$(VPATH)}st.h \
{$(VPATH)}node.h {$(VPATH)}encoding.h {$(VPATH)}oniguruma.h \
{$(VPATH)}gc.h {$(VPATH)}insnhelper.h {$(VPATH)}eval_intern.h \
{$(VPATH)}util.h {$(VPATH)}vm_core.h \
{$(VPATH)}debug.h {$(VPATH)}vm_opts.h $(ID_H_INCLUDES) \
{$(VPATH)}thread_$(THREAD_MODEL).h {$(VPATH)}dln.h {$(VPATH)}vm.h \
{$(VPATH)}vm_insnhelper.c {$(VPATH)}insns.inc {$(VPATH)}vm_evalbody.c \
{$(VPATH)}vmtc.inc {$(VPATH)}vm.inc {$(VPATH)}insns.def \
{$(VPATH)}vm_method.c {$(VPATH)}vm_eval.c {$(VPATH)}mvm.h \
{$(VPATH)}parse.y
vm_dump.$(OBJEXT): {$(VPATH)}vm_dump.c $(RUBY_H_INCLUDES) {$(VPATH)}st.h \
{$(VPATH)}node.h {$(VPATH)}vm_core.h \
{$(VPATH)}debug.h {$(VPATH)}vm_opts.h $(ID_H_INCLUDES) \
{$(VPATH)}thread_$(THREAD_MODEL).h {$(VPATH)}vm.h {$(VPATH)}mvm.h \
{$(VPATH)}parse.y
debug.$(OBJEXT): {$(VPATH)}debug.c $(RUBY_H_INCLUDES) {$(VPATH)}st.h \
{$(VPATH)}encoding.h {$(VPATH)}oniguruma.h {$(VPATH)}debug.h \
{$(VPATH)}node.h {$(VPATH)}vm_core.h \
{$(VPATH)}vm_opts.h $(ID_H_INCLUDES) {$(VPATH)}thread_$(THREAD_MODEL).h \
{$(VPATH)}util.h {$(VPATH)}eval_intern.h {$(VPATH)}mvm.h \
{$(VPATH)}parse.y {$(VPATH)}dln.h
blockinlining.$(OBJEXT): {$(VPATH)}blockinlining.c $(RUBY_H_INCLUDES) \
{$(VPATH)}st.h {$(VPATH)}node.h {$(VPATH)}vm_core.h \
{$(VPATH)}debug.h {$(VPATH)}vm_opts.h $(ID_H_INCLUDES) \
{$(VPATH)}thread_$(THREAD_MODEL).h {$(VPATH)}mvm.h {$(VPATH)}parse.y
id.$(OBJEXT): {$(VPATH)}id.c $(RUBY_H_INCLUDES) \
{$(VPATH)}st.h $(ID_H_INCLUDES)
compile.$(OBJEXT): {$(VPATH)}compile.c {$(VPATH)}compile.h \
$(RUBY_H_INCLUDES) $(VM_CORE_H_INCLUDES) \
{$(VPATH)}insns.inc {$(VPATH)}insns_info.inc {$(VPATH)}optinsn.inc
iseq.$(OBJEXT): {$(VPATH)}iseq.c {$(VPATH)}gc.h \
$(RUBY_H_INCLUDES) $(VM_CORE_H_INCLUDES) \
{$(VPATH)}insns.inc {$(VPATH)}insns_info.inc {$(VPATH)}node_name.inc
vm.$(OBJEXT): {$(VPATH)}vm.c $(RUBY_H_INCLUDES) $(ENCODING_H_INCLDUES) \
{$(VPATH)}gc.h {$(VPATH)}eval_intern.h $(VM_CORE_H_INCLUDES) \
{$(VPATH)}vm_method.c {$(VPATH)}vm_eval.c \
{$(VPATH)}vm_insnhelper.c {$(VPATH)}vm_insnhelper.h \
{$(VPATH)}vm_exec.c {$(VPATH)}vm_exec.h \
{$(VPATH)}insns.def {$(VPATH)}vmtc.inc {$(VPATH)}vm.inc {$(VPATH)}insns.inc
vm_dump.$(OBJEXT): {$(VPATH)}vm_dump.c $(RUBY_H_INCLUDES) \
$(VM_CORE_H_INCLUDES)
debug.$(OBJEXT): {$(VPATH)}debug.c $(RUBY_H_INCLUDES) $(ENCODING_H_INCLDUES) \
$(VM_CORE_H_INCLUDES) {$(VPATH)}eval_intern.h
id.$(OBJEXT): {$(VPATH)}id.c $(RUBY_H_INCLUDES) $(ID_H_INCLUDES)
miniprelude.$(OBJEXT): {$(VPATH)}miniprelude.c $(RUBY_H_INCLUDES) \
{$(VPATH)}st.h {$(VPATH)}vm_core.h {$(VPATH)}node.h \
{$(VPATH)}debug.h {$(VPATH)}vm_opts.h $(ID_H_INCLUDES) \
{$(VPATH)}thread_$(THREAD_MODEL).h {$(VPATH)}mvm.h {$(VPATH)}parse.y
prelude.$(OBJEXT): {$(VPATH)}prelude.c $(RUBY_H_INCLUDES) {$(VPATH)}st.h \
{$(VPATH)}vm_core.h {$(VPATH)}node.h \
{$(VPATH)}debug.h {$(VPATH)}vm_opts.h $(ID_H_INCLUDES) \
{$(VPATH)}thread_$(THREAD_MODEL).h {$(VPATH)}mvm.h {$(VPATH)}parse.y
golf_prelude.$(OBJEXT): {$(VPATH)}golf_prelude.c $(RUBY_H_INCLUDES) \
{$(VPATH)}st.h {$(VPATH)}vm_core.h {$(VPATH)}node.h \
{$(VPATH)}debug.h {$(VPATH)}vm_opts.h $(ID_H_INCLUDES) \
{$(VPATH)}thread_$(THREAD_MODEL).h {$(VPATH)}mvm.h {$(VPATH)}parse.y
$(VM_CORE_H_INCLUDES)
prelude.$(OBJEXT): {$(VPATH)}prelude.c $(RUBY_H_INCLUDES) \
$(VM_CORE_H_INCLUDES)
golf_prelude.$(OBJEXT): {$(VPATH)}golf_prelude.c $(RUBY_H_INCLUDES)\
$(VM_CORE_H_INCLUDES)
goruby.$(OBJEXT): {$(VPATH)}goruby.c {$(VPATH)}main.c $(RUBY_H_INCLUDES) \
{$(VPATH)}st.h {$(VPATH)}mvm.h
{$(VPATH)}vm.h
ascii.$(OBJEXT): {$(VPATH)}ascii.c {$(VPATH)}regenc.h {$(VPATH)}config.h \
{$(VPATH)}defines.h {$(VPATH)}oniguruma.h
@ -812,6 +712,12 @@ up:
@$(VCS) up "$(srcdir)"
-@$(MAKE) $(MFLAGS) REVISION_FORCE=PHONY "$(srcdir)/revision.h"
depends: PHONY
gcc $(XCFLAGS) -MM $(srcdir)/*.c > depends.txt
vm_test.o: vm_test.c $(RUBY_H_INCLUDES) $(VM_CORE_H_INCLUDES) \
vm_exec.c vm_insnhelper.c vm_insnhelper.h
help: PHONY
@echo " Makefile of Ruby"
@echo ""

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

@ -13,7 +13,6 @@
************************************************/
#include "ruby/ruby.h"
#include "debug.h"
/*
* Document-class: Enumerator

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

@ -2,6 +2,8 @@
#ifndef RUBY_EVAL_INTERN_H
#define RUBY_EVAL_INTERN_H
#include "vm_core.h"
#define PASS_PASSED_BLOCK_TH(th) do { \
(th)->passed_block = GC_GUARDED_PTR_REF((rb_block_t *)(th)->cfp->lfp[0]); \
(th)->cfp->flag |= VM_FRAME_FLAG_PASSED; \
@ -12,11 +14,6 @@
PASS_PASSED_BLOCK_TH(__th__); \
} while (0)
#include "ruby/ruby.h"
#include "ruby/node.h"
#include "ruby/util.h"
#include "vm_core.h"
#ifdef HAVE_STDLIB_H
#include <stdlib.h>
#endif
@ -30,9 +27,6 @@
#include <stdio.h>
#include <setjmp.h>
#include "ruby/st.h"
#include "dln.h"
#ifdef __APPLE__
#include <crt_externs.h>
#endif

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

@ -31,9 +31,5 @@
#endif
#include "ruby/ruby.h"
#if RUBY_VM
#include "ruby/mvm.h"
#endif
extern void ruby_set_debug_option(const char *);
#endif /* RUBY_H */

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

@ -1,6 +1,6 @@
/**********************************************************************
ruby/mvm.h -
ruby/vm.h -
$Author$
created at: Sat May 31 15:17:36 2008
@ -13,9 +13,5 @@
#define RUBY_MVM_H 1
typedef struct rb_vm_struct rb_vm_t;
typedef struct rb_thread_struct rb_thread_t;
VALUE *ruby_vm_verbose_ptr(rb_vm_t *);
VALUE *ruby_vm_debug_ptr(rb_vm_t *);
#endif /* RUBY_MVM_H */

3
load.c
Просмотреть файл

@ -2,6 +2,9 @@
* load methods from eval.c
*/
#include "ruby/ruby.h"
#include "ruby/util.h"
#include "dln.h"
#include "eval_intern.h"
VALUE ruby_dln_librefs;

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

@ -14,7 +14,6 @@
#include "ruby/ruby.h"
#include "ruby/st.h"
#include "ruby/util.h"
#include "debug.h"
#include <stdio.h>
#include <errno.h>
#include <ctype.h>

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

@ -8725,7 +8725,6 @@ local_tbl_gen(struct parser_params *parser)
return buf;
}
#include "debug.h"
static int
arg_var_gen(struct parser_params *parser, ID id)
{

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

@ -45,7 +45,6 @@
/* for model 2 */
#include "eval_intern.h"
#include "vm.h"
#include "gc.h"
#ifndef USE_NATIVE_THREAD_PRIORITY

75
vm.c
Просмотреть файл

@ -12,10 +12,17 @@
#include "ruby/node.h"
#include "ruby/st.h"
#include "ruby/encoding.h"
#include "gc.h"
#include "insnhelper.h"
#include "gc.h"
#include "vm_core.h"
#include "eval_intern.h"
#include "vm_insnhelper.h"
#include "vm_insnhelper.c"
#include "vm_exec.h"
#include "vm_exec.c"
#include "vm_method.c"
#include "vm_eval.c"
#define BUFSIZE 0x100
@ -27,6 +34,8 @@ VALUE rb_cEnv;
VALUE rb_mRubyVMFrozenCore;
VALUE ruby_vm_global_state_version = 1;
VALUE ruby_vm_redefined_flag = 0;
rb_thread_t *ruby_current_thread = 0;
rb_vm_t *ruby_current_vm = 0;
@ -34,14 +43,6 @@ void vm_analysis_operand(int insn, int n, VALUE op);
void vm_analysis_register(int reg, int isset);
void vm_analysis_insn(int insn);
#if OPT_STACK_CACHING
static VALUE finish_insn_seq[1] = { BIN(finish_SC_ax_ax) };
#elif OPT_CALL_THREADED_CODE
static VALUE const finish_insn_seq[1] = { 0 };
#else
static VALUE finish_insn_seq[1] = { BIN(finish) };
#endif
void
rb_vm_change_state(void)
{
@ -132,6 +133,18 @@ vm_get_ruby_level_caller_cfp(rb_thread_t *th, rb_control_frame_t *cfp)
/* Env */
/*
env{
env[0] // special (block or prev env)
env[1] // env object
env[2] // prev env val
};
*/
#define ENV_IN_HEAP_P(th, env) \
(!((th)->stack < (env) && (env) < ((th)->stack + (th)->stack_size)))
#define ENV_VAL(env) ((env)[1])
static void
env_free(void * const ptr)
{
@ -471,7 +484,7 @@ invoke_block_from_c(rb_thread_t *th, const rb_block_t *block,
th->cfp->dfp[-1] = (VALUE)cref;
}
return vm_eval_body(th);
return vm_exec(th);
}
else {
return vm_yield_with_cfunc(th, block, self, argc, argv, blockptr);
@ -743,37 +756,6 @@ debug_cref(NODE *cref)
}
#endif
static NODE *
vm_cref_push(rb_thread_t *th, VALUE klass, int noex)
{
rb_control_frame_t *cfp = vm_get_ruby_level_caller_cfp(th, th->cfp);
NODE *cref = NEW_BLOCK(klass);
cref->nd_file = 0;
cref->nd_visi = noex;
if (cfp) {
cref->nd_next = vm_get_cref(cfp->iseq, cfp->lfp, cfp->dfp);
}
return cref;
}
static inline VALUE
vm_get_cbase(const rb_iseq_t *iseq, const VALUE *lfp, const VALUE *dfp)
{
NODE *cref = vm_get_cref(iseq, lfp, dfp);
VALUE klass = Qundef;
while (cref) {
if ((klass = cref->nd_clss) != 0) {
break;
}
cref = cref->nd_next;
}
return klass;
}
VALUE
rb_vm_cbase(void)
{
@ -887,7 +869,6 @@ rb_iter_break(void)
/* optimization: redefine management */
VALUE ruby_vm_redefined_flag = 0;
static st_table *vm_opt_method_table = 0;
static void
@ -944,8 +925,6 @@ vm_init_redefined_flag(void)
/* evaluator body */
#include "vm_evalbody.c"
/* finish
VMe (h1) finish
VM finish F1 F2
@ -1048,7 +1027,7 @@ vm_init_redefined_flag(void)
static VALUE
vm_eval_body(rb_thread_t *th)
vm_exec(rb_thread_t *th)
{
int state;
VALUE result, err;
@ -1059,7 +1038,7 @@ vm_eval_body(rb_thread_t *th)
_tag.retval = Qnil;
if ((state = EXEC_TAG()) == 0) {
vm_loop_start:
result = vm_eval(th, initial);
result = vm_exec_core(th, initial);
if ((state = th->state) != 0) {
err = result;
th->state = 0;
@ -1264,7 +1243,7 @@ rb_iseq_eval(VALUE iseqval)
if (!rb_const_defined(rb_cObject, rb_intern("TOPLEVEL_BINDING"))) {
rb_define_global_const("TOPLEVEL_BINDING", rb_binding_new());
}
val = vm_eval_body(th);
val = vm_exec(th);
tmp = iseqval; /* prohibit tail call optimization */
return val;
}

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

@ -17,7 +17,7 @@
#include <setjmp.h>
#include "ruby/ruby.h"
#include "ruby/mvm.h"
#include "ruby/vm.h"
#include "ruby/st.h"
#include "ruby/node.h"
@ -402,7 +402,7 @@ struct rb_unblock_callback {
struct rb_mutex_struct;
struct rb_thread_struct
typedef struct rb_thread_struct
{
VALUE self;
rb_vm_t *vm;
@ -501,7 +501,7 @@ struct rb_thread_struct
/* misc */
int method_missing_reason;
int abort_on_exception;
};
} rb_thread_t;
/* iseq.c */
VALUE rb_iseq_new(NODE*, VALUE, VALUE, VALUE, VALUE);

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

@ -11,12 +11,13 @@
#include "ruby/ruby.h"
#include "ruby/node.h"
#include "vm_core.h"
#include "vm.h"
#define MAX_POSBUF 128
#define VM_CFP_CNT(th, cfp) \
((rb_control_frame_t *)(th->stack + th->stack_size) - (rb_control_frame_t *)(cfp))
static void
control_frame_dump(rb_thread_t *th, rb_control_frame_t *cfp)
{

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

@ -11,19 +11,13 @@
**********************************************************************/
#include "ruby/ruby.h"
#include "ruby/node.h"
#include "ruby/st.h"
#include "vm_method.c"
static inline VALUE method_missing(VALUE obj, ID id, int argc, const VALUE *argv, int call_status);
static inline VALUE rb_vm_set_finish_env(rb_thread_t * th);
static inline VALUE vm_yield_with_cref(rb_thread_t *th, int argc, const VALUE *argv, const NODE *cref);
static inline VALUE vm_yield(rb_thread_t *th, int argc, const VALUE *argv);
static inline VALUE vm_backtrace(rb_thread_t *th, int lev);
static NODE *vm_cref_push(rb_thread_t *th, VALUE klass, int noex);
static VALUE vm_eval_body(rb_thread_t *th);
static VALUE vm_exec(rb_thread_t *th);
static void vm_set_eval_stack(rb_thread_t * th, VALUE iseqval, const NODE *cref);
static inline VALUE
@ -58,7 +52,7 @@ vm_call0(rb_thread_t * th, VALUE klass, VALUE recv, VALUE id, ID oid,
}
vm_setup_method(th, reg_cfp, argc, blockptr, 0, iseqval, recv, klass);
val = vm_eval_body(th);
val = vm_exec(th);
break;
}
case NODE_CFUNC: {
@ -740,7 +734,7 @@ eval_string_with_cref(VALUE self, VALUE src, VALUE scope, NODE *cref, const char
/* kick */
CHECK_STACK_OVERFLOW(th->cfp, iseq->stack_max);
result = vm_eval_body(th);
result = vm_exec(th);
}
POP_TAG();
th->mild_compile_error = mild_compile_error;

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

@ -25,9 +25,17 @@
#endif
/* #define DECL_SC_REG(r, reg) VALUE reg_##r */
#if OPT_STACK_CACHING
static VALUE finish_insn_seq[1] = { BIN(finish_SC_ax_ax) };
#elif OPT_CALL_THREADED_CODE
static VALUE const finish_insn_seq[1] = { 0 };
#else
static VALUE finish_insn_seq[1] = { BIN(finish) };
#endif
#if !OPT_CALL_THREADED_CODE
static VALUE
vm_eval(rb_thread_t *th, VALUE initial)
vm_exec_core(rb_thread_t *th, VALUE initial)
{
#if OPT_STACK_CACHING
@ -104,19 +112,25 @@ vm_eval(rb_thread_t *th, VALUE initial)
goto first;
}
const void **
vm_get_insns_address_table(void)
{
return (const void **)vm_exec_core(0, 0);
}
#else
#include "vm.inc"
#include "vmtc.inc"
const void *const *
get_insns_address_table()
vm_get_insns_address_table(void)
{
return insns_address_table;
}
VALUE
vm_eval(rb_thread_t *th, VALUE initial)
static VALUE
vm_exec_core(rb_thread_t *th, VALUE initial)
{
register rb_control_frame_t *reg_cfp = th->cfp;
VALUE ret;
@ -140,9 +154,3 @@ vm_eval(rb_thread_t *th, VALUE initial)
return ret;
}
#endif
const void **
vm_get_insns_address_table(void)
{
return (const void **)vm_eval(0, 0);
}

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

@ -18,34 +18,6 @@ typedef unsigned long dindex_t;
typedef rb_num_t GENTRY;
typedef rb_iseq_t *ISEQ;
extern VALUE rb_cEnv;
extern VALUE ruby_vm_global_state_version;
extern VALUE ruby_vm_redefined_flag;
/**
* VM Debug Level
*
* debug level:
* 0: no debug output
* 1: show instruction name
* 2: show stack frame when control stack frame is changed
* 3: show stack status
* 4: show register
* 5:
* 10: gc check
*/
#ifndef VMDEBUG
#define VMDEBUG 0
#endif
#if 0
#undef VMDEBUG
#define VMDEBUG 3
#endif
#ifdef COLLECT_USAGE_ANALYSIS
#define USAGE_ANALYSIS_INSN(insn) vm_analysis_insn(insn)
#define USAGE_ANALYSIS_OPERAND(insn, n, op) vm_analysis_operand(insn, n, (VALUE)op)
@ -199,26 +171,8 @@ default: \
#endif
/************************************************/
/************************************************/
#define VM_CFP_CNT(th, cfp) \
((rb_control_frame_t *)(th->stack + th->stack_size) - (rb_control_frame_t *)(cfp))
#define VM_SP_CNT(th, sp) ((sp) - (th)->stack)
/*
env{
env[0] // special (block or prev env)
env[1] // env object
env[2] // prev env val
};
*/
#define ENV_IN_HEAP_P(th, env) \
(!((th)->stack < (env) && (env) < ((th)->stack + (th)->stack_size)))
#define ENV_VAL(env) ((env)[1])
#if OPT_CALL_THREADED_CODE
#define THROW_EXCEPTION(exc) do { \
th->errinfo = (VALUE)(exc); \
@ -230,28 +184,4 @@ default: \
#define SCREG(r) (reg_##r)
/* VM state version */
#define GET_VM_STATE_VERSION() (ruby_vm_global_state_version)
#define INC_VM_STATE_VERSION() \
(ruby_vm_global_state_version = (ruby_vm_global_state_version+1) & 0x8fffffff)
#define BOP_PLUS 0x01
#define BOP_MINUS 0x02
#define BOP_MULT 0x04
#define BOP_DIV 0x08
#define BOP_MOD 0x10
#define BOP_EQ 0x20
#define BOP_LT 0x40
#define BOP_LE 0x80
#define BOP_LTLT 0x100
#define BOP_AREF 0x200
#define BOP_ASET 0x400
#define BOP_LENGTH 0x800
#define BOP_SUCC 0x1000
#define BOP_GT 0x2000
#define BOP_GE 0x4000
#define BOP_NOT 0x8000
#define BOP_NEQ 0x10000
#endif /* RUBY_VM_H */

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

@ -10,12 +10,10 @@
/* finish iseq array */
#include "insns.inc"
#include <math.h>
/* control stack frame */
#ifndef INLINE
#define INLINE inline
#endif
@ -967,6 +965,36 @@ vm_get_cref(const rb_iseq_t *iseq, const VALUE *lfp, const VALUE *dfp)
return cref;
}
static NODE *
vm_cref_push(rb_thread_t *th, VALUE klass, int noex)
{
rb_control_frame_t *cfp = vm_get_ruby_level_caller_cfp(th, th->cfp);
NODE *cref = NEW_BLOCK(klass);
cref->nd_file = 0;
cref->nd_visi = noex;
if (cfp) {
cref->nd_next = vm_get_cref(cfp->iseq, cfp->lfp, cfp->dfp);
}
return cref;
}
static inline VALUE
vm_get_cbase(const rb_iseq_t *iseq, const VALUE *lfp, const VALUE *dfp)
{
NODE *cref = vm_get_cref(iseq, lfp, dfp);
VALUE klass = Qundef;
while (cref) {
if ((klass = cref->nd_clss) != 0) {
break;
}
cref = cref->nd_next;
}
return klass;
}
static inline void
vm_check_if_namespace(VALUE klass)

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

@ -12,11 +12,54 @@
#ifndef RUBY_INSNHELPER_H
#define RUBY_INSNHELPER_H
#include "ruby/ruby.h"
#include "ruby/node.h"
#include "eval_intern.h"
#include "vm_core.h"
#include "vm.h"
/**
* VM Debug Level
*
* debug level:
* 0: no debug output
* 1: show instruction name
* 2: show stack frame when control stack frame is changed
* 3: show stack status
* 4: show register
* 5:
* 10: gc check
*/
#ifndef VMDEBUG
#define VMDEBUG 0
#endif
#if 0
#undef VMDEBUG
#define VMDEBUG 3
#endif
/* VM state version */
extern VALUE ruby_vm_global_state_version;
extern VALUE ruby_vm_redefined_flag;
#define GET_VM_STATE_VERSION() (ruby_vm_global_state_version)
#define INC_VM_STATE_VERSION() \
(ruby_vm_global_state_version = (ruby_vm_global_state_version+1) & 0x8fffffff)
#define BOP_PLUS 0x01
#define BOP_MINUS 0x02
#define BOP_MULT 0x04
#define BOP_DIV 0x08
#define BOP_MOD 0x10
#define BOP_EQ 0x20
#define BOP_LT 0x40
#define BOP_LE 0x80
#define BOP_LTLT 0x100
#define BOP_AREF 0x200
#define BOP_ASET 0x400
#define BOP_LENGTH 0x800
#define BOP_SUCC 0x1000
#define BOP_GT 0x2000
#define BOP_GE 0x4000
#define BOP_NOT 0x8000
#define BOP_NEQ 0x10000
/**********************************************************/
/* deal with stack */

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

@ -1,6 +1,5 @@
/* -*-c-*- */
/*
* This file is included by vm_eval.c
* This file is included by vm.h
*/
#define CACHE_SIZE 0x800