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.

move array/object proto under symbol struct

+44 -46
+1
.gitignore
··· 2 2 .nova 3 3 .maid 4 4 .cache 5 + .superset 5 6 6 7 .claude 7 8 .github/artifacts
+2 -5
include/internal.h
··· 153 153 void *jit_ctx; 154 154 #endif 155 155 156 - // TODO: should be under sym struct 157 - // rename object to object_proto 158 - ant_value_t object; 159 - ant_value_t array_proto; 160 - 161 156 ant_value_t global; 162 157 ant_value_t this_val; 163 158 ant_value_t new_target; ··· 194 189 uint64_t counter; 195 190 struct sym_registry_entry *registry; 196 191 192 + ant_value_t object_proto; 193 + ant_value_t array_proto; 197 194 ant_value_t iterator_proto; 198 195 ant_value_t array_iterator_proto; 199 196 ant_value_t string_iterator_proto;
+9 -9
src/ant.c
··· 1411 1411 if (pt != T_OBJ && pt != T_FUNC) break; 1412 1412 1413 1413 ant_value_t proto_proto = js_get_proto(js, proto_val); 1414 - ant_value_t object_proto = js->object; 1414 + ant_value_t object_proto = js->sym.object_proto; 1415 1415 proto_is_null_proto = (vtype(proto_proto) == T_NULL) && 1416 1416 (vdata(proto_val) != vdata(object_proto)); 1417 1417 ··· 2372 2372 } 2373 2373 2374 2374 static inline ant_value_t mkarr(ant_t *js) { 2375 - return alloc_array_with_proto(js, js->array_proto); 2375 + return alloc_array_with_proto(js, js->sym.array_proto); 2376 2376 } 2377 2377 2378 2378 ant_value_t js_mkarr(ant_t *js) { ··· 2381 2381 2382 2382 ant_value_t js_newobj(ant_t *js) { 2383 2383 ant_value_t obj = mkobj(js, 0); 2384 - ant_value_t proto = js->object; 2384 + ant_value_t proto = js->sym.object_proto; 2385 2385 if (vtype(proto) == T_OBJ) js_set_proto_init(obj, proto); 2386 2386 return obj; 2387 2387 } ··· 2660 2660 ant_value_t proto_obj = mkobj(js, 0); 2661 2661 if (is_err(proto_obj)) return proto_obj; 2662 2662 2663 - ant_value_t object_proto = js->object; 2663 + ant_value_t object_proto = js->sym.object_proto; 2664 2664 if (vtype(object_proto) == T_OBJ) { 2665 2665 js_set_proto_init(proto_obj, object_proto); 2666 2666 } ··· 3843 3843 3844 3844 static ant_value_t get_prototype_for_type(ant_t *js, uint8_t type) { 3845 3845 switch (type) { 3846 - case T_OBJ: return js->object; 3847 - case T_ARR: return js->array_proto; 3846 + case T_OBJ: return js->sym.object_proto; 3847 + case T_ARR: return js->sym.array_proto; 3848 3848 case T_STR: return get_ctor_proto(js, "String", 6); 3849 3849 case T_NUM: return get_ctor_proto(js, "Number", 6); 3850 3850 case T_BOOL: return get_ctor_proto(js, "Boolean", 7); ··· 4601 4601 4602 4602 static ant_value_t builtin_Object(ant_t *js, ant_value_t *args, int nargs) { 4603 4603 if (nargs == 0 || vtype(args[0]) == T_NULL || vtype(args[0]) == T_UNDEF) { 4604 - ant_value_t obj_proto = js->object; 4604 + ant_value_t obj_proto = js->sym.object_proto; 4605 4605 if (is_unboxed_obj(js, js->this_val, obj_proto)) return js->this_val; 4606 4606 return js_mkobj(js); 4607 4607 } ··· 12807 12807 12808 12808 set_proto(js, glob, object_proto); 12809 12809 12810 - js->object = object_proto; 12811 - js->array_proto = array_proto; 12810 + js->sym.object_proto = object_proto; 12811 + js->sym.array_proto = array_proto; 12812 12812 js->owns_mem = false; 12813 12813 js->max_size = 0; 12814 12814
+2 -2
src/gc/objects.c
··· 452 452 for (coroutine_t *c = js->active_async_coro; c; c = c->active_parent) gc_mark_coroutine(js, c); 453 453 454 454 gc_mark_value(js, js->global); 455 - gc_mark_value(js, js->object); 456 - gc_mark_value(js, js->array_proto); 455 + gc_mark_value(js, js->sym.object_proto); 456 + gc_mark_value(js, js->sym.array_proto); 457 457 gc_mark_value(js, js->this_val); 458 458 gc_mark_value(js, js->new_target); 459 459 gc_mark_value(js, js->current_func);
+1 -1
src/modules/bigint.c
··· 1470 1470 ant_t *js = rt->js; 1471 1471 1472 1472 ant_value_t glob = js_glob(js); 1473 - ant_value_t object_proto = js->object; 1473 + ant_value_t object_proto = js->sym.object_proto; 1474 1474 ant_value_t function_proto = js_get_slot(glob, SLOT_FUNC_PROTO); 1475 1475 if (vtype(function_proto) == T_UNDEF) function_proto = js_get_ctor_proto(js, "Function", 8); 1476 1476
+1 -1
src/modules/buffer.c
··· 2379 2379 ant_t *js = rt->js; 2380 2380 2381 2381 ant_value_t glob = js->global; 2382 - ant_value_t object_proto = js->object; 2382 + ant_value_t object_proto = js->sym.object_proto; 2383 2383 2384 2384 ant_value_t arraybuffer_ctor_obj = js_mkobj(js); 2385 2385 ant_value_t arraybuffer_proto = js_mkobj(js);
+1 -1
src/modules/collections.c
··· 1023 1023 ant_t *js = rt->js; 1024 1024 1025 1025 ant_value_t glob = js->global; 1026 - ant_value_t object_proto = js->object; 1026 + ant_value_t object_proto = js->sym.object_proto; 1027 1027 1028 1028 ant_value_t iter_sym = get_iterator_sym(); 1029 1029 ant_value_t tag_sym = get_toStringTag_sym();
+1 -1
src/modules/date.c
··· 1287 1287 void init_date_module(void) { 1288 1288 ant_t *js = rt->js; 1289 1289 ant_value_t glob = js->global; 1290 - ant_value_t object_proto = js->object; 1290 + ant_value_t object_proto = js->sym.object_proto; 1291 1291 1292 1292 ant_value_t function_proto = js_get_ctor_proto(js, "Function", 8); 1293 1293 ant_value_t date_proto = js_mkobj(js);
+1 -1
src/modules/lmdb.c
··· 968 968 969 969 static void ensure_lmdb_prototypes(ant_t *js) { 970 970 if (lmdb_types.ready) return; 971 - ant_value_t object_proto = js->object; 971 + ant_value_t object_proto = js->sym.object_proto; 972 972 973 973 ant_value_t env_ctor_obj = js_mkobj(js); 974 974 ant_value_t env_proto = js_mkobj(js);
+2 -2
src/modules/math.c
··· 278 278 ant_t *js = rt->js; 279 279 280 280 ant_value_t glob = js_glob(js); 281 - ant_value_t object_proto = js->object; 282 281 ant_value_t math_obj = mkobj(js, 0); 283 - 282 + ant_value_t object_proto = js->sym.object_proto; 283 + 284 284 js_set_proto_init(math_obj, object_proto); 285 285 js_setprop(js, math_obj, js_mkstr(js, "E", 1), tov(M_E)); 286 286 js_setprop(js, math_obj, js_mkstr(js, "LN10", 4), tov(M_LN10));
+1 -1
src/modules/regex.c
··· 1853 1853 void init_regex_module(void) { 1854 1854 ant_t *js = rt->js; 1855 1855 ant_value_t glob = js->global; 1856 - ant_value_t object_proto = js->object; 1856 + ant_value_t object_proto = js->sym.object_proto; 1857 1857 1858 1858 ant_value_t regexp_proto = js_mkobj(js); 1859 1859 js_set_proto_init(regexp_proto, object_proto);
+1 -1
src/modules/symbol.c
··· 68 68 if (vtype(js->sym.iterator_proto) == T_OBJ) return js->sym.iterator_proto; 69 69 70 70 js->sym.iterator_proto = js_mkobj(js); 71 - js_set_proto_init(js->sym.iterator_proto, js->object); 71 + js_set_proto_init(js->sym.iterator_proto, js->sym.object_proto); 72 72 js_set_sym(js, js->sym.iterator_proto, g_iterator, js_mkfun(sym_this_cb)); 73 73 74 74 return js->sym.iterator_proto;
+7 -7
src/modules/wasm.c
··· 1239 1239 g_wasm_linkerror_proto = js_mkobj(js); 1240 1240 g_wasm_runtimeerror_proto = js_mkobj(js); 1241 1241 1242 - js_set_proto_init(g_wasm_module_proto, js->object); 1243 - js_set_proto_init(g_wasm_instance_proto, js->object); 1244 - js_set_proto_init(g_wasm_global_proto, js->object); 1245 - js_set_proto_init(g_wasm_memory_proto, js->object); 1246 - js_set_proto_init(g_wasm_table_proto, js->object); 1247 - js_set_proto_init(g_wasm_tag_proto, js->object); 1248 - js_set_proto_init(g_wasm_exception_proto, js->object); 1242 + js_set_proto_init(g_wasm_module_proto, js->sym.object_proto); 1243 + js_set_proto_init(g_wasm_instance_proto, js->sym.object_proto); 1244 + js_set_proto_init(g_wasm_global_proto, js->sym.object_proto); 1245 + js_set_proto_init(g_wasm_memory_proto, js->sym.object_proto); 1246 + js_set_proto_init(g_wasm_table_proto, js->sym.object_proto); 1247 + js_set_proto_init(g_wasm_tag_proto, js->sym.object_proto); 1248 + js_set_proto_init(g_wasm_exception_proto, js->sym.object_proto); 1249 1249 1250 1250 js_set_proto_init(g_wasm_compileerror_proto, error_proto); 1251 1251 js_set_proto_init(g_wasm_linkerror_proto, error_proto);
+1 -1
src/silver/glue.c
··· 390 390 391 391 ant_value_t jit_helper_object(sv_vm_t *vm, ant_t *js) { 392 392 ant_value_t obj = mkobj(js, 0); 393 - ant_value_t proto = js->object; 393 + ant_value_t proto = js->sym.object_proto; 394 394 if (vtype(proto) == T_OBJ) js_set_proto_init(obj, proto); 395 395 return obj; 396 396 }
+12 -12
src/silver/ops/literals.h
··· 57 57 ant_object_t *ptr = js_obj_ptr(js_as_obj(obj)); 58 58 sv_obj_site_cache_t *site = sv_obj_site_for_ip(func, ip); 59 59 if (ptr && ptr->shape && site) { 60 - if (site->shared_shape) { 61 - if (site->shared_shape != ptr->shape) { 62 - ant_shape_retain(site->shared_shape); 63 - ant_shape_release(ptr->shape); 64 - ptr->shape = site->shared_shape; 65 - } 66 - uint32_t count = ant_shape_count(ptr->shape); 67 - if (count > ptr->prop_count) (void)js_obj_ensure_prop_capacity(ptr, count); 68 - } else { 69 - site->shared_shape = ptr->shape; 60 + if (site->shared_shape) { 61 + if (site->shared_shape != ptr->shape) { 70 62 ant_shape_retain(site->shared_shape); 63 + ant_shape_release(ptr->shape); 64 + ptr->shape = site->shared_shape; 71 65 } 72 - } 73 - ant_value_t proto = js->object; 66 + uint32_t count = ant_shape_count(ptr->shape); 67 + if (count > ptr->prop_count) (void)js_obj_ensure_prop_capacity(ptr, count); 68 + } else { 69 + site->shared_shape = ptr->shape; 70 + ant_shape_retain(site->shared_shape); 71 + }} 72 + 73 + ant_value_t proto = js->sym.object_proto; 74 74 if (vtype(proto) == T_OBJ) js_set_proto_init(obj, proto); 75 75 vm->stack[vm->sp++] = obj; 76 76 }
+1 -1
src/silver/ops/upvalues.h
··· 11 11 ant_value_t proto_obj = mkobj(js, 0); 12 12 if (is_err(proto_obj)) return proto_obj; 13 13 14 - ant_value_t object_proto = js->object; 14 + ant_value_t object_proto = js->sym.object_proto; 15 15 if (vtype(object_proto) == T_OBJ) js_set_proto_init(proto_obj, object_proto); 16 16 17 17 ant_value_t ctor_key = js_mkstr(js, "constructor", 11);