aboutsummaryrefslogtreecommitdiffstats
path: root/erts/emulator/beam/beam_emu.c
diff options
context:
space:
mode:
authorBjörn Gustavsson <[email protected]>2011-10-12 12:57:19 +0200
committerBjörn Gustavsson <[email protected]>2011-10-12 12:57:19 +0200
commit4097f85c41d81b2a535cf95ba56aa807c1256beb (patch)
tree6eac185b5da75e594ade499fcc3b9f66852eaf80 /erts/emulator/beam/beam_emu.c
parent2dffccb293bb2bb6a9be3424240eb9b0e362a987 (diff)
parent09a5930d116bc4ebfac9404845bed8181662a0db (diff)
downloadotp-4097f85c41d81b2a535cf95ba56aa807c1256beb.tar.gz
otp-4097f85c41d81b2a535cf95ba56aa807c1256beb.tar.bz2
otp-4097f85c41d81b2a535cf95ba56aa807c1256beb.zip
Merge branch 'bjorn/erts/beam-loader-fixes'
* bjorn/erts/beam-loader-fixes: Print transformtions sorted on the name of the first instruction Share code for call of predicate and transformation functions Simplify transformations of gc_bif[123] instructions Refactor 'too_old_compiler' handling Introduce 'try_me_else_fail' Combine 'store_var' with 'next_arg' Merge 'next_instr' and 'is_op' into 'next_instr' Merge 'new_instr' and 'store_op' into 'new_instr' Combine a 'call' instruction with the following 'end' instruction Remove some unnecessary type constraints in transformations Get rid of redundant 'try_me_else' and 'fail' instructions Add some more information in instruction comments In transformations, don't store variables that are never used Remove redundant 'next_arg' before 'next_instr' Generalize and rename is_set_var_instr() to is_instr() Remove too_old_compiler handling for very old instruction variants Remove the special instructions for the hybrid heap emulator Remove optimization of 'move R R'
Diffstat (limited to 'erts/emulator/beam/beam_emu.c')
-rw-r--r--erts/emulator/beam/beam_emu.c87
1 files changed, 0 insertions, 87 deletions
diff --git a/erts/emulator/beam/beam_emu.c b/erts/emulator/beam/beam_emu.c
index 4b5b5cbdaa..5691f7aec1 100644
--- a/erts/emulator/beam/beam_emu.c
+++ b/erts/emulator/beam/beam_emu.c
@@ -4863,92 +4863,6 @@ void process_main(void)
}
/*
- * Instructions for allocating on the message area.
- */
-
- OpCase(i_global_cons):
- {
- BeamInstr *next;
-#ifdef HYBRID
- Eterm *hp;
-
- PreFetch(0,next);
- TestGlobalHeap(2,2,hp);
- hp[0] = r(0);
- hp[1] = x(1);
- r(0) = make_list(hp);
-#ifndef INCREMENTAL
- global_htop += 2;
-#endif
- NextPF(0,next);
-#else
- PreFetch(0,next);
- c_p->freason = EXC_INTERNAL_ERROR;
- goto find_func_info;
-#endif
- }
-
- OpCase(i_global_tuple):
- {
- BeamInstr *next;
- int len;
-#ifdef HYBRID
- Eterm list;
- Eterm *hp;
-#endif
-
- if ((len = list_length(r(0))) < 0) {
- goto badarg;
- }
-
- PreFetch(0,next);
-#ifdef HYBRID
- TestGlobalHeap(len + 1,1,hp);
- list = r(0);
- r(0) = make_tuple(hp);
- *hp++ = make_arityval(len);
- while(is_list(list))
- {
- Eterm* cons = list_val(list);
- *hp++ = CAR(cons);
- list = CDR(cons);
- }
-#ifndef INCREMENTAL
- global_htop += len + 1;
-#endif
- NextPF(0,next);
-#else
- c_p->freason = EXC_INTERNAL_ERROR;
- goto find_func_info;
-#endif
- }
-
- OpCase(i_global_copy):
- {
- BeamInstr *next;
- PreFetch(0,next);
-#ifdef HYBRID
- if (!IS_CONST(r(0)))
- {
- BM_SWAP_TIMER(system,copy);
- SWAPOUT;
- reg[0] = r(0);
- reg[1] = NIL;
- r(0) = copy_struct_lazy(c_p,r(0),0);
- ASSERT(ma_src_top == 0);
- ASSERT(ma_dst_top == 0);
- ASSERT(ma_offset_top == 0);
- SWAPIN;
- BM_SWAP_TIMER(copy,system);
- }
- NextPF(0,next);
-#else
- c_p->freason = EXC_INTERNAL_ERROR;
- goto find_func_info;
-#endif
- }
-
- /*
* New floating point instructions.
*/
@@ -5241,7 +5155,6 @@ void process_main(void)
OpCase(int_code_end):
OpCase(label_L):
- OpCase(too_old_compiler):
OpCase(on_load):
OpCase(line_I):
erl_exit(1, "meta op\n");