/* -*- C -*- */ /* This is an auto-generated file and is a part of the programming language * Ruby. The person who created a program to generate this file (``I'' * hereafter) would like to refrain from defining licensing of this generated * source code. * * This file consists of many small parts of codes copyrighted by each author, * not only the ``I'' person. Those original authors agree with some * open-source license. I believe that the license we agree is the condition * mentioned in the file COPYING. It states "4. You may modify and include * the part of the software into any other software ...". But the problem is, * the license never makes it clear if such modified parts still remain in the * same license, or not. The fact that we agree with the source code's * licensing terms does not automatically define that of generated ones. This * is the reason why this file is under an unclear situation. All what I know * is that above provision guarantees this file to exist. * * Please let me hesitate to declare something about this nuanced contract. I * am not in the position to take over other authors' license to merge into my * one. Changing them to (say) GPLv3 is not doable by myself. Perhaps someday * it might turn out to be okay to say this file is under a license. I wish * the situation would become more clear in the future. */ /*******************************************************************/ /*******************************************************************/ /*******************************************************************/ /** This file is for threaded code. ---- This file is auto generated by insns2vm.rb DO NOT TOUCH! If you want to fix something, you must edit "tool/ruby_vm/views/optinsn.inc.erb" or tool/insns2vm.rb */ static INSN * insn_operands_unification(INSN *iobj) { #ifdef OPT_OPERANDS_UNIFICATION VALUE *op = iobj->operands; switch (iobj->insn_id) { default: /* do nothing */; break; case BIN(getlocal): /* getlocal_WC_0(idx)()(val) */ if ( op[1] == LONG2NUM(0) ) { iobj->insn_id = BIN(getlocal_WC_0); iobj->operand_size = 1; break; } /* getlocal_WC_1(idx)()(val) */ if ( op[1] == LONG2NUM(1) ) { iobj->insn_id = BIN(getlocal_WC_1); iobj->operand_size = 1; break; } break; case BIN(setlocal): /* setlocal_WC_0(idx)(val)() */ if ( op[1] == LONG2NUM(0) ) { iobj->insn_id = BIN(setlocal_WC_0); iobj->operand_size = 1; break; } /* setlocal_WC_1(idx)(val)() */ if ( op[1] == LONG2NUM(1) ) { iobj->insn_id = BIN(setlocal_WC_1); iobj->operand_size = 1; break; } break; case BIN(putobject): /* putobject_INT2FIX_0_()()(val) */ if ( op[0] == INT2FIX(0) ) { iobj->insn_id = BIN(putobject_INT2FIX_0_); iobj->operand_size = 0; break; } /* putobject_INT2FIX_1_()()(val) */ if ( op[0] == INT2FIX(1) ) { iobj->insn_id = BIN(putobject_INT2FIX_1_); iobj->operand_size = 0; break; } break; } #endif return iobj; } int rb_insn_unified_local_var_level(VALUE insn) { #ifdef OPT_OPERANDS_UNIFICATION /* optimize rule */ switch (insn) { default: return -1; /* do nothing */; case BIN(getlocal_WC_0): return 0; case BIN(getlocal_WC_1): return 1; case BIN(setlocal_WC_0): return 0; case BIN(setlocal_WC_1): return 1; case BIN(putobject_INT2FIX_0_): return INT2FIX(0); case BIN(putobject_INT2FIX_1_): return INT2FIX(1); } #endif return -1; }