diff options
author | Björn Gustavsson <[email protected]> | 2010-11-11 08:50:27 +0100 |
---|---|---|
committer | Björn Gustavsson <[email protected]> | 2011-01-17 15:23:37 +0100 |
commit | 12d221c867d057379933d1434cd422302ad1e5ac (patch) | |
tree | 9bb6ec45c4a8978c84d72a5509108878efa79cc0 /erts/emulator | |
parent | 177cca2e0ad8752022c3322f537ee836598b342a (diff) | |
download | otp-12d221c867d057379933d1434cd422302ad1e5ac.tar.gz otp-12d221c867d057379933d1434cd422302ad1e5ac.tar.bz2 otp-12d221c867d057379933d1434cd422302ad1e5ac.zip |
beam_makeops: Relax requirements for having specific instructions
Diffstat (limited to 'erts/emulator')
-rwxr-xr-x | erts/emulator/utils/beam_makeops | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/erts/emulator/utils/beam_makeops b/erts/emulator/utils/beam_makeops index de19a2e35b..5c242ce9c4 100755 --- a/erts/emulator/utils/beam_makeops +++ b/erts/emulator/utils/beam_makeops @@ -80,6 +80,8 @@ my %cold_code; my @unnumbered_generic; my %unnumbered; +my %is_transformed; + # # Code transformations. # @@ -474,8 +476,9 @@ sub emulator_output { $gen_transform_offset{$key} : -1; my($spec_op) = $gen_to_spec{$key}; my($num_specific) = $num_specific{$key}; - defined $spec_op or $tr != -1 or + defined $spec_op or $obsolete[$gen_opnum{$name,$arity}] or + $is_transformed{$name,$arity} or error("instruction $key has no specific instruction"); $spec_op = -1 unless defined $spec_op; &init_item($name, $arity, $spec_op, $num_specific, $tr, $min_window{$key}); @@ -1103,6 +1106,10 @@ sub compile_transform { if ($obsolete[$gen_opnum{$name,$arity}]) { error("obsolete function must not be used in transformations"); } + + if ($src) { + $is_transformed{$name,$arity} = 1; + } [$name,$arity,@ops]; } |