aboutsummaryrefslogtreecommitdiffstats
path: root/erts/emulator/beam/ops.tab
diff options
context:
space:
mode:
authorBjörn Gustavsson <[email protected]>2010-11-11 13:49:32 +0100
committerBjörn Gustavsson <[email protected]>2011-01-17 15:23:40 +0100
commit21cd0c4f8654286ce8b14157529fcfc916fc209e (patch)
tree935f25fc42a89afab0abe82145ba5959614bf91a /erts/emulator/beam/ops.tab
parent30f8eebe7b74a978de7acdb889b5d9e7a6f19ef9 (diff)
downloadotp-21cd0c4f8654286ce8b14157529fcfc916fc209e.tar.gz
otp-21cd0c4f8654286ce8b14157529fcfc916fc209e.tar.bz2
otp-21cd0c4f8654286ce8b14157529fcfc916fc209e.zip
Eliminate the special instructions for selecting floats and bignums
Diffstat (limited to 'erts/emulator/beam/ops.tab')
-rw-r--r--erts/emulator/beam/ops.tab14
1 files changed, 8 insertions, 6 deletions
diff --git a/erts/emulator/beam/ops.tab b/erts/emulator/beam/ops.tab
index 7f4035c4e6..2d89926bc5 100644
--- a/erts/emulator/beam/ops.tab
+++ b/erts/emulator/beam/ops.tab
@@ -132,8 +132,12 @@ select_val S=s Fail=f Size=u Rest=* | use_jump_tab(Size, Rest) => \
is_integer Fail=f S | select_val S=s Fail=f Size=u Rest=* | use_jump_tab(Size, Rest) => \
gen_jump_tab(S, Fail, Size, Rest)
+is_integer TypeFail=f S | select_val S=s Fail=f Size=u Rest=* | \
+ mixed_types(Size, Rest) => \
+ gen_split_values(S, TypeFail, Fail, Size, Rest)
+
select_val S=s Fail=f Size=u Rest=* | mixed_types(Size, Rest) => \
- gen_split_values(S, Fail, Size, Rest)
+ gen_split_values(S, Fail, Fail, Size, Rest)
is_integer Fail=f S | select_val S=s Fail=f Size=u Rest=* | \
fixed_size_values(Size, Rest) => gen_select_val(S, Fail, Size, Rest)
@@ -141,12 +145,12 @@ is_integer Fail=f S | select_val S=s Fail=f Size=u Rest=* | \
is_atom Fail=f S | select_val S=s Fail=f Size=u Rest=* | \
fixed_size_values(Size, Rest) => gen_select_val(S, Fail, Size, Rest)
+select_val S=s Fail=f Size=u Rest=* | floats_or_bignums(Size, Rest) => \
+ gen_select_literals(S, Fail, Size, Rest)
+
select_val S=s Fail=f Size=u Rest=* | fixed_size_values(Size, Rest) => \
gen_select_val(S, Fail, Size, Rest)
-select_val S=s Fail=f Size=u Rest=* | all_values_are_big(Size, Rest) => \
- gen_select_big(S, Fail, Size, Rest)
-
is_tuple Fail=f S | select_tuple_arity S=s Fail=f Size=u Rest=* => \
gen_select_tuple_arity(S, Fail, Size, Rest)
@@ -155,8 +159,6 @@ select_tuple_arity S=s Fail=f Size=u Rest=* => \
i_select_val s f I
i_select_tuple_arity s f I
-i_select_big s f
-i_select_float s f I
i_jump_on_val_zero s f I
i_jump_on_val s f I I