diff options
author | Björn Gustavsson <[email protected]> | 2016-08-23 07:46:43 +0200 |
---|---|---|
committer | Björn Gustavsson <[email protected]> | 2016-09-01 15:29:32 +0200 |
commit | d5ba65f0aa25768c1af7a1639eb73298b029eaf3 (patch) | |
tree | ea37b407bb1e0edd549d510bcb18e689bbdc6824 /erts/emulator/beam/beam_emu.c | |
parent | 18d398f0908346dbf9f7e2c08f68759a05673d2f (diff) | |
download | otp-d5ba65f0aa25768c1af7a1639eb73298b029eaf3.tar.gz otp-d5ba65f0aa25768c1af7a1639eb73298b029eaf3.tar.bz2 otp-d5ba65f0aa25768c1af7a1639eb73298b029eaf3.zip |
Slightly reduce code size of process_main()
clang will generate smaller code if we avoid reassigning the
reg and freg arrays. That can be easily arranged by passing them
as arguments to process_main().
Diffstat (limited to 'erts/emulator/beam/beam_emu.c')
-rw-r--r-- | erts/emulator/beam/beam_emu.c | 10 |
1 files changed, 4 insertions, 6 deletions
diff --git a/erts/emulator/beam/beam_emu.c b/erts/emulator/beam/beam_emu.c index c704323bb2..0ba06058a5 100644 --- a/erts/emulator/beam/beam_emu.c +++ b/erts/emulator/beam/beam_emu.c @@ -1078,7 +1078,7 @@ static Eterm make_arglist(Process* c_p, Eterm* reg, int a); void init_emulator(void) { - process_main(); + process_main(0, 0); } /* @@ -1225,7 +1225,7 @@ init_emulator(void) * the instructions' C labels to the loader. * The second call starts execution of BEAM code. This call never returns. */ -void process_main(void) +void process_main(Eterm * x_reg_array, FloatDef* f_reg_array) { static int init_done = 0; Process* c_p = NULL; @@ -1237,7 +1237,7 @@ void process_main(void) /* Pointer to X registers: x(1)..x(N); reg[0] is used when doing GC, * in all other cases x0 is used. */ - register Eterm* reg REG_xregs = NULL; + register Eterm* reg REG_xregs = x_reg_array; /* * Top of heap (next free location); grows upwards. @@ -1264,7 +1264,7 @@ void process_main(void) * X registers and floating point registers are located in * scheduler specific data. */ - register FloatDef *freg; + register FloatDef *freg = f_reg_array; /* * For keeping the negative old value of 'reds' when call saving is active. @@ -1350,8 +1350,6 @@ void process_main(void) start_time_i = c_p->i; } - reg = erts_proc_sched_data(c_p)->x_reg_array; - freg = erts_proc_sched_data(c_p)->f_reg_array; ERL_BITS_RELOAD_STATEP(c_p); { int reds; |