diff options
Diffstat (limited to 'src/lib_jit.c')
-rw-r--r-- | src/lib_jit.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/src/lib_jit.c b/src/lib_jit.c index 033ab4c4..4cabb2f7 100644 --- a/src/lib_jit.c +++ b/src/lib_jit.c | |||
@@ -114,8 +114,11 @@ LJLIB_CF(jit_attach) | |||
114 | GCstr *s = lj_lib_optstr(L, 2); | 114 | GCstr *s = lj_lib_optstr(L, 2); |
115 | luaL_findtable(L, LUA_REGISTRYINDEX, LJ_VMEVENTS_REGKEY, LJ_VMEVENTS_HSIZE); | 115 | luaL_findtable(L, LUA_REGISTRYINDEX, LJ_VMEVENTS_REGKEY, LJ_VMEVENTS_HSIZE); |
116 | if (s) { /* Attach to given event. */ | 116 | if (s) { /* Attach to given event. */ |
117 | const uint8_t *p = (const uint8_t *)strdata(s); | ||
118 | uint32_t h = s->len; | ||
119 | while (*p) h = h ^ (lj_rol(h, 6) + *p++); | ||
117 | lua_pushvalue(L, 1); | 120 | lua_pushvalue(L, 1); |
118 | lua_rawseti(L, -2, VMEVENT_HASHIDX(s->hash)); | 121 | lua_rawseti(L, -2, VMEVENT_HASHIDX(h)); |
119 | G(L)->vmevmask = VMEVENT_NOCACHE; /* Invalidate cache. */ | 122 | G(L)->vmevmask = VMEVENT_NOCACHE; /* Invalidate cache. */ |
120 | } else { /* Detach if no event given. */ | 123 | } else { /* Detach if no event given. */ |
121 | setnilV(L->top++); | 124 | setnilV(L->top++); |