MIRROR: javascript for ๐Ÿœ's, a tiny runtime with big ambitions
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

proper gc checks in lookup

+17 -6
+1 -1
meson.build
··· 74 74 build_date = run_command('date', '+%Y-%m-%d', check: true).stdout().strip() 75 75 76 76 version_conf = configuration_data() 77 - version_conf.set('ANT_VERSION', '0.0.7.20') 77 + version_conf.set('ANT_VERSION', '0.0.7.21') 78 78 version_conf.set('ANT_GIT_HASH', git_hash) 79 79 version_conf.set('ANT_BUILD_DATE', build_date) 80 80
+16 -5
src/ant.c
··· 1946 1946 static jsval_t lookup(struct js *js, const char *buf, size_t len) { 1947 1947 if (js->flags & F_NOEXEC) return 0; 1948 1948 1949 - for (jsval_t scope = js->scope;;) { 1950 - jsoff_t off = lkp(js, scope, buf, len); 1951 - if (off != 0) return mkval(T_PROP, off); 1952 - if (vdata(scope) == 0) break; 1953 - scope = mkval(T_OBJ, loadoff(js, (jsoff_t) (vdata(scope) + sizeof(jsoff_t)))); 1949 + jsoff_t off = lkp(js, js->scope, buf, len); 1950 + if (off != 0) return mkval(T_PROP, off); 1951 + 1952 + if (global_scope_stack) { 1953 + int stack_len = utarray_len(global_scope_stack); 1954 + for (int i = stack_len - 1; i >= 0; i--) { 1955 + jsoff_t *scope_off = (jsoff_t *)utarray_eltptr(global_scope_stack, i); 1956 + jsval_t scope = mkval(T_OBJ, *scope_off); 1957 + off = lkp(js, scope, buf, len); 1958 + if (off != 0) return mkval(T_PROP, off); 1959 + } 1960 + } else { 1961 + for (jsval_t scope = upper(js, js->scope); vdata(scope) != 0; scope = upper(js, scope)) { 1962 + off = lkp(js, scope, buf, len); 1963 + if (off != 0) return mkval(T_PROP, off); 1964 + } 1954 1965 } 1955 1966 1956 1967 if (js->flags & F_STRICT) {