diff options
author | Björn Gustavsson <[email protected]> | 2011-02-26 11:11:27 +0100 |
---|---|---|
committer | Björn Gustavsson <[email protected]> | 2011-08-16 08:58:49 +0200 |
commit | 0befcf588ae4fe9ea686ea81727114a8dc5c0cac (patch) | |
tree | 42776c505002c3753307349afb8486e5be98c741 /erts/emulator/beam/ops.tab | |
parent | 29d734adaec35052ce153b05621babf9333bc651 (diff) | |
download | otp-0befcf588ae4fe9ea686ea81727114a8dc5c0cac.tar.gz otp-0befcf588ae4fe9ea686ea81727114a8dc5c0cac.tar.bz2 otp-0befcf588ae4fe9ea686ea81727114a8dc5c0cac.zip |
compiler, emulator: Introduce the line/1 instruction
Introduce the line/1 instruction in the compiler and the BEAM
virtual machine. It will not yet be generated by the compiler and
will not actually carry any information.
Diffstat (limited to 'erts/emulator/beam/ops.tab')
-rw-r--r-- | erts/emulator/beam/ops.tab | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/erts/emulator/beam/ops.tab b/erts/emulator/beam/ops.tab index 304ce22ef2..3fb408e821 100644 --- a/erts/emulator/beam/ops.tab +++ b/erts/emulator/beam/ops.tab @@ -94,6 +94,25 @@ i_global_copy return +# +# To ensure that a "move Src x(0)" instruction can be combined +# with the following call instruction, we need to make sure that +# there is no line/1 instruction between the move and the call. +# + +move S r | line Loc | call_ext Ar Func => \ + line Loc | move S r | call_ext Ar Func +move S r | line Loc | call_ext_last Ar Func D => \ + line Loc | move S r | call_ext_last Ar Func D +move S r | line Loc | call_ext_only Ar Func => \ + line Loc | move S r | call_ext_only Ar Func + +move S r | line Loc | call Ar Func => \ + line Loc | move S r | call Ar Func + +line I + + %macro: allocate Allocate -pack %macro: allocate_zero AllocateZero -pack %macro: allocate_heap AllocateHeap -pack |