aboutsummaryrefslogtreecommitdiffstats
path: root/erts/emulator/beam/instrs.tab
AgeCommit message (Collapse)Author
2017-10-01Move out variables from the head of combined instructionsBjörn Gustavsson
Move out from the head the variables that are only used in the excute phase.
2017-10-01instrs.tab: Add missing -no_next directivesBjörn Gustavsson
2017-09-13Refactor instructions to support relative jumpsBjörn Gustavsson
Introduce new macros that can be used for relative jumps and use them consistently. Test that everything works by using a non-zero constant JUMP_OFFSET. The loader subtracts JUMP_OFFSET from loaded labels, and all instructions that use 'f' operands add it back.
2017-09-11Avoid using $Src more than onceBjörn Gustavsson
The C compiler will probably optimize this, but just to be sure...
2017-09-04Don't allow macros to assign to hard-coded variablesBjörn Gustavsson
It's bad style. Pass the name of the variable as an extra argument to the macro.
2017-09-04Eliminate unecessary instruction macro i_move_call_only()Björn Gustavsson
2017-08-31Add missing -no_next directivesBjörn Gustavsson
2017-08-31Eliminate three arguments for the apply() helperBjörn Gustavsson
We don't need to pass x(0), x(1), and x(2) because they can already be found in the register array.
2017-08-31Add annotations for likely/unlikelyBjörn Gustavsson
In a correct Erlang programs, we can expect that: * A GC test instruction (such as test_heap) is more likely not to do the GC. * A BIF is more likely to succeed than to fail. * A BIF is more likely to fail in a guard than in a body. * An apply or fun call is likely to succeed. Annotate conditions accordingly.
2017-08-22Add missing -no_next for badarg instructionBjörn Gustavsson
2017-08-11Break out most instructions from beam_emu.cBjörn Gustavsson
2017-08-08Simplify specifying implementation of instructionsBjörn Gustavsson
Eliminate the need to write pre-processor macros for each instruction. Instead allow the implementation of instruction to be written in C directly in the .tab files. Rewrite all existing macros in this way and remove the %macro directive.