yarv-diff:95
From: ko1 atdot.net
Date: 31 Aug 2005 13:58:44 -0000
Subject: [yarv-diff:95] r251 - in tags: . 0.3.1
Author: ko1
Date: 2005-08-31 22:58:43 +0900 (Wed, 31 Aug 2005)
New Revision: 251
Added:
tags/0.3.1/
tags/0.3.1/ChangeLog
tags/0.3.1/Changes
tags/0.3.1/yarv_version.h
tags/0.3.1/yarvcore.c
Removed:
tags/0.3.1/ChangeLog
tags/0.3.1/Changes
tags/0.3.1/yarv_version.h
tags/0.3.1/yarvcore.c
Log:
0.3.1
Copied: tags/0.3.1 (from rev 249, trunk)
Deleted: tags/0.3.1/ChangeLog
===================================================================
--- trunk/ChangeLog 2005-08-20 01:20:15 UTC (rev 249)
+++ tags/0.3.1/ChangeLog 2005-08-31 13:58:43 UTC (rev 251)
@@ -1,1960 +0,0 @@
-# $Id$
-#
-# YARV ChangeLog
-# from Mon, 03 May 2004 01:24:19 +0900
-#
-
-2005-08-20(Sat) 10:19:27 +0900 Koichi Sasada <ko1 atdot.net>
-
- * rb/ir.rb : add some check
-
- * import today's ruby HEAD
-
-
-2005-08-18(Thu) 23:29:52 +0900 Koichi Sasada <ko1 atdot.net>
-
- * common.mk : fix object file extension
-
- * rb/ir.rb : added (import ruby script)
-
- * rb/diff.rb : removed
-
- * import today's ruby HEAD
-
-
-2005-08-18(Thu) 12:59:38 +0900 Koichi Sasada <ko1 atdot.net>
-
- * common.mk : rule test -> test2, test1 -> test
-
- * compile.c : fix when clause bug and splat arugment
-
-
-2005-08-17(Wed) 05:22:31 +0900 Koichi Sasada <ko1 atdot.net>
-
- * compile.c : fix block local parameter setting routine and support
- massign in block parameter initialze
-
- * yarvtest/test_yield.rb : add tests for above
-
- * insns.def, compile.c : support array concat (ex: "[x, *y]")
-
- * yarvtest/test_bin.rb : add tests for above
-
-
-2005-08-16(Tue) 19:51:19 +0900 Koichi Sasada <ko1 atdot.net>
-
- * compile.c : support nested massign
-
- * yarvtest/test_massign.rb : add tests for above
-
-
-2005-08-16(Tue) 10:25:29 +0900 Koichi Sasada <ko1 atdot.net>
-
- * eval.c : support rb_yield_0 with 0 args
-
-
-2005-08-16(Tue) 09:09:21 +0900 Koichi Sasada <ko1 atdot.net>
-
- * lib/fileutils.rb : imported
-
- * insns.def : fix yield argument (same as last commit)
-
- * yarvtest/test_yield.rb : add tests for above
-
-
-2005-08-16(Tue) 08:29:47 +0900 Koichi Sasada <ko1 atdot.net>
-
- * eval.c : fix to support rb_yield_0 with multiple values
-
- * common.mk : add parse, run1p ruelse
-
- * compile.c : support yield with ARGSCAT/SPLAT
-
- * vm.c, insns.def : fix yield arguments to do compatible behaviour
-
- * yarvtest/test_yield.rb : added for above
-
-
-2005-08-16(Tue) 06:00:17 +0900 Koichi Sasada <ko1 atdot.net>
-
- * insns.def : fix to set klass_nest_stack on singleton
- method definition
-
- * yarvtest/test_method.rb : add a test for above
-
-
-2005-08-16(Tue) 05:34:48 +0900 Koichi Sasada <ko1 atdot.net>
-
- * test1.rb : added. gdb and run1 rule run this script
-
- * compile.c : fix error handled variable access
-
- * yarvtest/test_exception.rb : add tests for above
-
-
-2005-08-16(Tue) 04:26:08 +0900 Koichi Sasada <ko1 atdot.net>
-
- * base ruby : ruby 1.9.0 (2005-08-15)
-
-
-2005-08-16(Tue) 03:54:17 +0900 Koichi Sasada <ko1 atdot.net>
-
- * common.mk, Makefile.in : move some rules to common.mk
-
- * rb/diff.rb : added
-
- * yarvtest/yarvtest.rb : fix to compare output last value
-
-
-2005-08-15(Mon) 18:27:58 +0900 Koichi Sasada <ko1 atdot.net>
-
- * Changes : 0.3.0
-
-
-2005-08-15(Mon) 17:56:09 +0900 Koichi Sasada <ko1 atdot.net>
-
- * yarvcore.c : fix to add prototype
-
- * all files : propset svn:eol-style native
-
-
-2005-08-15(Mon) 10:48:53 +0900 Koichi Sasada <ko1 atdot.net>
-
- * eval.c : support rb_load
-
-
-2005-08-15(Mon) 09:42:01 +0900 Koichi Sasada <ko1 atdot.net>
-
- * yarvcore.h : define SDR()
-
- * vm_dump.c : stack_dump_raw() -> vm_stack_dump_raw()
-
- * yarvtest/yarvtest.rb : add rite test scheme
-
- * benchmark/run_rite.rb : added
-
- * yarvcore.c, inits.c : add Init_vm()
-
- * yarv.h : add some prototype declarations, GET_THREAD()
-
- * eval.c : remove unused functions
-
- * eval.c : support Kernel.eval, some schemes (same as evalc.patch)
-
-
-2005-08-15(Mon) 00:53:28 +0900 Koichi Sasada <ko1 atdot.net>
-
- * yarv_version.h : move configurations to yarvcore.h
-
- * yarvcore.c : remove VALUE yarv_get_current_running_thread() and
- add yarv_thread_t *yarv_get_current_running_thread(), ...
-
- * yarvcore.h : yarv_thread_t#vm -> vm_value
-
- * compile.c : fix "break from nested classes"
-
- * yarvext/extconf.rb : use have_func instead of defined?(YARV_PACHED)
-
- * depend : fix pass
-
- * eval.c : change to kick VM
-
- * version.c : fix to show yarv version
-
- * common.mk : fix dependent
-
- * inits.c : fix to kick Init_yarvcore
-
-
-2005-08-14(Sun) 02:05:15 +0900 Koichi Sasada <ko1 atdot.net>
-
- * README : add description
-
- * yarvext/depend : move to topdir/depend
-
-2005-08-14(Sun) 01:50:43 +0900 Koichi Sasada <ko1 atdot.net>
-
- * merge yarv to ruby (prepare)
-
- * make yarvext/ to build as extension
-
-
-2005-08-13(Sat) 09:36:26 +0900 Koichi Sasada <ko1 atdot.net>
-
- * evalc.patch, insns.def, compile.c : fix to support current
- ruby HEAD.
-
- * 0.2.3
-
-
-2005-08-08(Mon) 19:13:02 +0900 Koichi Sasada <ko1 atdot.net>
-
- * version.h, Changes : 0.2.2
-
-
-2005-08-08(Mon) 17:17:50 +0900 Koichi Sasada <ko1 atdot.net>
-
- * vm.h, vm.c, insns.def, yarvcore.h, yarvcore.c :
- remove yarv_iseq_t#iseq_dt and add yarv_iseq_t#encoded.
- use yarv_iseq_t#encoded anytime
-
- * vm_evalbody.h, vm.h, extconf.rb, version.h :
- support call threaded code (incomplete)
-
-
-2005-08-01(Mon) 05:26:12 +0900 Koichi Sasada <ko1 atdot.net>
-
- * yarvcore.c : support yield with multiple values
-
- * compile.c : fix dynavars
-
- * yarvcore.h : fix to mark defined method
-
-
-2005-07-31(Sun) 23:27:24 +0900 Koichi Sasada <ko1 atdot.net>
-
- * yarvcore.c, vm.c, insns.def : fix search object path
-
- * compile.c : fix "for" statement
-
- * vm_macro.def : fix rest, opt arguments
-
-
-2005-07-31(Sun) 14:52:06 +0900 Koichi Sasada <ko1 atdot.net>
-
- * vm_macro.def : fix block parameter
-
- * compile.c : fix to unuse compile_data->in_ensure
-
- * insns.def : add orphan check when return
-
-
-2005-07-31(Sun) 03:25:05 +0900 Koichi Sasada <ko1 atdot.net>
-
- * vm.c, compile.c, yarvcore.h, insns.def :
- support jump from rescue/ensure/class/module
-
- * test/test_flow.rb : add tests for above fix
-
-
-2005-07-30(Sat) 04:44:33 +0900 Koichi Sasada <ko1 atdot.net>
-
- * yarvcore.h : struct iseq_compile_data_ensure_node_stack is added
-
- * compile.c : insert ensure clause before break/next/redo
-
- * vm.c : fix return/break handling
-
- * yarv.h, vm.c : fix lightweight yield
-
- * vm.c, insns.def, vm_macro.def : change arguments of th_set_env (add sp)
-
- * test/test_flow.rb : added
-
- * test/yarvtest.rb : add ae_flow
-
- * compile.c, vm_macro.def : add tail-call/tail-recursion optimization
- (experimental)
-
-
-2005-07-29(Fri) 20:14:11 +0900 Koichi Sasada <ko1 atdot.net>
-
- * compile.c : make_name_for_block and make_name_with_str
- are added
-
- * insns.def : fix if unmatched size arg size to yield
-
- * test/test_block.rb : add test for above fix
-
- * vm.c : add th_backtrace_each and fix backtrace notation
-
- * yarvcore.c : set top level iseq name to "<main>"
-
-
-2005-07-29(Fri) 13:20:19 +0900 Koichi Sasada <ko1 atdot.net>
-
- * yarvcore.h : fix yarv_iseq_t to pass VC (cl)
-
- * vm_dump.c : ditto
-
- * compile.h : ditto
-
- * insnhelper.h : ditto
-
- * vm_evalbody.h : include 'math.h'
-
- * insns.def, vm.c : raise error when yield without block
-
- * vm.c : implement thread_backtrace
-
- * vm.c, yarvsubst.c, yarv.h : implement thread_yield_light_prepare and
- thread_yield_light_invoke
-
- * yarvcore.c : Integer#times uses yarv specific version
-
-
-2005-07-28(Thu) 21:35:09 +0900 Koichi Sasada <ko1 atdot.net>
-
- * yarvcore.c : add another mark function for thread/stack
-
- * vm_evalbody.h : fix register allocation for x86_64
-
- * vm.h : use asm for tc on x86_64
-
-
-2005-07-28(Thu) 20:17:09 +0900 Koichi Sasada <ko1 atdot.net>
-
- * yarvcore.c : add mark/free message to debug gc
-
- * insnhelper.h, insns.def, vm_macro.def : remove and
- add new RESTORE_REGS
-
- * vm_evalbody.h : fix register allocation
-
-
-2005-07-28(Thu) 02:00:42 +0900 Koichi Sasada <ko1 atdot.net>
-
- * vm.c, etc : change VM stack structure. re-write all
- vm functions to do it
-
- * vm_macro.def : added
-
-
-2005-07-08(Fri) 01:36:49 +0900 Koichi Sasada <ko1 atdot.net>
-
- * insns.def : don't use fmod on AMD64
-
-
-2005-07-08(Fri) 00:14:22 +0900 Koichi Sasada <ko1 atdot.net>
-
- * Changes : added
-
-
-2005-07-07(Thu) 23:54:37 +0900 Koichi Sasada <ko1 atdot.net>
-
- * version.h : 0.3.0
-
-
-2005-07-07(Thu) 23:52:03 +0900 Koichi Sasada <ko1 atdot.net>
-
- * 0.2.1 : released
-
-
-2005-07-07(Thu) 23:50:22 +0900 Koichi Sasada <ko1 atdot.net>
-
- * version.h : 0.2.1
-
-
-2005-07-07(Thu) 23:47:55 +0900 Koichi Sasada <ko1 atdot.net>
-
- * rb/insns2vm.rb, extconf.rb : add --[enable|disable]-opt-unify-all-combination
- and --disable-opts
-
- * vm.h : DISPATCH_ARCH_DEPEND_WAY is only enabled on GCC 3.x
-
-
-2005-07-06(Wed) 13:20:27 +0900 Koichi Sasada <ko1 atdot.net>
-
- * depend, rb/eval.rb : add ITEMS option to benchmark rule
-
- * benchmark/* : changed
-
- * benchmark/other-lang/* : added
-
-
-2005-07-04(Mon) 04:02:15 +0900 Koichi Sasada <ko1 atdot.net>
-
- * yarvcore.h. yarvcore.c : add idDIV, idMOD, idEq, idLength
-
- * compile.c, insns.def : add specialized insn for above method id
-
- * test/test_bin.rb : add tests for above
-
-
-2005-07-03(Sun) 20:31:09 +0900 Koichi Sasada <ko1 atdot.net>
-
- * yarvcore.c, yarvcore.h : remove cYarvThrowObject (unused)
-
- * yarvcore.c, yarvcore.h, insns.def :
- thread_object#stack_mark_poinetr
-
- * depend, rb/eval.rb : BOPT, TOPT -> OPT
-
-
-2005-07-03(Sun) 13:53:47 +0900 Koichi Sasada <ko1 atdot.net>
-
- * compile.c, compile.h : INSN_OBJECT, LABEL_OBJECT -> INSN, LABEL,
- ISEQ_LINK_ELEMENT, ISEQ_LINK_ANCHOR -> LINK_ELEMENT, LINK_ANCHOR,
- and some fixes
-
- * tmpl/optinsn.inc.tmpl : ditto
-
- * yarvcore.c, yarvcore.h : remove label_object, insn_object
- prepare_iseq_build, cleanup_iseq_build are added
-
- * insns.def : remove unused variable from send
-
-
-2005-07-02(Sat) 04:19:22 +0900 Koichi Sasada <ko1 atdot.net>
-
- * insns.def : add GC protect for opt_aset
-
-
-2005-07-02(Sat) 03:49:17 +0900 Koichi Sasada <ko1 atdot.net>
-
- * extconf.rb : add option -fno-reorder-blocks to vm.asm rule
-
- * insns.def : fix opt_aset bugs
-
- * test/test_bin.rb : add tests for aset, aref
-
-
-2005-07-02(Sat) 03:05:12 +0900 Koichi Sasada <ko1 atdot.net>
-
- * benchmark/run.rb : fix output
-
- * vm_evalbody.h : add register for x86_64
-
- * rb/asm_parse.rb : fix to shor size and length
-
-
-2005-07-02(Sat) 02:56:31 +0900 Koichi Sasada <ko1 atdot.net>
-
- * compile.c : move specialized instruction point (new_insn_send)
-
- * insns.def : add opt_aref, opt_aset
-
-
-2005-07-01(Fri) 11:04:11 +0900 Koichi Sasada <ko1 atdot.net>
-
- * compile.h : fix to pass VALUE type to new_insn_body
-
- * insnhelper.h : add cast
-
- * compile.c : fix getdynamic argument (0 == Qfalse -> I2F(0))
-
-
-2005-06-30(Thu) 23:34:10 +0900 Koichi Sasada <ko1 atdot.net>
-
- * rb/eval.rb : add and fix some rules
-
- * rb/insns2vm.rb : generate all
-
- * benchmark/run.rb : add -r (ruby only) option
-
-
-2005-06-30(Thu) 23:25:23 +0900 Koichi Sasada <ko1 atdot.net>
-
- * tmpl/vmtc.inc.tmpl : add const prefix
-
- * /rb/asm_parse.rb, extconf.rb : added and make assembler analised output
-
- * opt_operand.def : add send operands unification
-
- * insnhelper.h : add HEAP_CLASS_OF(obj)
-
- * insns.def : fix opt_plus, opt_ltlt
-
- * vm_evalbody.h : move _tag
-
- * benchmark/run.rb : fix file select
-
-
-2005-06-30(Thu) 06:07:04 +0900 Koichi Sasada <ko1 atdot.net>
-
- * extconf.rb : add collect-usage-analysis option
-
- * opt_operand.def, opt_insn_unif.def : add some rules
-
-
-2005-06-29(Wed) 23:28:44 +0900 Koichi Sasada <ko1 atdot.net>
-
- * yarvcore.h, extconf.rb, vm.h, compile.c :
- DISPATCH_DIRECT_THREADED_CODE, DISPATCH_THREADED_CODE
- -> OPT_DIRECT_THREADED_CODE, OPT_INDIRECT_THREADED_CODE.
- if at least one of then is defined, OPT_THREADED_CODE is defined
-
- * benchmark/* : fix name and parameters
-
- * rb/eval.rb : added for YARV evaluation
-
-
-2005-06-29(Wed) 16:16:52 +0900 Koichi Sasada <ko1 atdot.net>
-
- * benchmark/run.rb : fix output format
-
- * call_cfunc.inc -> call_cfunc.h
-
- * vm.h : add sign by asm statement
-
-
-2005-06-28(Tue) 22:28:40 +0900 Koichi Sasada <ko1 atdot.net>
-
- * vm.c : fix method search
-
-
-2005-06-28(Tue) 22:26:34 +0900 Koichi Sasada <ko1 atdot.net>
-
- * extconf.rb : fix options
-
-
-2005-06-28(Tue) 21:50:58 +0900 Koichi Sasada <ko1 atdot.net>
-
- * benchmark/run.rb : fix output format
-
-
-2005-06-28(Tue) 21:34:54 +0900 Koichi Sasada <ko1 atdot.net>
-
- * depend : add option TOPT to test rules
-
- * benchmark/run.rb : fix output format
-
-
-2005-06-28(Tue) 21:15:54 +0900 Koichi Sasada <ko1 atdot.net>
-
- * compile.c : fix opt_case_dispatch instruction
-
- * benchmark/run.rb : output all usertimes when exit benchmark
-
-
-2005-06-28(Tue) 20:35:55 +0900 Koichi Sasada <ko1 atdot.net>
-
- * extconf.rb, compile.c, tmpl/optinsn.inc.tmpl, vm.c :
- change extconf options
-
-2005-06-28(Tue) 13:20:59 +0900 Koichi Sasada <ko1 atdot.net>
-
- * benchmark/run.rb : add -y, --yarv-only option
-
- * depend : add BOPT to tbench rule
-
-
-2005-06-27(Mon) 23:31:12 +0900 Koichi Sasada <ko1 atdot.net>
-
- * depend : add gdb rule
-
- * vm.h : use inline assembler for x86 (to support gcc 3.4.x)
-
-
-2005-06-27(Mon) 20:04:10 +0900 Koichi Sasada <ko1 atdot.net>
-
- * yarvcore.c, compile.c, disasm.c : remove unused variables
-
- * vm.h, insnhelper.h, debug.h : fix to reduce warning
-
- * vm.c, vm_dump.c : move VM state dump (debug) functions to vm_dump.c
-
- * depend : adde reconf rule
-
- * insnhelper.h :
-
- * vm_evalbody.inc : rename to vm_evalbody.h
-
-
-2005-06-27(Mon) 16:50:31 +0900 Koichi Sasada <ko1 atdot.net>
-
- * insns2vm.rb : fix generating unif insn
-
- * compile.c : add useless pop/swap insn elimination with stack caching
-
- * depend : remove compiled.o dependency
-
-
-2005-06-26(Sun) 14:06:22 +0900 Koichi Sasada <ko1 atdot.net>
-
- * benchmark/run.rb : use tmpfile instead of popen
-
- * rb/insns2vm.rb : fix generating insn unification logic
-
- * opt_insn_unif.def : add some unification rules
-
- * compile.c : add verify_list function and fix unification logic
-
-
-2005-06-22(Wed) 12:58:26 +0900 Koichi Sasada <ko1 atdot.net>
-
- * yarvcore.h, yarvcore.c, insns.def, compile.c : add mult optimization
-
- * test/test_bin.rb : add test_fact
-
-
-2005-06-21(Tue) 22:34:07 +0900 Koichi Sasada <ko1 atdot.net>
-
- * yarvcore.h, compile.[ch], tmpl/optinsn.inc.tmpl, rb/insns2vm.rb :
- change data structure (don't use Ruby's array to represent a
- instruction sequence)
-
- * disasm.c : add separator
-
-
-2005-06-14(Tue) 07:48:58 +0900 Koichi Sasada <ko1 atdot.net>
-
- * compile.c : support "for" statement
-
- * test/test_block.rb : add test for above
-
- * yarvcore.[ch] : add global id idEach
-
-
-2005-06-08(Wed) 22:30:44 +0900 Koichi Sasada <ko1 atdot.net>
-
- * compile.c : add if/unless(L1) jump (L2) :L1 => unless/if(L2)
- optimize (condition reversal) and fix typo
-
-
-2005-06-07(Tue) 08:29:41 +0900 Koichi Sasada <ko1 atdot.net>
-
- * yarvcore.c : fix to remove compiler warning
-
- * version.h : 0.2.1
-
-
-2005-06-07(Tue) 08:16:22 +0900 Koichi Sasada <ko1 atdot.net>
-
- * yarvcore.h : iseq_link_element changed to double linked list
-
- * disasm.c : support dump struct iseq_link_element
-
- * compile.c : use double linked list instead of array
- for intermediate representation
-
-
-2005-06-06(Mon) 15:38:44 +0900 Koichi Sasada <ko1 atdot.net>
-
- * yarvcore.h, yarvcore.c : add link structure to insn and label object
-
- * compile.h, compile.c : remove some variables in function top scope
- of iseq_compile_each and some optimization (now working)
-
-
-2005-06-04(Sat) 16:12:59 +0900 Koichi Sasada <ko1 atdot.net>
-
- * compile.c : fix previous commit
-
-
-2005-06-04(Sat) 15:56:21 +0900 Koichi Sasada <ko1 atdot.net>
-
- * compile.c : fix stack caching (after jump state)
-
-
-2005-06-04(Sat) 09:12:13 +0900 Koichi Sasada <ko1 atdot.net>
-
- * compile.c : fix some point for previous commit
-
-
-2005-06-04(Sat) 07:31:21 +0900 Koichi Sasada <ko1 atdot.net>
-
- * compile.c, insns.def : optimize case/when statement
- (dispatch on constant time)
-
- * yarvcore.h, disasm.c, rb/insns2vm.rb : fixed for above
- (CDHASH)
-
- * test/test_syn.rb : add test for above
-
-
-2005-06-04(Sat) 03:41:29 +0900 Koichi Sasada <ko1 atdot.net>
-
- * yarvcore.h, yarvcore.c : add some temporary variable test
- (it'll be vanished)
-
- * compile.c : NODE_CASE optimize (use topn instead of dup/swap)
-
-
-2005-06-03(Fri) 00:54:38 +0900 Koichi Sasada <ko1 atdot.net>
-
- * compile.c : apply flow optimization for while/until statement
-
-
-2005-03-04(Fri) 19:34:32 +0900 Koichi Sasada <ko1 atdot.net>
-
- * rb/insns2vm.rb : fix category (comment)
-
- * depend : remove space betweeen target name and colon
-
-
-2005-03-04(Fri) 15:55:51 +0900 Koichi Sasada <ko1 atdot.net>
-
- * tmpl/yarvarch.ja : fix typo
-
-
-2005-03-04(Fri) 13:30:19 +0900 Koichi Sasada <ko1 atdot.net>
-
- * depend : add a rule for jitcompile.o
-
- * vm.h : fix a macro argument
-
- * version.h : 0.2.0
-
-
-2005-03-03(Thu) 08:35:14 +0900 Koichi Sasada <ko1 atdot.net>
-
- * extconf.rb : remove vm_evalbody.inc call_cfunc.inc from clean target
-
-
-2005-03-03(Thu) 00:54:15 +0900 Koichi Sasada <ko1 atdot.net>
-
- * tmpl/insns.inc.tmpl : fixed typo
-
- * insns.def : store th->pc to current pc
-
-
-2005-03-03(Thu) 00:31:47 +0900 Koichi Sasada <ko1 atdot.net>
-
- * tmpl/yarvarch.ja, doc/yarv.rb : write current architecture of yarv
-
-
-2005-03-01(Tue) 13:50:04 +0900 Koichi Sasada <ko1 atdot.net>
-
- * yarvcore.c (yarvcore_eval_parsed) : added
- (separeted from yarvcore_eval)
-
- * yarvcore.c, compile.c : iseq_translate_direct_threaded_code
- is moved to compile.c
-
- * depend : add rule for yasmdata.rb
-
- * rb/yasm.rb : support top-level and method-level assemble
-
-
-2005-02-26(Sat) 08:09:57 +0900 Koichi Sasada <ko1 atdot.net>
-
- * rb/insns2vm.rb, compile.c, vm.h : change type long to OFFSET
-
- * tmpl/yasmdata.rb.tmpl : added
-
- * rb/insns2vm.rb : add yasmdata_rb method
-
- * rb/yasm.rb : fix some interface (incomplete)
-
- * compile.c : iseq_setup added
-
- * yarvcore.c : YARVCore::InstructionSequence::Instruction#make added
-
-
-2005-02-24(Thu) 07:45:37 +0900 Koichi Sasada <ko1 atdot.net>
-
- * rb/yasm.rb : added
-
-
-2005-02-24(Thu) 01:13:33 +0900 Koichi Sasada <ko1 atdot.net>
-
- * compile.c : remove useless statements
-
-
-2005-02-24(Thu) 00:46:44 +0900 Koichi Sasada <ko1 atdot.net>
-
- * rb/insns2vm.rb (InsnInfo) : add @is_sc attr and remove
- is_sc method
-
- * compile.c : fix NODE_CASE/NODE_WHEN bug (cond at 'when'
- must not be popped)
-
- * compile.c : support NODE_OP_ASGN1 to &&= and ||=
-
- * test/test_bin.rb : add tests for above
-
-
-2005-02-23(Wed) 09:17:01 +0900 Koichi Sasada <ko1 atdot.net>
-
- * vm.c, yarvcore.c : thread_svar added and fix svar location
-
-
-2005-02-21(Mon) 08:38:02 +0900 Koichi Sasada <ko1 atdot.net>
-
- * yarvcore.h : make type "struct iseq_compile_data"
-
- * yarvcore.h : iseq_object#insn_info_ary to iseq_object#insn_info_tbl
-
-
-2005-02-21(Mon) 05:24:01 +0900 Koichi Sasada <ko1 atdot.net>
-
- * yarvcore.c (compile_string) : remove null check of node
-
-
-2005-02-19(Sat) 03:52:45 +0900 Koichi Sasada <ko1 atdot.net>
-
- * version.h : 0.1.1
-
-
-2005-02-18(Fri) 20:57:18 +0900 Koichi Sasada <ko1 atdot.net>
-
- * yarvcore.h, yarvcore.c : add idLTLT, idMethodMissing
-
- * compile.c : suopport lval (or others) block parameter
-
- * test/test_block.rb : add tests for above
-
- * insns.def (send) : support method_missing
-
- * test/test_method.rb : add tests for above
-
- * insns.def : opt_ltlt and
-
-
-2005-02-18(Fri) 08:54:40 +0900 Koichi Sasada <ko1 atdot.net>
-
- * benchmark/runc.rb : added
-
- * benchmark/contrib/pentomino.rb : added opt_ltlt
- and Float, String plus specialization
-
-
-2005-02-18(Fri) 07:49:42 +0900 Koichi Sasada <ko1 atdot.net>
-
- * compile.c : remove debug print
-
- * rb/aotcompile.rb : skip if yarvcore.so is not created
-
-
-2005-02-18(Fri) 06:46:13 +0900 Koichi Sasada <ko1 atdot.net>
-
- * compile.c : fix block passing
- and block argument
-
-
-2005-02-18(Fri) 05:52:41 +0900 Koichi Sasada <ko1 atdot.net>
-
- * vm.c : thread_get_ev_const, thread_get_ev_defined is added
- (separated from insns.def)
-
- * insnhelper.h : GET_EV_KLASS(klass) is added
- (separated from insns.def)
-
- * yarvcore.h, insns.def, compile.c : support defined? expression (limited)
-
- * test/test_syn.rb : tests for above is added
-
- * compile.c, insns.def : support block passed method dispatch
-
- * test/test_method.rb : tests for above is added
-
- * compile.h : CALL_ARGS_SPLAT is removed
-
-
-2005-02-16(Wed) 13:32:37 +0900 Koichi Sasada <ko1 atdot.net>
-
- * disasm.c : fix ID to String method
-
- * compile.c : NODE_SUPER, NODE_ZSUPER check 'poped'
- and NODE_RETURN check outer type
- and NODE_DREGX_ONCE supported (temporarily)
-
- * test/test_syn.rb : add a test
-
- * test/test_jump.rb : add a test
-
-
-2005-02-16(Wed) 06:07:41 +0900 Koichi Sasada <ko1 atdot.net>
-
- * compile.[hc] : use Symbol instead of Fixnum to represent ID
-
- * rb/insns2vm.rb : add attr_reader :insns, :insn_map
-
- * vm.h, rb/insns2vm.rb : END_INSN have one arg
-
- * jitcompile.c : jit compiler framework (experimental)
-
- * rb/aotcompile.rb : refactoring
-
- * compiled.c : add constant pool
-
- * vm_evalbody.inc, call_cfunc.inc, vm.c : separeted from vm.c
-
- * insns.def : fix return val
-
- * depend : add rules for compiled.o
-
-
-2005-02-14(Mon) 13:09:01 +0900 Koichi Sasada <ko1 atdot.net>
-
- * insnhelper.h, yarvcore.h: move YARV_METHOD_NODE to yarvcore.h
-
- * yarvcore.h : add 2 members jit_compiled and iseq_orig
- to struct iseq_object
-
- * yarvcore.c : add yarv_jitcompile and global function jitcompile
-
- * insns.def : insn opt_call_native_compiled added
-
- * jitcompile.c : added
-
-
-2005-02-12(Sat) 05:38:51 +0900 Koichi Sasada <ko1 atdot.net>
-
- * insns.def (putstring) : fixed to duplicate string object
-
- * rb/insns2vm.rb, tmpl/optunifs.inc.tmpl, compile.c : support
- instructions unification (aka super instruction)
-
- * opt_insn_unif.def : added for above
-
- * benchmark/bm_unif1.rb : added to measure efficiency of unification
-
- * depend : fixed for above
-
- * extconf.rb : add option --(enable|disalbe)-opt-insns-unification
-
-
-2005-02-11(Fri) 12:14:39 +0900 Koichi Sasada <ko1 atdot.net>
-
- * yarvcore.c, vm.c, insns.def : permit to access svar from
- cfunc environment
-
- * test/test_method.rb : add tests for above
-
-
-2005-02-09(Wed) 19:31:06 +0900 Koichi Sasada <ko1 atdot.net>
-
- * ite.rb : added (ruby -rite [script file])
-
-
-2005-02-09(Wed) 02:25:43 +0900 Koichi Sasada <ko1 atdot.net>
-
- * yarvcore.[hc] : add member compile_data (hash) to iseq_object
-
- * compile.c, yarvcore.h : check label is already set
-
- * compile.c, extconf.rb : support __goto__ and __label__ statement
-
-
-2005-01-25(Tue) 12:49:27 +0900 Koichi Sasada <ko1 atdot.net>
-
- * test/test_block.rb : add break test to test_times
-
-
-2005-01-25(Tue) 03:34:04 +0900 Koichi Sasada <ko1 atdot.net>
-
- * extconf.rb : check ruby version if yarv patch is applied or not
-
- * evalc.patch : fixed for rb_call_super and above check
-
-
-2005-01-25(Tue) 03:21:48 +0900 Koichi Sasada <ko1 atdot.net>
-
- * rb/insns2vm.rb : refactoring (mainly, make InsnsDef::InsnInfo
- to represent each instruction information)
-
- * depend, rb/makedocs.rb : fixed for above
-
- * yarvcore.c (thread_call_super) : added
-
- * vm.c (thread_call_super) : added
-
- * vm.h : add struct cmethod_info
-
- * insns.def, vm.c : use cmethod_info to represent C method info
-
- * insns.def : use iseq_object#klass_nest_stack
- to search super/zsuper's class
-
- * prosym.rb : removed
-
- * ToDo : write todo things on wiki
-
-
-
-2005-01-18(Tue) 23:44:47 +0900 Koichi Sasada <ko1 atdot.net>
-
- * benchmark/run.rb : check ENV['RUBY'] to use ruby binary
-
-
-2005-01-10(Mon) 08:44:40 +0900 Koichi Sasada <ko1 atdot.net>
-
- * version.h : 0.1.0
-
-
-2005-01-09(Sun) 22:01:29 +0900 Koichi Sasada <ko1 atdot.net>
-
- * repository : svn propset svn:eol-style native *.c *.h tmpl/*.tmpl
-
-
-2005-01-09(Sun) 21:48:38 +0900 Koichi Sasada <ko1 atdot.net>
-
- * yarvcore.c : FREE_UNLESS_NULL, MARK_UNLESS_NULL macros are added
-
- * yarvcore.c : some insn/label methods are added
-
- * yarvcore.h : add structure menber "insns_ary" to iseq_object
-
- * vm.c, insns.def (thread_eval_body) : return values with throw
-
- * prosym.rb : added
-
- * insns.def : add YARV_AOT_COMPILED and some procedure
-
- * depend : add compiled.c
-
- * compiled.c : added to build compiled Ruby program (C source)
- by AOT compiler
-
- * rb/aotcompile.rb : AOT compiler
-
- * aotct.rb, rb/aotctest.rb : test and benchmark AOT compiler
-
- * rb/allload.rb : added
-
-
-2005-01-09(Sun) 08:30:38 +0900 Koichi Sasada <ko1 atdot.net>
-
- * yarvcore.c (yarv_yield_values) : added
-
- * vm.c (thread_call0) : change interface. substitute rb_call0 in
- yarv environment
-
- * yarvcore.c (yarv_call0) : fix for above
-
- * yarvcore.c (yarv_call0_cfunc) : removed
-
- * yarvcore.c : change passing items for yarv_setup
-
- * evalc.patch : fix for above
-
- * benchmark/bm_lists.rb : fix (unsupport block passing)
-
- * benchmark/run.rb : use full path to ruby
-
- * insns.def (yield): raise error if argc > expected argc
-
-
-2005-01-08(Sat) 16:07:48 +0900 Koichi Sasada <ko1 atdot.net>
-
- * extconf.rb : add descrioptions
-
- * compile.c : fix bugs (getinlinecache operands)
-
- * yarvcore.c : initial value of yarvGlobalStateVersion
- to 1
-
-
-2005-01-08(Sat) 14:39:04 +0900 Koichi Sasada <ko1 atdot.net>
-
- * yarvcore.c, vm.c, evalc.patch : support making backtrace
- (incompatible with current ruby interpreter)
-
-
-2005-01-08(Sat) 11:25:46 +0900 Koichi Sasada <ko1 atdot.net>
-
- * evalc.patch : commit for previous commit change
-
- * yarvcore.h, compile.c, insns.def : MC to IC (inline cache),
- and changed to using IC by set/getinlinecache
-
-
-2005-01-08(Sat) 10:04:33 +0900 Koichi Sasada <ko1 atdot.net>
-
- * yarvcore.c : add global variable sym[IC]FUNC
-
- * yarvcore.c (yarv_iterate, yarv_call0_cfunc) : added
- (each called from rb_iterate, rb_call0 with NODE_CFUNC)
-
- * vm.c (stack_dump_raw) : fixed to prints more detail
-
- * vm.c (stack_dump_th, stack_dump_thobj) : added to
- dumps thread_object states (for VALUE, struct pointer)
-
- * vm.c (thread_dump_regs) : added
-
- * vm.c (thread_call0, thread_call0_cfunc, thread_invoke_yield,
- thread_invoke_yield_cfunc), insns.def (yield, send) :
- fixed, added to support IFUNC
-
- * vm.c, yarvcore.c, insns.def : change type purpose
- thread_object#block_ptr (it holds IFUNC block information,
- so this type was changed to 'NODE *')
-
- * vm.c (stack_dump_each) : fixed for above
-
- * test/test_block.rb (test_ifunc) : test for above
-
- * vm.c (get_block_objec, thread_make_env_object) : fixed bugs
-
- * test/test_bin.rb (test_xstr) : remove `ls` test
-
-
-2005-01-06(Thu) 21:35:18 +0900 Koichi Sasada <ko1 atdot.net>
-
- * yarv : trying to support NODE_IFUNC (rb_iterate)
-
-
-2005-01-05(Wed) 06:50:42 +0900 Koichi Sasada <ko1 atdot.net>
-
- * yarvcore.h, insns.def, disasm.c, rb/insns2vm.rb, compile.[ch] :
- support inline method cache
-
- * extconf.rb : add -*-inline-method-cache (default: enable)
-
- * test/test_method.rb : add a test for above
-
- * benchmark/bm_poly_method.rb : added
-
- * yarvcore.c : add option string
-
-
-2005-01-04(Tue) 17:15:41 +0900 Koichi Sasada <ko1 atdot.net>
-
- * insns.def, compile.c : add compile_array and duparray insn
- to optimize only literal array creation
-
- * benchmark/bm_array.rb : added
-
-
-2005-01-04(Tue) 10:02:40 +0900 Koichi Sasada <ko1 atdot.net>
-
- * README : fix version
-
-
-2005-01-04(Tue) 09:57:25 +0900 Koichi Sasada <ko1 atdot.net>
-
- * ToDo : reflect current status
-
-
-2005-01-04(Tue) 09:43:54 +0900 Koichi Sasada <ko1 atdot.net>
-
- * compile.c : support NODE_VALUES, NODE_ARGSCAT, NODE_SPLAT
-
- * test/test_massign.rb : add tests for above
-
- * benchmark/bm_swap.rb : added
-
-
-2005-01-04(Tue) 06:25:45 +0900 Koichi Sasada <ko1 atdot.net>
-
- * compile.h : COMPILE_ERROR break contol (instead of return)
-
- * compile.c : support NODE_MASGN
-
- * insns.def : change expandarray for massign and add topn insn
-
- * test/test_massign.rb : added
-
-
-2005-01-03(Mon) 21:20:28 +0900 Koichi Sasada <ko1 atdot.net>
-
- * vm.c : store block when create proc
-
- * test/test_proc.rb : add a test for above change
-
- * yarvcore.c : add global function "once"
-
-
-2005-01-02(Sun) 00:40:08 +0900 Koichi Sasada <ko1 atdot.net>
-
- * benchmark/bm_super.rb : fix bug (remove infinite loop)
-
-
-2005-01-01(Sat) 23:45:49 +0900 Koichi Sasada <ko1 atdot.net>
-
- * benchmark/bm_z?super.rb : added
-
-
-2005-01-01(Sat) 23:37:38 +0900 Koichi Sasada <ko1 atdot.net>
-
- * benchmark/bmx_so_object.rb : rename to benchmark/bm_so_object.rb
-
-
-2005-01-01(Sat) 23:19:02 +0900 Koichi Sasada <ko1 atdot.net>
-
- * compile.c : support NODE_OP_ASGN2, NODE_OP_ASGN_AND, NODE_OP_ASGN_OR,
- NODE_SUPER, NODE_ZSUPER, NODE_MATCH
-
- * insns.def : support super, zsuper (currently, super can't
- handle with block)
-
- * test/test_bin.rb : add test for op_asgin2, op_assgin_and/or
-
- * test/test_class.rb : add test for super, zsuper
-
-
-2005-01-01(Sat) 20:39:29 +0900 Koichi Sasada <ko1 atdot.net>
-
- * compile.c : support NODE_MATCH
-
- * yarvcore.c : fix yarv_svar bug (fix condition boundary)
-
- * insnhelper.h : save cfp/lfp/dfp vars to thread_object (th)
-
-
-2005-01-01(Sat) 20:03:10 +0900 Koichi Sasada <ko1 atdot.net>
-
- * version.h : 0.0.1
-
- * yarvcore.h : add idIntern declaration
-
- * insns.def : add getspecial, setspecial.
- implement getclassvariable, setclassvariable.
- store lfp before reg match (opt_regexpmatch1)
-
- * compile.c : support ditto, flipflop
-
- * yarvcore.c : support svar
-
- * test/test_syn.rb : add test for flipflop
-
- * test/test_bin.rb : add test for dsym, cvar, backref
-
-
-2005-01-01(Sat) 09:09:32 +0900 Koichi Sasada <ko1 atdot.net>
-
- * insns.def : add getspecial insn
-
- * compile.c : support NODE_NTH_REF, NODE_BACK_REF
-
-
-2005-01-01(Sat) 06:53:38 +0900 Koichi Sasada <ko1 atdot.net>
-
- * insns.def, compile.c : support alias, undef
-
- * test/test_method.rb : test for above
-
- * rb/insns2vm.rb : fix enbug
-
-
-2005-01-01(Sat) 06:00:32 +0900 Koichi Sasada <ko1 atdot.net>
-
- * test/test_jump.rb : add test (next with value)
-
- * yarvcore.h, yarvcore.c, compile.c, compile.h :
- raise compile error exception instead of rb_bug
-
- * yarvcore.c, evalc.patch : support "require"
-
- * test.rb : restore $" after evaluation with ruby
-
- * rb/insns2vm.rb : remove unnecesary each
-
-
-2004-12-17(Fri) 18:56:38 +0900 Koichi Sasada <ko1 atdot.net>
-
- * insns.def : fix newhash
-
-
-2004-12-15(Wed) 13:29:27 +0900 Koichi Sasada <ko1 atdot.net>
-
- * yarvcore.c : add version string
-
- * compile.c : fix rescure clause bug
-
-
-2004-12-14(Tue) 22:46:30 +0900 Koichi Sasada <ko1 atdot.net>
-
- * insns.def : add reput insn
-
- * vm.h : show stack cache registers when stack dump
-
- * rb/insns2vm.rb, compile.c : fix stack caching bugs
-
-
-2004-12-14(Tue) 00:51:58 +0900 Koichi Sasada <ko1 atdot.net>
-
- * insns2vm.rb, compile.c, tmpl/opt_sc.inc.tmpl : fix bugs
-
- * rb/mixc-asm.rb : added
-
-
-2004-12-14(Tue) 00:17:02 +0900 Koichi Sasada <ko1 atdot.net>
-
- * yarvcore.h, yarvcore.c, compile.c : fix SC bugs
- (SC state management)
-
- * extconf.rb : add option -[enable|disable]-opt-stack-caching
-
- * insns2vm.rb : accept CPPFLAGS options
-
- * vm.c : support restrore register for pc
-
-
-2004-12-13(Mon) 16:53:42 +0900 Koichi Sasada <ko1 atdot.net>
-
- * rb/insns2vm.rb : add macro INSN_IS_SC()
-
-
-2004-12-11(Sat) 10:51:44 +0900 Koichi Sasada <ko1 atdot.net>
-
- * insns.def, compile.c : support singleton method definition
-
- * test/test_method.rb : add test for above
-
-
-2004-12-11(Sat) 03:17:54 +0900 Koichi Sasada <ko1 atdot.net>
-
- * benchmark/*.rb : modify
-
- * extconf.rb : add $cleanfiles
-
-
-2004-12-08(Wed) 13:01:38 +0900 Koichi Sasada <ko1 atdot.net>
-
- * compile.c, insns.def : change to disable stack caching
-
-
-2004-12-07(Tue) 19:37:13 +0900 Koichi Sasada <ko1 atdot.net>
-
- * rb/insns2vm.rb : add default after
-
- * insns.def : fix to work on stack caching
-
-
-2004-12-07(Tue) 15:07:13 +0900 Koichi Sasada <ko1 atdot.net>
-
- * depend : add some dependency to *.inc files
-
- * vm.c : add "register" and asm("regname") descriptor
-
- * rb/insns2vm.rb, compile.c : add stack caching support
-
- * tmpl/opt_sc.inc.tmpl : added to above change
-
- * rb/makedocs.rb : fix file path
-
- * extconf.rb : fix option selection
-
-
-2004-12-06(Mon) 11:20:11 +0900 Koichi Sasada <ko1 atdot.net>
-
- * extconf.rb : add vm.asm target if compiler is gcc
-
-
-2004-12-06(Mon) 09:56:24 +0900 Koichi Sasada <ko1 atdot.net>
-
- * vm.h : rename method_frame's member block to block_ptr
-
- * extconf.rb : add "-fno-crossjumping" option when compiler
- is gcc
-
- * opt_operand.def : add unification insn send
-
- * rb/insns2vm.rb : define symbol instead of declare const
- variable (for more optmize on VC)
-
- * insns.def : move enter point in send
-
-
-2004-12-06(Mon) 04:53:51 +0900 Koichi Sasada <ko1 atdot.net>
-
- * compile.c, opt_operand.def, rb/insns2vm.rb, depend :
- support operand unification
-
-
-2004-12-05(Sun) 03:16:10 +0900 Koichi Sasada <ko1 atdot.net>
-
- * vm.c, insns.def : speed up throw/catch scheme
-
-
-2004-12-05(Sun) 01:47:05 +0900 Koichi Sasada <ko1 atdot.net>
-
- * vm.c : fix catch handler bugs
-
- * test/test_jump.rb : test_complex_jump added
-
-
-2004-12-03(Fri) 20:39:05 +0900 Koichi Sasada <ko1 atdot.net>
-
- * benchmark/contrib/mcq.rb : added
- (from URABE Syouhei)
-
-
-2004-12-03(Fri) 20:35:28 +0900 Koichi Sasada <ko1 atdot.net>
-
- * vm.c : support break in rb_yield block
-
-
-2004-12-03(Fri) 14:26:35 +0900 Koichi Sasada <ko1 atdot.net>
-
- * compile.c : support block local variable in current
- ruby specification (patche from Kent Sibilev)
-
- * insns.def : support attr_* (patch from Kent Sibilev)
-
-
-2004-12-02(Thu) 21:04:27 +0900 Koichi Sasada <ko1 atdot.net>
-
- * opt_operand.def : added
-
-
-2004-12-02(Thu) 13:20:41 +0900 Koichi Sasada <ko1 atdot.net>
-
- * yarvcore.c, vm.h, vm.c, insns.def, insnhelper.h, yarvutil.rb :
- add usage analisys framework
-
- * disasm.c : insn_operand_intern to separate function
-
- * benchmark/run.rb : run each benchmark on another process
-
-
-2004-12-01(Wed) 10:26:49 +0900 Koichi Sasada <ko1 atdot.net>
-
- * vm.c : yield check block is given
-
- * benchmark/bm_lists.rb : rename to bmx_lists.rb
- (because it's not work ... bug?)
-
- * insns.def : opt_* support other type calc
-
-
-2004-11-30(Tue) 16:14:54 +0900 Koichi Sasada <ko1 atdot.net>
-
- * benchmark/bm_so_array.rb : added
-
- * benchmark/bm_so_matrix.rb : added
-
-
-2004-11-30(Tue) 14:11:30 +0900 Koichi Sasada <ko1 atdot.net>
-
- * rb/getrev.rb : added
-
- * yarvcore.c : add YARVCore::REV, YARVCore::DATE constant
-
-
-2004-11-30(Tue) 13:05:42 +0900 Koichi Sasada <ko1 atdot.net>
-
- * compile.c : support NODE_OP_ASGN1 (incomplete)
-
- * insns.def : add dupn
-
-
-2004-11-30(Tue) 08:52:01 +0900 Koichi Sasada <ko1 atdot.net>
-
- * version.h : 0.0.0.f
-
-
-2004-11-30(Tue) 08:43:59 +0900 Koichi Sasada <ko1 atdot.net>
-
- * test/test_class.rb : add test_initialize and test_to_s
-
- * yarvsubst.c : use rb_funcall instead of yarv_funcall
-
- * evalc.patch : fix ruby's patch
-
- * benchmark/bm_so_*.rb : change naming rule. "bm_so_*" from
- language shootout
-
- * depend : tbench target item is ITEM env val (default: bmx_temp)
-
- * vm.c : show raw address if environment is in heap at dumping stack trace
-
- * vm.c : thread_call0 added
-
- * vm.c : fix thread_yield_light_invoke
-
- * yarv.h, yarvcore.c : remove yarv_funcall
-
-
-2004-11-29(Mon) 11:37:08 +0900 Koichi Sasada <ko1 atdot.net>
-
- * test/test/test_proc.rb : add test test_nestproc
-
- * yarvsubst.c : comment out yarv_Array_each
-
- * insns.def : restore lfp/dfp after call_cfunc
-
- * vm.c : fix stack dump routine
-
- * vm.c : impliment thread_funcall (temporarily)
-
- * yarv.h : add IS_YARV_WORKING(), SET_YARV_START(), SET_YARV_STOP()
-
- * yarvcore.c : remove check with yarv_in_work
-
- * evalc.patch : added
-
-
-2004-11-27(Sat) 00:19:52 +0900 Koichi Sasada <ko1 atdot.net>
-
- * yarvcore.c : free -> ruby_xfree
-
-
-2004-11-26(Fri) 02:11:11 +0900 Koichi Sasada <ko1 atdot.net>
-
- * vm,c : fix bug
-
-
-2004-11-22(Mon) 11:19:48 +0900 Koichi Sasada <ko1 atdot.net>
-
- * benchmark/bm_ackermann.rb, bm_proc.rb, bm_simpleiter.rb,
- bm_so_exception.rb, bm_wc.rb, wc.input added
-
-
-2004-11-22(Mon) 02:31:56 +0900 Koichi Sasada <ko1 atdot.net>
-
- * test/test_proc.rb : add some test
-
- * yarvcore.c, vm.c : support yield in C method (as rb_yield)
-
- * vm.c (thread_yield_light_(prepare|invoke)) : support lightweight
- yield
-
- * yarv.h : added
-
- * yarvcore.c, yarv.h : support yarv_is_working, yarv_block_given_p,
- yarv_yield, yarv_funcall (only dummy function)
-
- * vm.c : thread_eval_body changed return value
-
- * yarvsubst.c : added and add yarv_Integer_times, yarv_Array_each
-
- * yarvcore.h : block_ptr is added to struct thread_object
-
- * insns.def : pass block when C method call
-
- * insnhelper.h : add GET_ISEQOBJ(cfp) macro
-
-
-2004-11-21(Sun) 07:25:49 +0900 Koichi Sasada <ko1 atdot.net>
-
- * vm.c : support Proc#call
-
- * test/test_proc.rb : added
-
-
-2004-11-19(Fri) 18:04:10 +0900 Koichi Sasada <ko1 atdot.net>
-
- * insns.def, vm.c : support creating Proc object
-
-
-2004-11-15(Mon) 14:19:27 +0900 Koichi Sasada <ko1 atdot.net>
-
- * insns.def (send) : use clear_local_size to specify
- clear local table vars.
-
- * insns.def : block represent data shares lfp, dfp with frame data
-
-
-2004-11-13(Sat) 18:19:41 +0900 Koichi Sasada <ko1 atdot.net>
-
- * yarvcore.h, insns.def : add VM_CALL_ARGS_SPLAT_BIT and
- VM_CALL_ARGS_BLOCKARG_BIT
-
- * compile.c, compile.h : add ADD_SEND, ADD_SEND_R
-
-
-2004-11-10(Wed) 08:26:25 +0900 Koichi Sasada <ko1 atdot.net>
-
- * add "vm_" prefix to (block_object, proc_object, env_object)
-
-
-2004-11-03(Wed) 15:52:14 +0900 Koichi Sasada <ko1 atdot.net>
-
- * yarvcore.h, yarvcore.c, disasm.c, compile.c, insns.def, vm.c :
- fix to move x86_64 (illegal cast, etc)
-
-
-2004-11-01(Mon) 04:45:54 +0900 Koichi Sasada <ko1 atdot.net>
-
- * yarvcore.h, compile.c, debug.c, version.h :
- redesgin gc debug scheme (GC_CHECK())
-
- * yarvcore.c : mark iseqobj->current_block on GC
-
- * insns.def, compile.c : last "throw" in ensure/rescue block
- use operand throwobj and before this insn, use "getdynamic 0, 1"
-
- * benchmark/bm_temp.rb : move to benchmark bmx_temp.rb
-
- * depend : change some targets
-
-
-2004-10-25(Mon) 19:57:58 +0900 Koichi Sasada <ko1 atdot.net>
-
- * compile.c : push exception iseq to iseqobj->iseq_mark_ary
- to mark for GC
-
-
-2004-10-10(Sun) 16:25:03 +0900 Koichi Sasada <ko1 atdot.net>
-
- * compile.c : remove $_, $' area from method local frame
- and provide that's special method local variables pointer(LFP[-1])
-
- * disasm.c : change environment showing format
-
- * yarvcore.(h|c) : add YarvProc, YarvEnv
-
- * yarvcore.h : add arg_block field to iseq_object
- and init -1 as default value
-
-
-2004-09-30(Thu) 19:50:48 +0900 Koichi Sasada <ko1 atdot.net>
-
- * compile.c, insns.def : support passing splat argument
-
- * compile.c, insns.def : support rest argument
-
- * compile.c, insns.def : support optional argument initializer
-
- * test/test_method.rb : add tests for above
-
-
-2004-09-29(Wed) 10:50:03 +0900 Koichi Sasada <ko1 atdot.net>
-
- * compile.c : fix rescue clause popped
-
- * benchmark/bm_random.rb : move to benchmark/bmx_random.rb
-
-
-2004-09-29(Wed) 01:25:35 +0900 Koichi Sasada <ko1 atdot.net>
-
- * many many files: change stack frame design
-
-
-2004-09-16(Thu) 08:51:37 +0900 Koichi Sasada <ko1 atdot.net>
-
- * compile.c, yarvcore.h : support 'return' from method
- in ensure clause
-
-
-2004-09-13(Mon) 21:56:40 +0900 Koichi Sasada <ko1 atdot.net>
-
- * compile.c : support inline cache constant access
- on NODE_COLON2, NODE_COLON3
-
- * depend : add 'vtest' rule(verbose test)
-
-
-2004-09-13(Mon) 10:58:44 +0900 Koichi Sasada <ko1 atdot.net>
-
- * compile.c, yarvcore.h : support redo/next/break in
- while/until
-
-
-2004-09-13(Mon) 08:50:19 +0900 Koichi Sasada <ko1 atdot.net>
-
- * test/test_jump.rb : added(correctly)
-
- * benchamark/bm_(ensure|rescue|simplereturn).rb added
-
-
-2004-09-12(Sun) 23:30:20 +0900 Koichi Sasada <ko1 atdot.net>
-
- * test/test_jump.rb : added
-
- * insns.def, compile.c : add 'putnil' insn
-
- * compile.c : use '===' when rescue check
-
- * insns.def : remove 'rescuecheck' insn
-
- * compile.c : support retry in begin/rescue clause
-
- * ToDo : added
-
-
-2004-09-08(Wed) 12:34:04 +0900 Koichi Sasada <ko1 atdot.net>
-
- * yarvcore.h, yarvcore.c : add idThrow*
-
- * insns.def, compile.c, vm.c : support retry, break,
- next, redo, return(imcomplete)
-
-
-2004-09-03(Fri) 13:40:08 +0900 Koichi Sasada <ko1 atdot.net>
-
- * compile.c : add nop after rescue body
-
- * insns.def, vm.c : support stack rewind when thrown
-
-
-2004-09-01(Wed) 17:31:01 +0900 Koichi Sasada <ko1 atdot.net>
-
- * test/test_exception.rb : added
-
-
-2004-09-01(Wed) 13:15:14 +0900 Koichi Sasada <ko1 atdot.net>
-
- * vm.c, insns.def : implementing exception handling
-
-
-2004-09-01(Wed) 00:18:54 +0900 Koichi Sasada <ko1 atdot.net>
-
- * insns.def : add 'throw' insn
-
- * compile.c : support 'rescue' and 'ensure' clause
-
- * yarvcore.c, yarvcore.h : add 'catch_table' to iseq_struct
-
-
-2004-08-30(Mon) 19:06:12 +0900 Koichi Sasada <ko1 atdot.net>
-
- * compile.h : NEW_ISEQOBJ don't pass self as parent
-
- * compile.c : use NEW_CHILD_ISEQOBJ explicitly
-
-
-2004-08-29(Sun) 21:09:55 +0900 Koichi Sasada <ko1 atdot.net>
-
- * compile.c : trying to implement rescue/ensure
-
- * insns.def : fix yield bug(lfp, dfp link)
-
-
-2004-08-28(Sat) 13:52:15 +0900 Koichi Sasada <ko1 atdot.net>
-
- * compile.c : fix dvar bug
-
- * test/test_block.rb : add test
-
- * insns.def, insnhelper.h : remove unused source code
-
-
-2004-08-28(Sat) 08:51:26 +0900 Koichi Sasada <ko1 atdot.net>
-
- * compile.c : support NODE_DASGN
-
- * test/test_block.rb : add test
-
-
-2004-08-28(Sat) 08:13:04 +0900 Koichi Sasada <ko1 atdot.net>
-
- * compile.c, insns.def : support access to instance variable
-
- * test/test_class.rb : add test of instance variable
-
- * benchmark/bm_block.rb : added
-
-
-2004-08-28(Sat) 07:48:43 +0900 Koichi Sasada <ko1 atdot.net>
-
- * test/test_block.rb : fix block parameter name
-
-
-2004-08-28(Sat) 07:27:52 +0900 Koichi Sasada <ko1 atdot.net>
-
- * compile.c, insns.def : support method call with block
- and yield and add some functions
-
- * compile.c, insns.def : support dynavars accessor
-
- * test/test_block.rb : added
-
- * vm.c : fix block parameter stack dump
-
-
-2004-08-27(Fri) 23:56:47 +0900 Koichi Sasada <ko1 atdot.net>
-
- * compile.c(iseq_compile) : remove parameter iseqtype
- (this information can access via self)
-
-2004-08-27(Fri) 17:13:35 +0900 Koichi Sasada <ko1 atdot.net>
-
- * test/test_bin.rb : add test(absolute path constant)
-
- * yarvcore.h, compile.c(iseq_compile) : change parameter
-
- * insns.def(classdef) : fix bug
-
-
-2004-08-27(Fri) 04:53:13 +0900 Koichi Sasada <ko1 atdot.net>
-
- * insns.def : support setconstant, getconstant, classdef,
- moduledef
-
- * vm.h : fix debug levels and so on
-
- * vm.h : foo_WORD -> foo_WC
-
- * test/test_class.rb : added
-
-
-2004-08-25(Wed) 17:51:50 +0900 Koichi Sasada <ko1 atdot.net>
-
- * insns.def : fix getconstant/setconstant/classdef
-
-
-2004-08-25(Wed) 14:27:10 +0900 Koichi Sasada <ko1 atdot.net>
-
- * debug.[ch] : added
-
- * compile.c, disasm.c : use debug interface
-
- * compile.c : support some nodes
-
- * compile.c, rb/insns2vm.rb : remove TS_CPATH
-
- * insns.def : modify classdef/moduledef/singletonclassdef
- and add popcref
-
- * and others...
-
-
-2004-08-18(Wed) 20:16:45 +0900 Koichi Sasada <ko1 atdot.net>
-
- * compile.c : fix case/when statement with empty else clause
-
- * insns.def : enable compile
-
- * yarvcore.h : add class search path scheme
-
- * test/test_syn.rb : add switch/case test case
-
- * tmpl/yarvarch.ja : update documents
-
-
-2004-05-22(Sat) 01:30:44 +0900 Koichi Sasada <ko1 atdot.net>
-
- * yarvutil.rb : add eval_in_wrap
-
- * test/test_*.rb : change to use eval_in_wrap
-
-
-2004-05-20(Thu) 02:50:32 +0900 Koichi Sasada <ko1 atdot.net>
-
- * support global variables
-
- * benchmark/bm_*.rb : add some benchmarks
-
- * compile.c : support NODE_ATTRASGN
-
- * compile.c : add debugi(...)
-
-
-2004-05-19(Wed) 23:19:38 +0900 Koichi Sasada <ko1 atdot.net>
-
- * test/test_method.rb : added
-
-
-2004-05-19(Wed) 22:56:09 +0900 Koichi Sasada <ko1 atdot.net>
-
- * insns.def : fix typo
-
- * benchmark/run.rb : sort benchmark order by filename
-
- * extconf.rb : use --enable/disable-xxx
-
- * version.h : ditto(don't touch to change yarv options)
-
-
-2004-05-19(Wed) 21:18:55 +0900 Koichi Sasada <ko1 atdot.net>
-
- * yarvutil.rb : added
-
- * test.rb, test/*, benchmark/run.rb : use yarvutil.rb
-
- * version.h : USE_OPTIMIZED_REGEXP_MATCH added
-
- * yarvcore.h : add idEqTilde
-
- * yarvcore.c(yarvcore_parse, yarvcore_eval) : require file and line
- parameter
-
- * test/test_bin.rb : add regexp test
-
- * benchmark/bm_regexp.rb : added
-
-
-2004-05-19(Wed) 13:57:31 +0900 Koichi Sasada <ko1 atdot.net>
-
- * compile.c : add compile_dstr(self, node)
-
- * compile.c : support NODE_MATCH2, NODE_MATCH3, NODE_DXSTR
-
- * insns.def : add toregexp
-
-
-2004-05-18(Tue) 10:12:20 +0900 Koichi Sasada <ko1 atdot.net>
-
- * compile.c : support NODE_XDSTR
-
- * test/test_bin.rb : add test for above change
-
-
-2004-05-18(Tue) 09:46:33 +0900 Koichi Sasada <ko1 atdot.net>
-
- * insns.def(send) : store regs before call_cfunc
-
-
-2004-05-18(Tue) 08:55:17 +0900 Koichi Sasada <ko1 atdot.net>
-
- * compile.c : support NODE_DSTR, NODE_EVSTR
-
- * compile.c : support NODE_XSTR
-
- * insns.def : add tostring operation
-
- * rb/makedocs.rb : fix directory path
-
- * depend : add tbench rule
-
- * yarvcore.h : add 'exten ID idBackquote'
-
-
-2004-05-18(Tue) 00:09:48 +0900 Koichi Sasada <ko1 atdot.net>
-
- * version.h : add USE_OPTIMIZED_BASIC_OPERATION
-
- * yarvcore.h(struct thread_object) : add 'VALUE stat_insn_usage'
-
-
-2004-05-17(Mon) 11:28:55 +0900 Koichi Sasada <ko1 atdot.net>
-
- * version.h, insns.def, yarvcore.c : add FAKE_INLINE_METHOD_CACHE
-
-
-2004-05-17(Mon) 09:05:53 +0900 Koichi Sasada <ko1 atdot.net>
-
- * compile.c : fix generating opt_* insn process
-
-
-2004-05-17(Mon) 08:58:49 +0900 Koichi Sasada <ko1 atdot.net>
-
- * benchmark/(bm_tarai.rb, bm_fib.rb) : added
-
-
-2004-05-17(Mon) 08:20:12 +0900 Koichi Sasada <ko1 atdot.net>
-
- * benchmark/(bm_tak.rb, bm_reccount.rb) : added
-
- * insns.def : test method cache(incomplete)
-
- * insns.def : add expandarray insn
-
- * yarvcore.c(iseq_init) : add parameter 'parent'
-
-
-2004-05-17(Mon) 01:49:48 +0900 Koichi Sasada <ko1 atdot.net>
-
- * benchmark/run.rb, bm_factorial.rb, bm_whileloop.rb : added
-
- * insns.def(send) : set id to ruby_frame->orig_func
-
- * check behavior on mswin32 and cygwin
-
- * insns.def(send) : check stack overflow
-
-
-2004-05-16(Sun) 08:00:55 +0900 Koichi Sasada <ko1 atdot.net>
-
- * change frame structure(debugging)
-
-
-2004-05-14(Fri) 15:06:02 +0900 Koichi Sasada <ko1 atdot.net>
-
- * insns2vm.rb : support file name arguments
-
-
-2004-05-14(Fri) 04:33:09 +0900 Koichi Sasada <ko1 atdot.net>
-
- * insns.def : support (easy) constant
-
-
-2004-05-12(Wed) 01:51:48 +0900 Koichi Sasada <ko1 atdot.net>
-
- * rb/insns2vm.b : set directory prefix
-
- * disasm.c : fix bug
-
-
-2004-05-12(Wed) 00:00:17 +0900 Koichi Sasada <ko1 atdot.net>
-
- * vm.h, compiler.h, version.h : move *DEBUG defs to version.h
-
-
-2004-05-11(Tue) 23:00:11 +0900 Koichi Sasada <ko1 atdot.net>
-
- * vm.h, version.h, yarvcore.h : move gcc ver check to version.h
- and include version.h from yarvcore.h
-
-
-2004-05-11(Tue) 19:16:26 +0900 Koichi Sasada <ko1 atdot.net>
-
- * 0.0.0.d : imported
-
-
Copied: tags/0.3.1/ChangeLog (from rev 250, trunk/ChangeLog)
Deleted: tags/0.3.1/Changes
===================================================================
--- trunk/Changes 2005-08-20 01:20:15 UTC (rev 249)
+++ tags/0.3.1/Changes 2005-08-31 13:58:43 UTC (rev 251)
@@ -1,98 +0,0 @@
-= 0.3.0 (2005-8-15)
-
-* Import Ruby source code and merge with YARV
-
-* Rite :) You can get YARV without patched Ruby.
- * Now, miniruby is built.
-
-* You can build YARV as Ruby C extension with "yarvext/"
-
-* make test-all => make yarv-test-all
-
-
-= 0.2.3 (2005-8-13)
-
-* support current (2005-8-13) ruby HEAD
-
-*Caution* 0.2.3 only runs on current (2005-8-13) ruby HEAD
-
-
-= 0.2.2 (2005-8-8)
-
-* some bug fixes
-
-* Compiler
- * fix to execute ensure clause
-
-* Evaluator
- * re-write VM structure
- * use control frame stack
- * change some frame structure
- * add call threaded code support
-
-
-= 0.2.1 (2005-7-7)
-
-* some bug fixes
-
-* build options
- * rename options and add --disable-opts, --disable-opt-unify
- * please check options by "ruby extconf.rb --help"
-
-* VM generator (rb/insns2vm.rb)
- * fix a unification algorithm (generate all combination)
-
-* compiler
- * re-write and change data structure (GC free) used by compiler
-
-* evaluator
- * add some specialized instructions
- * x86_64 support
-
-* benchmark
- * rename benchmarks
- * add benchmark/other-lang/[*.rb, *.pl, *.py, *.scm]
-
-* YASM
- * unsupported temporarily
-
-
-= 0.2.0
-
-* some bug fixes
-* refoctoring
-
-* New Features
- * Assembler is supported
- * YARV architecture documentation (in Japanese)
-
-
-= 0.1.1
-
-* some bug fixes
-* refoctoring
-
-* New Features
- * support goto (*1)
- * adding Ruby option "-rite" to work ruby script on YARV
- instead of current ruby interpreter (*2)
- * defined? support
- * permit block parameter as local variables or so
- * method_missing is supported partly
-
-* Optimization
- * Instructions unification (aka super instruction) is supported
- tentatively.
- * JIT Compiler (Ruby script -> Native machine code), very experimental
- implementation
- * AOT Compiler support method dispatch
-
-(*1) it's only joke
-(*2) using -r (require) option with ite.rb :)
-
-
-= 0.1.0
-
-* initial release
-
-
Copied: tags/0.3.1/Changes (from rev 250, trunk/Changes)
Deleted: tags/0.3.1/yarv_version.h
===================================================================
--- trunk/yarv_version.h 2005-08-20 01:20:15 UTC (rev 249)
+++ tags/0.3.1/yarv_version.h 2005-08-31 13:58:43 UTC (rev 251)
@@ -1,21 +0,0 @@
-/**
- *
- * $Id$
- * Create : K.S. 04/01/11 04:11:41
- *
- */
-
-#ifndef _VERSION_H_INCLUDED_
-#define _VERSION_H_INCLUDED_
-
-#define MAJOR_VER 0
-#define MINOR_VER 3
-#define DEVEL_VER 0
-
-extern char yarv_version[];
-extern char *yarv_options;
-
-
-#endif // _VERSION_H_INCLUDED_
-
-
Copied: tags/0.3.1/yarv_version.h (from rev 250, trunk/yarv_version.h)
Deleted: tags/0.3.1/yarvcore.c
===================================================================
--- trunk/yarvcore.c 2005-08-20 01:20:15 UTC (rev 249)
+++ tags/0.3.1/yarvcore.c 2005-08-31 13:58:43 UTC (rev 251)
@@ -1,877 +0,0 @@
-/**
- * YARV: Yet Another Ruby VM.
- *
- *
- * $Id$
- * Create : K.S. 04/01/01 01:17:22
- *
- * Copyright (c) 2004 SASADA Koichi <ko1 at atdot.net>
- */
-
-#include <ruby.h>
-#include <node.h>
-
-#include "yarv_version.h"
-#include "yarvcore.h"
-#include "yarv.h"
-
-VALUE mYarvCore;
-VALUE cYarvISeq;
-VALUE cYarvVM;
-VALUE cYarvThread;
-VALUE mYarvInsns;
-VALUE cYarvEnv;
-VALUE cYarvProc;
-
-VALUE symIFUNC;
-VALUE symCFUNC;
-
-ID idPLUS;
-ID idMINUS;
-ID idMULT;
-ID idDIV;
-ID idMOD;
-ID idLT;
-ID idLTLT;
-ID idEq;
-ID idEqq;
-ID idBackquote;
-ID idEqTilde;
-ID idThrowState;
-ID idThrowBackDFP;
-ID idThrowObject;
-ID idAREF;
-ID idASET;
-ID idIntern;
-ID idMethodMissing;
-ID idEach;
-ID idLength;
-
-unsigned long yarvGlobalStateVersion = 1;
-
-
-/* from Ruby 1.9 eval.c */
-#ifdef HAVE_STDARG_PROTOTYPES
-#include <stdarg.h>
-#define va_init_list(a,b) va_start(a,b)
-#else
-#include <varargs.h>
-#define va_init_list(a,b) va_start(a)
-#endif
-
-#if 0
-#define MARK_REPORT(msg) printf("mark: %s\n", msg)
-#define FREE_REPORT(msg) printf("free: %s\n", msg)
-#define GC_INFO printf
-#else
-#define MARK_REPORT(msg)
-#define FREE_REPORT(msg)
-#define GC_INFO if(0)printf
-#endif
-
-#define MARK_UNLESS_NULL(ptr) if(ptr){rb_gc_mark(ptr);}
-#define FREE_UNLESS_NULL(ptr) if(ptr){ruby_xfree(ptr);}
-
-
-/************/
-/* YARVCore */
-/************/
-
-/* temporalily */
-void yarv_setup(void *p1, void *p2, void *p3, void *p4,
- void *p5, void *p6, void *p7, void *p8);
-
-
-static yarv_thread_t *yarvCurrentRunningThread = 0;
-static VALUE yarvVM = Qnil;
-
-VALUE yarv_get_current_running_vm_value(){
- return yarvCurrentRunningThread->vm_value;
-}
-
-VALUE yarv_get_current_running_thread_value(){
- return yarvCurrentRunningThread->self;
-}
-
-yarv_vm_t *yarv_get_current_running_vm(){
- return yarvCurrentRunningThread->vm;
-}
-
-yarv_thread_t *yarv_get_current_running_thread(){
- return yarvCurrentRunningThread;
-}
-
-void yarv_set_current_running_thread(yarv_thread_t *th){
- yarvCurrentRunningThread = th;
-}
-
-/* rb_block_given */
-int yarv_block_given_p(){
- if(GC_GUARDED_PTR_REF(GET_THREAD()->cfp->lfp[0])){
- return 1;
- }
- else{
- return 0;
- }
-}
-
-VALUE th_invoke_yield(yarv_thread_t *th, int argc, VALUE *argv);
-
-/* rb_yield_values */
-VALUE yarv_yield_values(int argc, VALUE *argv){
- yarv_thread_t *th = GET_THREAD();
-
- if(argc == 1 && CLASS_OF(argv[0]) == rb_cValues){
- argc = RARRAY(argv[0])->len;
- argv = RARRAY(argv[0])->ptr;
- }
-
- return th_invoke_yield(th, argc, argv);
-}
-
-VALUE thread_call0(VALUE self, VALUE klass, VALUE recv, VALUE id, ID oid,
- int argc, VALUE *argv, NODE *body, int nosuper);
-
-/* rb_call0 continued for yarv function */
-VALUE yarv_call0(VALUE klass, VALUE recv, VALUE id, ID oid,
- int argc, VALUE *argv, NODE *body, int nosuper){
- return th_call0(GET_THREAD(), klass, recv, id, oid, argc, argv, body, nosuper);
-}
-
-
-VALUE th_call_super(yarv_thread_t *th, int argc, const VALUE *argv);
-
-VALUE yarv_call_super(int argc, const VALUE *argv){
- return th_call_super(GET_THREAD(), argc, argv);
-}
-
-VALUE th_backtrace(yarv_thread_t *th, int level);
-
-VALUE yarv_backtrace(int level){
- return th_backtrace(GET_THREAD(), level);
-}
-
-VALUE yarv_caller(VALUE self, VALUE level){
- if(!IS_YARV_WORKING()){
- return rb_funcall(Qnil, rb_intern("caller"), 1, level);
- }
- else{
- return yarv_backtrace(FIX2INT(level));
- }
-}
-
-RUBY_EXTERN int rb_thread_critical;
-RUBY_EXTERN int ruby_in_eval;
-RUBY_EXTERN int ruby_nerrs;
-RUBY_EXTERN NODE* ruby_eval_tree;
-
-static VALUE vm_eval(VALUE self, VALUE iseq);
-
-VALUE yarv_load(char *file){
- NODE *node;
- VALUE argv[5];
- volatile VALUE iseq;
- volatile int critical;
-
- critical = rb_thread_critical;
- rb_thread_critical = Qtrue;
- {
- ruby_in_eval++;
- rb_load_file(file);
- ruby_in_eval--;
- node = ruby_eval_tree;
- }
- rb_thread_critical = critical;
-
- if(ruby_nerrs > 0){
- return 0;
- }
-
- argv[0] = (VALUE)node;
- argv[1] = rb_str_new2("<top (required)>");
- argv[2] = rb_str_new2(file);
- argv[3] = Qfalse;
- argv[4] = ISEQ_TYPE_TOP;
- iseq = rb_class_new_instance(5, argv, cYarvISeq);
-
- vm_eval(yarv_get_current_running_vm_value(), iseq);
- return 0;
-}
-
-
-VALUE *th_svar(yarv_thread_t *self, int cnt);
-
-VALUE *yarv_svar(int cnt){
- return th_svar(GET_THREAD(), cnt);
-}
-
-static int yarv_iterate(NODE *node){
- yarv_thread_t *th = GET_THREAD();
- th->ifuncnode = node;
- return 0;
-}
-
-static VALUE compile_string(VALUE str, VALUE file, VALUE line){
- NODE *node;
- node = rb_compile_string(StringValueCStr(file), str, NUM2INT(line));
-
- if(ruby_nerrs > 0){
- ruby_nerrs = 0;
- rb_exc_raise(ruby_errinfo);
- }
-
- return (VALUE)node;
-}
-
-
-static VALUE yarvcore_eval_iseq(VALUE iseq){
- volatile VALUE vm;
- VALUE ret;
- vm = yarv_get_current_running_vm_value();
-
- SET_YARV_START();
- ret = vm_eval(vm, iseq);
- SET_YARV_STOP();
- return ret;
-}
-
-VALUE yarvcore_eval_parsed(VALUE node, VALUE file){
- VALUE argv[5];
- VALUE iseq;
-
- argv[0] = node;
- argv[1] = rb_str_new2("<main>");
- argv[2] = file;
- argv[3] = Qfalse;
- argv[4] = ISEQ_TYPE_TOP;
- iseq = rb_class_new_instance(5, argv, cYarvISeq);
- yarvcore_eval_iseq(iseq);
-}
-
-VALUE yarvcore_eval(VALUE self, VALUE str, VALUE file, VALUE line){
- VALUE node = compile_string(str, file, line);
- return yarvcore_eval_parsed(node, file);
-}
-
-static VALUE yarvcore_parse(VALUE self, VALUE str, VALUE file, VALUE line){
- VALUE node;
- VALUE argv[5];
- VALUE iseq;
-
- node = compile_string(str, file, line);
-
- argv[0] = node;
- argv[1] = rb_str_new2("<main>");
- argv[2] = file;
- argv[3] = Qfalse;
- argv[4] = ISEQ_TYPE_TOP;
- iseq = rb_class_new_instance(5, argv, cYarvISeq);
- return iseq;
-}
-
-
-/***********************/
-/* InstructionSequence */
-/***********************/
-
-static void compile_data_free(struct iseq_compile_data *compile_data){
- if(compile_data){
- struct iseq_compile_data_storage *cur, *next;
- cur = compile_data->storage_head;
- while(cur){
- next = cur->next;
- ruby_xfree(cur);
- cur = next;
- }
- ruby_xfree(compile_data);
- }
-}
-
-static void iseq_free(void *ptr){
- yarv_iseq_t *iseq;
- FREE_REPORT("-> iseq");
-
- if(ptr){
- iseq = ptr;
- GC_INFO("%s\n", RSTRING(iseq->name)->ptr);
-
- if(iseq->iseq != iseq->iseq_encoded){
- FREE_UNLESS_NULL(iseq->iseq_encoded);
- }
- FREE_UNLESS_NULL(iseq->iseq);
-
- FREE_UNLESS_NULL(iseq->insn_info_tbl);
- FREE_UNLESS_NULL(iseq->local_tbl);
- FREE_UNLESS_NULL(iseq->catch_table);
- FREE_UNLESS_NULL(iseq->arg_opt_tbl);
- compile_data_free(iseq->compile_data);
- ruby_xfree(ptr);
- }
- FREE_REPORT("<- iseq");
-}
-
-static void iseq_mark(void *ptr){
- yarv_iseq_t *iseq;
- MARK_REPORT("-> iseq");
- if(ptr){
- iseq = ptr;
- GC_INFO("%s\n", RSTRING(iseq->name)->ptr);
- MARK_UNLESS_NULL(iseq->iseq_mark_ary);
- MARK_UNLESS_NULL(iseq->name);
- MARK_UNLESS_NULL(iseq->file_name);
- MARK_UNLESS_NULL(iseq->klass_nest_stack);
- MARK_UNLESS_NULL(iseq->catch_table_ary);
- MARK_UNLESS_NULL((VALUE)iseq->node);
-
- if(iseq->compile_data != 0){
- MARK_UNLESS_NULL(iseq->compile_data->mark_ary);
- MARK_UNLESS_NULL(iseq->compile_data->err_info);
- }
- }
- MARK_REPORT("<- iseq");
-}
-
-static VALUE iseq_alloc(VALUE klass){
- VALUE volatile obj;
- yarv_iseq_t *iseq;
-
- obj = Data_Make_Struct(klass, yarv_iseq_t,
- iseq_mark, iseq_free, iseq);
- return obj;
-}
-
-static VALUE prepare_iseq_build(yarv_iseq_t *iseq,
- VALUE name, VALUE file_name,
- VALUE parent, VALUE type){
-
- iseq->name = name;
- iseq->file_name = file_name;
- iseq->iseq_mark_ary = rb_ary_new();
- iseq->catch_table_ary = rb_ary_new();
- iseq->type = type;
- iseq->arg_rest = -1;
- iseq->arg_block = -1;
-
- /* set class nest stack */
- if(parent){
- if(type != ISEQ_TYPE_CLASS){
- yarv_iseq_t *piseq;
- GetISeqVal(parent, piseq);
- iseq->klass_nest_stack = piseq->klass_nest_stack;
- }
- }
- else if(type == ISEQ_TYPE_TOP){
- iseq->klass_nest_stack = rb_ary_new();
- rb_ary_push(iseq->klass_nest_stack, rb_cObject);
- }
- else if(type == ISEQ_TYPE_METHOD){
- iseq->klass_nest_stack = rb_ary_new();
- }
-
- iseq->compile_data = ALLOC(struct iseq_compile_data);
- MEMZERO(iseq->compile_data, struct iseq_compile_data, 1);
- iseq->compile_data->mark_ary = rb_ary_new();
-
- iseq->compile_data->storage_head = iseq->compile_data->storage_current =
- (struct iseq_compile_data_storage *)
- ALLOC_N(char, INITIAL_ISEQ_COMPILE_DATA_STORAGE_BUFF_SIZE +
- sizeof(struct iseq_compile_data_storage));
-
- iseq->compile_data->storage_head->pos = 0;
- iseq->compile_data->storage_head->next = 0;
- iseq->compile_data->storage_head->size = INITIAL_ISEQ_COMPILE_DATA_STORAGE_BUFF_SIZE;
- iseq->compile_data->storage_head->buff = (char *)(&iseq->compile_data->storage_head->buff + 1);
-
- if(parent && CLASS_OF(parent) == cYarvISeq){
- yarv_iseq_t *piseq;
- GetISeqVal(parent, piseq);
- iseq->parent_iseqobj = piseq;
- }
- return Qtrue;
-}
-static VALUE cleanup_iseq_build(yarv_iseq_t *iseqobj){
- VALUE err;
- err = iseqobj->compile_data->err_info;
- compile_data_free(iseqobj->compile_data);
- iseqobj->compile_data = 0;
-
- if(ruby_nerrs > 0){
- ruby_nerrs = 0;
- rb_exc_raise(err);
- }
- return Qtrue;
-}
-
-static VALUE iseq_init(VALUE self, VALUE node, VALUE name, VALUE file_name,
- VALUE parent, VALUE type){
- yarv_iseq_t *iseqobj;
-
- GetISeqVal(self, iseqobj);
-
- prepare_iseq_build(iseqobj, name, file_name, parent, type);
- iseq_compile(self, node);
- cleanup_iseq_build(iseqobj);
-
- return self;
-}
-
-VALUE iseq_assemble_setup(VALUE self, VALUE args, VALUE locals, VALUE ary);
-
-static VALUE iseq_assemble(VALUE self, VALUE args, VALUE locals, VALUE insn_ary){
- return iseq_assemble_setup(self, args, locals, insn_ary);
-}
-
-VALUE iseq_inspect(VALUE self){
- char buff[0x100];
- yarv_iseq_t *iseqobj;
-
- GetISeqVal(self, iseqobj);
- snprintf(buff, sizeof(buff), "<ISeq:%s@%s>",
- RSTRING(iseqobj->name)->ptr,
- RSTRING(iseqobj->file_name)->ptr);
-
- return rb_str_new2(buff);
-}
-
-/******/
-/* VM */
-/******/
-
-static void vm_free(void *ptr){
- FREE_REPORT("-> vm");
- if(ptr){
- ruby_xfree(ptr);
- }
- FREE_REPORT("<- vm");
-}
-
-static void vm_mark(void *ptr){
- yarv_vm_t *vmobj;
- MARK_REPORT("-> vm");
- if(ptr){
- vmobj = ptr;
- rb_gc_mark(vmobj->main_thread);
- }
- MARK_REPORT("<- vm");
-}
-
-static VALUE vm_alloc(VALUE klass){
- VALUE volatile obj;
- yarv_vm_t *vm;
- obj = Data_Make_Struct(klass, yarv_vm_t, vm_mark, vm_free, vm);
- return obj;
-}
-
-static VALUE vm_init(VALUE self, VALUE node){
- /* allocate vm stack */
- yarv_vm_t *vmobj;
- VALUE argv[1];
- GetVMVal(self, vmobj);
-
- argv[0] = self;
- vmobj->main_thread = rb_class_new_instance(1, argv, cYarvThread);
- vmobj->self = self;
- return self;
-}
-
-
-static VALUE thread_eval(VALUE self, VALUE iseq);
-
-static VALUE vm_eval(VALUE self, VALUE iseq){
- yarv_vm_t *vm;
- VALUE val;
- GetVMVal(self, vm);
- val = thread_eval(vm->main_thread, iseq);
- return val;
-}
-
-
-/**********/
-/* Thread */
-/**********/
-
-static void thread_free(void *ptr){
- yarv_thread_t *th;
- FREE_REPORT("-> thread");
- if(ptr){
- th = ptr;
- FREE_UNLESS_NULL(th->stack);
- ruby_xfree(ptr);
- }
- FREE_REPORT("<- thread");
-}
-
-static void thread_mark(void *ptr){
- yarv_thread_t *th;
- MARK_REPORT("-> thread");
- if(ptr){
- th = ptr;
- if(th->stack){
- if(0){
- rb_gc_mark_locations(th->stack, th->cfp->sp);
- }
- else{
- VALUE *p = th->stack;
- VALUE *sp = th->cfp->sp;
- while(p < sp){
- rb_gc_mark(*p++);
- }
- }
- }
-
- /* mark ruby objects */
- MARK_UNLESS_NULL(th->vm_value);
- MARK_UNLESS_NULL(th->stat_insn_usage);
- MARK_UNLESS_NULL(th->klass_nest_stack);
- }
- MARK_REPORT("<- thread");
-}
-
-static VALUE thread_alloc(VALUE klass){
- VALUE volatile obj;
- yarv_thread_t *th;
-
- obj = Data_Make_Struct(klass, yarv_thread_t,
- thread_mark, thread_free, th);
- return obj;
-}
-
-static void
-th_init(yarv_thread_t *th)
-{
- /* allocate thread stack */
- th->stack = ALLOC_N(VALUE, YARV_THREAD_STACK_SIZE);
- th->stack_size = YARV_THREAD_STACK_SIZE;
- th->cfp = (void *)(th->stack + th->stack_size);
- th->cfp--;
-
- th->klass_nest_stack = rb_ary_push(rb_ary_new(), rb_cObject);
-
- th->cfp->pc = 0;
- th->cfp->sp = th->stack;
- th->cfp->bp = 0;
- th->cfp->lfp = th->stack;
- th->cfp->dfp = th->stack;
- th->cfp->self = Qnil;
- th->cfp->magic = 0;
-}
-
-static VALUE
-thread_init(VALUE self, VALUE vmval)
-{
- yarv_thread_t *th;
- yarv_vm_t *vm;
-
- GetThreadVal(self, th);
- GetVMVal(vmval, vm);
-
- th_init(th);
- th->self = self;
-
- th->vm_value = vmval;
- th->vm = vm;
-
- return self;
-}
-
-VALUE th_eval_body(yarv_thread_t *th);
-extern VALUE thread_set_top_stack(VALUE self, VALUE iseq);
-
-static VALUE thread_eval(VALUE self, VALUE iseq){
- VALUE val;
- yarv_thread_t *th;
- GetThreadVal(self, th);
-
- // TODO
- thread_set_top_stack(self, iseq);
- val = th_eval_body(th);
-
- return val;
-}
-
-
-/***************/
-/* YarvEnv */
-/***************/
-
-static void env_free(void *ptr){
- yarv_env_t *env;
- FREE_REPORT("-> env");
- if(ptr){
- env = ptr;
- FREE_UNLESS_NULL(env->env);
- ruby_xfree(ptr);
- }
- FREE_REPORT("<- env");
-}
-
-static void env_mark(void *ptr){
- yarv_env_t *env;
- MARK_REPORT("-> env");
- if(ptr){
- env = ptr;
- if(env->env){
- /* TODO: should mark more restricted range */
- rb_gc_mark_locations(env->env, env->env + env->env_size);
- }
- MARK_UNLESS_NULL(env->prev_envval);
- }
- MARK_REPORT("<- env");
-}
-
-static VALUE env_alloc(VALUE klass){
- VALUE obj;
- yarv_env_t *env;
- obj = Data_Make_Struct(klass, yarv_env_t,
- env_mark, env_free, env);
- return obj;
-}
-
-
-/***************/
-/* YarvProc */
-/***************/
-
-static void proc_free(void *ptr){
- FREE_REPORT("-> proc");
- if(ptr){
- ruby_xfree(ptr);
- }
- FREE_REPORT("<- proc");
-}
-
-static void proc_mark(void *ptr){
- yarv_proc_t *proc;
- MARK_REPORT("-> proc");
- if(ptr){
- proc = ptr;
- MARK_UNLESS_NULL(proc->envval);
- MARK_UNLESS_NULL(proc->blockprocval);
- }
- MARK_REPORT("<- proc");
-}
-
-static VALUE proc_alloc(VALUE klass){
- VALUE obj;
- yarv_proc_t *proc;
- obj = Data_Make_Struct(klass, yarv_proc_t,
- proc_mark, proc_free, proc);
- return obj;
-}
-
-VALUE th_invoke_proc(yarv_thread_t *th, yarv_proc_t *proc, int argc, VALUE *argv);
-
-static VALUE proc_call(int argc, VALUE *argv, VALUE procval){
- yarv_proc_t *proc;
- GetProcVal(procval, proc);
-
- return th_invoke_proc(GET_THREAD(), proc, argc, argv);
-}
-
-
-/********************************************************************/
-
-static VALUE yarv_once(){
- return rb_yield(Qnil);
-}
-static VALUE cfunc(){
- rb_funcall(Qnil, rb_intern("rfunc"), 0, 0);
- rb_funcall(Qnil, rb_intern("rfunc"), 0, 0);
- return Qnil;
-}
-
-VALUE constant_pool_pool;
-
-VALUE yarv_Array_each();
-VALUE yarv_Integer_times();
-// VALUE yarv_Hash_each();
-VALUE insns_name_array();
-
-char yarv_version[0x20];
-char *yarv_options = ""
-#if OPT_DIRECT_THREADED_CODE
- "[direct threaded code] "
-#elif OPT_TOKEN_THREADED_CODE
- "[token threaded code] "
-#elif OPT_CALL_THREADED_CODE
- "[call threaded code] "
-#endif
-
-#ifdef FAKE_INLINE_METHOD_CACHE
- "[fake inline method cache] "
-#endif
-
-#ifdef OPT_BASIC_OPERATIONS
- "[optimize basic operation] "
-#endif
-
-#ifdef OPT_STACK_CACHING
- "[stack caching] "
-#endif
-
-#ifdef OPT_OPERANDS_UNIFICATION
- "[operands unification] "
-#endif
-
-#ifdef OPT_INSTRUCTIONS_UNIFICATION
- "[instructions unification] "
-#endif
-
-#ifdef OPT_INLINE_METHOD_CACHE
- "[inline method cache] "
-#endif
- ;
-
-
-void Init_yarvcore(){
-
-#include "rev.inc"
-
- snprintf(yarv_version, 0x20, "YARVCore %d.%d.%d", MAJOR_VER, MINOR_VER, DEVEL_VER);
-
- /* declare YARVCore module */
- mYarvCore = rb_define_module("YARVCore");
- rb_define_const(mYarvCore, "VERSION", rb_str_new2(yarv_version));
- rb_define_const(mYarvCore, "MAJOR" , INT2FIX(MAJOR_VER));
- rb_define_const(mYarvCore, "MINOR" , INT2FIX(MINOR_VER));
- rb_define_const(mYarvCore, "REV" , rb_str_new2(rev));
- rb_define_const(mYarvCore, "DATE" , rb_str_new2(date));
- rb_define_const(mYarvCore, "OPTS" , rb_str_new2(yarv_options));
-
- /* YARVCore::USAGE_ANALISYS_* */
- rb_define_const(mYarvCore, "USAGE_ANALISYS_INSN", rb_hash_new());
- rb_define_const(mYarvCore, "USAGE_ANALISYS_REGS", rb_hash_new());
- rb_define_const(mYarvCore, "USAGE_ANALISYS_INSN_BIGRAM", rb_hash_new());
-
-
- /* YARVCore::InsnNameArray */
- rb_define_const(mYarvCore, "InsnNameArray", insns_name_array());
-
- rb_define_singleton_method(mYarvCore, "eval" , yarvcore_eval , 3);
- rb_define_singleton_method(mYarvCore, "parse", yarvcore_parse, 3);
- rb_define_singleton_method(mYarvCore, "eval_iseq", yarvcore_eval_iseq, 1);
-
-
- /* declare YARVCore::InstructionSequence */
- cYarvISeq = rb_define_class_under(mYarvCore, "InstructionSequence", rb_cObject);
- rb_define_alloc_func(cYarvISeq, iseq_alloc);
- rb_define_method(cYarvISeq, "initialize", iseq_init, 5);
- rb_define_method(cYarvISeq, "inspect", iseq_inspect, 0);
- rb_define_method(cYarvISeq, "disasm", iseq_disasm, 0);
- rb_define_method(cYarvISeq, "assemble", iseq_assemble, 3);
- // rb_define_singleton_method(cYarvISeq, "new_from_insn_ary", iseq_init_from_insn_ary, 1);
-
- /* declare YARVCore::VM */
- cYarvVM = rb_define_class_under(mYarvCore, "VM", rb_cObject);
- rb_define_alloc_func(cYarvVM, vm_alloc);
- rb_define_method(cYarvVM, "initialize", vm_init, 0);
- rb_define_method(cYarvVM, "eval", vm_eval, 1);
-
- /* declare YARVCore::VM::Thread */
- cYarvThread = rb_define_class_under(cYarvVM, "Thread", rb_cObject);
- rb_define_alloc_func(cYarvThread, thread_alloc);
- rb_define_method(cYarvThread, "initialize", thread_init, 1);
- rb_define_method(cYarvThread, "eval", thread_eval, 1);
-
- /* declare YARVCore::VM::Env */
- cYarvEnv = rb_define_class_under(cYarvVM, "Env", rb_cObject);
- rb_define_alloc_func(cYarvEnv, env_alloc);
-
- /* declare YARVCore::VM::Proc */
- cYarvProc = rb_define_class_under(cYarvVM, "Proc", rb_cObject);
- rb_define_alloc_func(cYarvProc, proc_alloc);
- rb_define_method(cYarvProc, "call", proc_call, -1);
-
- /* misc */
-
-
- /* YARV test functions */
-
- rb_define_global_function("once", yarv_once, 0);
- rb_define_global_function("cfunc", cfunc, 0);
- rb_define_global_function("yarv_caller", yarv_caller, 1);
-
- /* Integer#times */
- rb_define_method(rb_cInteger, "times", yarv_Integer_times, 0);
-
- /* Array#each */
- // rb_define_method(rb_cArray, "each", yarv_Array_each, 0);
- /* Hash#each */
- // rb_define_method(rb_cHash,"each", yarv_Hash_each, 0);
-
-#if YARVEXT
- yarv_setup(yarv_yield_values, yarv_call0, yarv_block_given_p, yarv_load,
- yarv_svar, yarv_iterate, yarv_call_super, yarv_backtrace);
-#endif
-
- symIFUNC = ID2SYM(rb_intern("<IFUNC>"));
- symCFUNC = ID2SYM(rb_intern("<CFUNC>"));
-
- /* for optimize */
- idPLUS = rb_intern("+");
- idMINUS= rb_intern("-");
- idMULT = rb_intern("*");
- idDIV = rb_intern("/");
- idMOD = rb_intern("%");
- idLT = rb_intern("<");
- idLTLT = rb_intern("<<");
- idEq = rb_intern("==");
- idEqq = rb_intern("===");
- idBackquote = rb_intern("`");
- idEqTilde = rb_intern("=~");
-
- idAREF = rb_intern("[]");
- idASET = rb_intern("[]=");
-
- idEach = rb_intern("each");
- idLength = rb_intern("length");
- idIntern = rb_intern("intern");
- idMethodMissing = rb_intern("method_missing");
-
- idThrowState = rb_intern("#__ThrowState__");
- idThrowBackDFP = rb_intern("#__ThrowBackDFP__");
- idThrowObject = rb_intern("#__ThrowObject__");
-
- constant_pool_pool = rb_ary_new();
- rb_global_variable(&constant_pool_pool);
-
-#if TEST_AOT_COMPILE
- Init_compiled();
-#endif
-
- // make vm
- {
- VALUE vmval = rb_class_new_instance(0, 0, cYarvVM);
- yarv_vm_t *vm;
- yarv_thread_t *th;
-
- yarvVM = vmval;
- rb_global_variable(&yarvVM);
-
- GetVMVal(vmval, vm);
- GetThreadVal(vm->main_thread, th);
-
- thread_free(GET_THREAD());
- yarv_set_current_running_thread(th);
- }
-}
-
-static void
-test()
-{
- int i; int *p;
- printf("!test!\n");
- for(i=0; i<1000000; i++){
- p = ALLOC(int);
- }
-}
-
-void
-Init_vm()
-{
- /* initialize main thread */
- yarv_thread_t *th = ALLOC(yarv_thread_t);
- th_init(th);
- yarv_set_current_running_thread(th);
-}
-
Copied: tags/0.3.1/yarvcore.c (from rev 250, trunk/yarvcore.c)
--
ML: yarv-diff quickml.atdot.net
Info: http://www.atdot.net/~ko1/quickml