diff options
author | Mike Pall <mike> | 2012-07-20 18:54:52 +0200 |
---|---|---|
committer | Mike Pall <mike> | 2012-07-20 18:54:52 +0200 |
commit | 3636a720a57adefb84c7ac70b68f640caf47f27f (patch) | |
tree | 26959ea44d123b9a2361b8cd7fe5962acbd88502 /src/lj_func.c | |
parent | 834ff6d36d85f75d1c11c4d83dc6f56f726b7419 (diff) | |
download | luajit-3636a720a57adefb84c7ac70b68f640caf47f27f.tar.gz luajit-3636a720a57adefb84c7ac70b68f640caf47f27f.tar.bz2 luajit-3636a720a57adefb84c7ac70b68f640caf47f27f.zip |
Turn loads from immutable upvalues into constants.
Diffstat (limited to 'src/lj_func.c')
-rw-r--r-- | src/lj_func.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/src/lj_func.c b/src/lj_func.c index 0c0b9014..0af53cc4 100644 --- a/src/lj_func.c +++ b/src/lj_func.c | |||
@@ -163,8 +163,9 @@ GCfunc *lj_func_newL_gc(lua_State *L, GCproto *pt, GCfuncL *parent) | |||
163 | for (i = 0; i < nuv; i++) { | 163 | for (i = 0; i < nuv; i++) { |
164 | uint32_t v = proto_uv(pt)[i]; | 164 | uint32_t v = proto_uv(pt)[i]; |
165 | GCupval *uv; | 165 | GCupval *uv; |
166 | if ((v & 0x8000)) { | 166 | if ((v & PROTO_UV_LOCAL)) { |
167 | uv = func_finduv(L, base + (v & 0xff)); | 167 | uv = func_finduv(L, base + (v & 0xff)); |
168 | uv->immutable = ((v / PROTO_UV_IMMUTABLE) & 1); | ||
168 | uv->dhash = (uint32_t)(uintptr_t)mref(parent->pc, char) ^ (v << 24); | 169 | uv->dhash = (uint32_t)(uintptr_t)mref(parent->pc, char) ^ (v << 24); |
169 | } else { | 170 | } else { |
170 | uv = &gcref(puv[v])->uv; | 171 | uv = &gcref(puv[v])->uv; |