diff options
author | Björn Gustavsson <[email protected]> | 2011-08-05 14:49:34 +0200 |
---|---|---|
committer | Björn Gustavsson <[email protected]> | 2011-10-11 11:36:36 +0200 |
commit | cac63dbe2da001e050be70664cb6421cdea33430 (patch) | |
tree | 72ed4bce8dc8a0562198be1f0d7423f1abba1253 | |
parent | 207436c383995dc6fcea1953f9188f8df280bd81 (diff) | |
download | otp-cac63dbe2da001e050be70664cb6421cdea33430.tar.gz otp-cac63dbe2da001e050be70664cb6421cdea33430.tar.bz2 otp-cac63dbe2da001e050be70664cb6421cdea33430.zip |
Merge 'new_instr' and 'store_op' into 'new_instr'
Since the 'new_instr' instruction always occurs before the
'store_op' instruction, we can merge the instructions into one.
Also, there is no need to include the arity of the BEAM
instruction as an operand, since the arity can be looked up
based on the opcode.
-rw-r--r-- | erts/emulator/beam/beam_load.c | 6 | ||||
-rwxr-xr-x | erts/emulator/utils/beam_makeops | 5 |
2 files changed, 4 insertions, 7 deletions
diff --git a/erts/emulator/beam/beam_load.c b/erts/emulator/beam/beam_load.c index 0d639572e0..551bc399e7 100644 --- a/erts/emulator/beam/beam_load.c +++ b/erts/emulator/beam/beam_load.c @@ -4505,12 +4505,10 @@ transform_engine(LoaderState* st) NEW_GENOP(st, instr); instr->next = st->genop; st->genop = instr; + instr->op = op = *pc++; + instr->arity = gen_opc[op].arity; ap = 0; break; - case TOP_store_op: - instr->op = *pc++; - instr->arity = *pc++; - break; case TOP_store_type: i = *pc++; instr->a[ap].type = i; diff --git a/erts/emulator/utils/beam_makeops b/erts/emulator/utils/beam_makeops index 2272a941bb..d71531a1f1 100755 --- a/erts/emulator/utils/beam_makeops +++ b/erts/emulator/utils/beam_makeops @@ -1590,7 +1590,7 @@ sub tr_gen_to { push(@args, "var+$var{$var}"); } } - pop(@code); # Get rid of 'next_instr' + pop(@code); # Get rid of 'commit' instruction push(@code, make_op("$name()", 'call_end', scalar(@call_table))); push(@call_table, [$name, @args]); last; @@ -1609,8 +1609,7 @@ sub tr_gen_to { # Create code to build the generic instruction. # - push(@code, &make_op('', 'new_instr')); - push(@code, &make_op("$name/$arity", 'store_op', $opnum, $arity)); + push(@code, make_op("$name/$arity", 'new_instr', $opnum)); foreach $op (@ops) { my($var, $type, $type_val) = @$op; |