remove global symbols

This commit is contained in:
2025-06-18 14:03:12 -05:00
parent f2c2ecf692
commit 15d85096a2

View File

@@ -369,7 +369,6 @@ typedef union JSFloat64Union {
enum { enum {
JS_ATOM_TYPE_STRING = 1, JS_ATOM_TYPE_STRING = 1,
JS_ATOM_TYPE_GLOBAL_SYMBOL,
JS_ATOM_TYPE_SYMBOL, JS_ATOM_TYPE_SYMBOL,
}; };
@@ -1513,11 +1512,6 @@ void JS_FreeRuntime(JSRuntime *rt)
case JS_ATOM_TYPE_STRING: case JS_ATOM_TYPE_STRING:
JS_DumpString(rt, p); JS_DumpString(rt, p);
break; break;
case JS_ATOM_TYPE_GLOBAL_SYMBOL:
printf("Symbol.for(");
JS_DumpString(rt, p);
printf(")");
break;
case JS_ATOM_TYPE_SYMBOL: case JS_ATOM_TYPE_SYMBOL:
printf("Symbol("); printf("Symbol(");
JS_DumpString(rt, p); JS_DumpString(rt, p);
@@ -2085,8 +2079,6 @@ static JSAtomKindEnum JS_AtomGetKind(JSContext *ctx, JSAtom v)
switch(p->atom_type) { switch(p->atom_type) {
case JS_ATOM_TYPE_STRING: case JS_ATOM_TYPE_STRING:
return JS_ATOM_KIND_STRING; return JS_ATOM_KIND_STRING;
case JS_ATOM_TYPE_GLOBAL_SYMBOL:
return JS_ATOM_KIND_SYMBOL;
case JS_ATOM_TYPE_SYMBOL: case JS_ATOM_TYPE_SYMBOL:
return JS_ATOM_KIND_SYMBOL; return JS_ATOM_KIND_SYMBOL;
default: default:
@@ -2665,8 +2657,7 @@ static BOOL JS_AtomSymbolHasDescription(JSContext *ctx, JSAtom v)
if (__JS_AtomIsTaggedInt(v)) if (__JS_AtomIsTaggedInt(v))
return FALSE; return FALSE;
p = rt->atom_array[v]; p = rt->atom_array[v];
return ((p->atom_type == JS_ATOM_TYPE_SYMBOL || return (p->atom_type == JS_ATOM_TYPE_SYMBOL &&
p->atom_type == JS_ATOM_TYPE_GLOBAL_SYMBOL) &&
!(p->len == 0 && p->is_wide_char != 0)); !(p->len == 0 && p->is_wide_char != 0));
} }
@@ -37174,35 +37165,6 @@ static const JSCFunctionListEntry js_symbol_proto_funcs[] = {
JS_CGETSET_DEF("description", js_symbol_get_description, NULL ), JS_CGETSET_DEF("description", js_symbol_get_description, NULL ),
}; };
static JSValue js_symbol_for(JSContext *ctx, JSValueConst this_val,
int argc, JSValueConst *argv)
{
JSValue str;
str = JS_ToString(ctx, argv[0]);
if (JS_IsException(str))
return JS_EXCEPTION;
return JS_NewSymbol(ctx, JS_VALUE_GET_STRING(str), JS_ATOM_TYPE_GLOBAL_SYMBOL);
}
static JSValue js_symbol_keyFor(JSContext *ctx, JSValueConst this_val,
int argc, JSValueConst *argv)
{
JSAtomStruct *p;
if (!JS_IsSymbol(argv[0]))
return JS_ThrowTypeError(ctx, "not a symbol");
p = JS_VALUE_GET_PTR(argv[0]);
if (p->atom_type != JS_ATOM_TYPE_GLOBAL_SYMBOL)
return JS_NULL;
return JS_DupValue(ctx, JS_MKPTR(JS_TAG_STRING, p));
}
static const JSCFunctionListEntry js_symbol_funcs[] = {
JS_CFUNC_DEF("for", 1, js_symbol_for ),
JS_CFUNC_DEF("keyFor", 1, js_symbol_keyFor ),
};
/* Set/Map/WeakSet/WeakMap */ /* Set/Map/WeakSet/WeakMap */
#define MAGIC_SET (1 << 0) #define MAGIC_SET (1 << 0)
@@ -38564,8 +38526,6 @@ void JS_AddIntrinsicBaseObjects(JSContext *ctx)
countof(js_symbol_proto_funcs)); countof(js_symbol_proto_funcs));
obj = JS_NewGlobalCConstructor(ctx, "Symbol", js_symbol_constructor, 0, obj = JS_NewGlobalCConstructor(ctx, "Symbol", js_symbol_constructor, 0,
ctx->class_proto[JS_CLASS_SYMBOL]); ctx->class_proto[JS_CLASS_SYMBOL]);
JS_SetPropertyFunctionList(ctx, obj, js_symbol_funcs,
countof(js_symbol_funcs));
for(i = JS_ATOM_Symbol_toPrimitive; i < JS_ATOM_END; i++) { for(i = JS_ATOM_Symbol_toPrimitive; i < JS_ATOM_END; i++) {
char buf[ATOM_GET_STR_BUF_SIZE]; char buf[ATOM_GET_STR_BUF_SIZE];
const char *str, *p; const char *str, *p;