diff options
author | Björn Gustavsson <[email protected]> | 2017-08-17 06:49:22 +0200 |
---|---|---|
committer | Björn Gustavsson <[email protected]> | 2017-08-23 05:57:38 +0200 |
commit | cbeeed095739223a425649f6085b6959ad905c83 (patch) | |
tree | ed58bc08a28edf53172656d36acb528a014b348d /erts/emulator/beam/beam_debug.c | |
parent | 7f7905f653170daf8a185636329701486fec4ad8 (diff) | |
download | otp-cbeeed095739223a425649f6085b6959ad905c83.tar.gz otp-cbeeed095739223a425649f6085b6959ad905c83.tar.bz2 otp-cbeeed095739223a425649f6085b6959ad905c83.zip |
beam_makeops: Introduce the new type 'W' (machine word)
As a preparation for potentially improving packing in the future,
we will need to make sure that packable types have a defined maximum
size.
The packer algorithm assumes that two 'I' operands can be packed
into one 64-bit word, but there are instructions that use an 'I'
operand to store a pointer. It only works because those instructions
are not packed for other reasons.
Introduce the 'W' type and use it for operands that don't fit in
32 bits.
Diffstat (limited to 'erts/emulator/beam/beam_debug.c')
-rw-r--r-- | erts/emulator/beam/beam_debug.c | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/erts/emulator/beam/beam_debug.c b/erts/emulator/beam/beam_debug.c index afe87288ce..15b18f0667 100644 --- a/erts/emulator/beam/beam_debug.c +++ b/erts/emulator/beam/beam_debug.c @@ -522,12 +522,13 @@ print_op(fmtfn_t to, void *to_arg, int op, int size, BeamInstr* addr) } ap++; break; - case 'I': /* Untagged integer. */ - case 't': + case 't': /* Untagged integers */ + case 'I': + case 'W': switch (op) { - case op_i_gc_bif1_jIsId: - case op_i_gc_bif2_jIIssd: - case op_i_gc_bif3_jIIssd: + case op_i_gc_bif1_jWsId: + case op_i_gc_bif2_jWIssd: + case op_i_gc_bif3_jWIssd: { const ErtsGcBif* p; BifFunction gcf = (BifFunction) *ap; @@ -672,8 +673,8 @@ print_op(fmtfn_t to, void *to_arg, int op, int size, BeamInstr* addr) } } break; - case op_i_jump_on_val_xfII: - case op_i_jump_on_val_yfII: + case op_i_jump_on_val_xfIW: + case op_i_jump_on_val_yfIW: { int n; for (n = ap[-2]; n > 0; n--) { |