ruby-changes:26116
From: ko1 <ko1@a...>
Date: Tue, 4 Dec 2012 13:58:02 +0900 (JST)
Subject: [ruby-changes:26116] ko1:r38173 (trunk): * vm_opts.h: enable optimization - operand unifications.
ko1 2012-12-04 13:57:50 +0900 (Tue, 04 Dec 2012) New Revision: 38173 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=38173 Log: * vm_opts.h: enable optimization - operand unifications. Operand unification technique enable to combine an instruction and specific operands and make new instruction. * defs/opt_operand.def: add several configuration of operand unifications. * insns.def: use `int' instead to suppress warning. Modified files: trunk/ChangeLog trunk/defs/opt_operand.def trunk/insns.def trunk/vm_opts.h Index: defs/opt_operand.def =================================================================== --- defs/opt_operand.def (revision 38172) +++ defs/opt_operand.def (revision 38173) @@ -7,53 +7,16 @@ # wildcard: * # -__END__ +getlocal *, 0 +getlocal *, 1 +setlocal *, 0 +setlocal *, 1 -getlocal 2 -getlocal 3 -getlocal 4 - -setlocal 2 -setlocal 3 -setlocal 4 - -getdynamic *, 0 -getdynamic 1, 0 -getdynamic 2, 0 -getdynamic 3, 0 -getdynamic 4, 0 - -setdynamic *, 0 -setdynamic 1, 0 -setdynamic 2, 0 -setdynamic 3, 0 -setdynamic 4, 0 - putobject INT2FIX(0) putobject INT2FIX(1) -putobject Qtrue -putobject Qfalse -# CALL -send *, *, Qfalse, 0, * -send *, 0, Qfalse, 0, * -send *, 1, Qfalse, 0, * -send *, 2, Qfalse, 0, * -send *, 3, Qfalse, 0, * - -# FCALL -send *, *, Qfalse, 0x04, * -send *, 0, Qfalse, 0x04, * -send *, 1, Qfalse, 0x04, * -send *, 2, Qfalse, 0x04, * -send *, 3, Qfalse, 0x04, * - -# VCALL -send *, 0, Qfalse, 0x0c, * - - __END__ +putobject Qtrue +putobject Qfalse - - Index: ChangeLog =================================================================== --- ChangeLog (revision 38172) +++ ChangeLog (revision 38173) @@ -1,3 +1,15 @@ +Tue Dec 04 13:55:07 2012 Koichi Sasada <ko1@a...> + + * vm_opts.h: enable optimization - operand unifications. + Operand unification technique enable to combine + an instruction and specific operands and make new + instruction. + + * defs/opt_operand.def: add several configuration + of operand unifications. + + * insns.def: use `int' instead to suppress warning. + Mon Dec 3 17:58:53 2012 NARUSE, Yui <naruse@r...> * parse.y: replase parser->enc with current_enc. Index: insns.def =================================================================== --- insns.def (revision 38172) +++ insns.def (revision 38173) @@ -57,10 +57,11 @@ () (VALUE val) { - rb_num_t i; + int i, lev = (int)level; VALUE *ep = GET_EP(); - for (i = 0; i < level; i++) { - ep = GET_PREV_EP(ep); + + for (i = 0; i < lev; i++) { + ep = GET_PREV_EP(ep); } val = *(ep - idx); } @@ -78,9 +79,10 @@ (VALUE val) () { - rb_num_t i; + int i, lev = (int)level; VALUE *ep = GET_EP(); - for (i = 0; i < level; i++) { + + for (i = 0; i < lev; i++) { ep = GET_PREV_EP(ep); } *(ep - idx) = val; Index: vm_opts.h =================================================================== --- vm_opts.h (revision 38172) +++ vm_opts.h (revision 38173) @@ -41,7 +41,7 @@ #define OPT_BLOCKINLINING 0 /* architecture independent, affects generated code */ -#define OPT_OPERANDS_UNIFICATION 0 +#define OPT_OPERANDS_UNIFICATION 1 #define OPT_INSTRUCTIONS_UNIFICATION 0 #define OPT_UNIFY_ALL_COMBINATION 0 #define OPT_STACK_CACHING 0 @@ -50,7 +50,7 @@ #define SUPPORT_JOKE 0 #ifndef VM_COLLECT_USAGE_DETAILS -#define VM_COLLECT_USAGE_DETAILS 0 +#define VM_COLLECT_USAGE_DETAILS 0 #endif #endif /* RUBY_VM_OPTS_H */ -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/