aboutsummaryrefslogtreecommitdiffstats
path: root/erts/emulator/beam/beam_load.c
diff options
context:
space:
mode:
authorSverker Eriksson <[email protected]>2012-01-11 21:15:39 +0100
committerSverker Eriksson <[email protected]>2012-02-21 12:22:57 +0100
commit9df5bbccee7f50e11969ed41035ee8bc4bf5f42a (patch)
treed0c95a7b8544f799a65b56d07ff084984f81a24c /erts/emulator/beam/beam_load.c
parent272a61ce4cfa7e92a037fbf71bc79ec0456f8b2b (diff)
downloadotp-9df5bbccee7f50e11969ed41035ee8bc4bf5f42a.tar.gz
otp-9df5bbccee7f50e11969ed41035ee8bc4bf5f42a.tar.bz2
otp-9df5bbccee7f50e11969ed41035ee8bc4bf5f42a.zip
erts: Make use of def_lambdas optimization during loading
The default array was defined but not used.
Diffstat (limited to 'erts/emulator/beam/beam_load.c')
-rw-r--r--erts/emulator/beam/beam_load.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/erts/emulator/beam/beam_load.c b/erts/emulator/beam/beam_load.c
index 3040a2b7cd..27a5e72113 100644
--- a/erts/emulator/beam/beam_load.c
+++ b/erts/emulator/beam/beam_load.c
@@ -1409,9 +1409,12 @@ read_lambda_table(LoaderState* stp)
int i;
GetInt(stp, 4, stp->num_lambdas);
- stp->lambdas_allocated = stp->num_lambdas;
- stp->lambdas = (Lambda *) erts_alloc(ERTS_ALC_T_LOADER_TMP,
- stp->num_lambdas * sizeof(Lambda));
+ if (stp->num_lambdas > stp->lambdas_allocated) {
+ ASSERT(stp->lambdas == stp->def_lambdas);
+ stp->lambdas_allocated = stp->num_lambdas;
+ stp->lambdas = (Lambda *) erts_alloc(ERTS_ALC_T_LOADER_TMP,
+ stp->num_lambdas * sizeof(Lambda));
+ }
for (i = 0; i < stp->num_lambdas; i++) {
Uint n;
Uint32 Index;