From 37b85ca10eef7236dbea0decd265c40fa8d0caf1 Mon Sep 17 00:00:00 2001 From: Lars Knoll Date: Sun, 8 Apr 2018 16:43:10 +0200 Subject: Add SymbolObject, well known symbols and fix most remaining issues Added SymbolObject, the equivalent to StringObject which was still missing so far. Added the predefined standard symbols, and fixed most test failures related to symbols. Change-Id: I1e28b439e7c4f5141b4a09bd8fb666c60691f192 Reviewed-by: Simon Hausmann --- src/qml/jsruntime/qv4engine_p.h | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) (limited to 'src/qml/jsruntime/qv4engine_p.h') diff --git a/src/qml/jsruntime/qv4engine_p.h b/src/qml/jsruntime/qv4engine_p.h index 362d95b56a..30e589919c 100644 --- a/src/qml/jsruntime/qv4engine_p.h +++ b/src/qml/jsruntime/qv4engine_p.h @@ -312,6 +312,22 @@ public: }; Value *jsStrings; + enum JSSymbols { + Symbol_hasInstance, + Symbol_isConcatSpreadable, + Symbol_iterator, + Symbol_match, + Symbol_replace, + Symbol_search, + Symbol_species, + Symbol_split, + Symbol_toPrimitive, + Symbol_toStringTag, + Symbol_unscopables, + NJSSymbols + }; + Value *jsSymbols; + String *id_empty() const { return reinterpret_cast(jsStrings + String_Empty); } String *id_undefined() const { return reinterpret_cast(jsStrings + String_undefined); } String *id_null() const { return reinterpret_cast(jsStrings + String_null); } @@ -350,6 +366,18 @@ public: String *id_buffer() const { return reinterpret_cast(jsStrings + String_buffer); } String *id_lastIndex() const { return reinterpret_cast(jsStrings + String_lastIndex); } + Symbol *symbol_hasInstance() const { return reinterpret_cast(jsSymbols + Symbol_hasInstance); } + Symbol *symbol_isConcatSpreadable() const { return reinterpret_cast(jsSymbols + Symbol_isConcatSpreadable); } + Symbol *symbol_iterator() const { return reinterpret_cast(jsSymbols + Symbol_iterator); } + Symbol *symbol_match() const { return reinterpret_cast(jsSymbols + Symbol_match); } + Symbol *symbol_replace() const { return reinterpret_cast(jsSymbols + Symbol_replace); } + Symbol *symbol_search() const { return reinterpret_cast(jsSymbols + Symbol_search); } + Symbol *symbol_species() const { return reinterpret_cast(jsSymbols + Symbol_species); } + Symbol *symbol_split() const { return reinterpret_cast(jsSymbols + Symbol_split); } + Symbol *symbol_toPrimitive() const { return reinterpret_cast(jsSymbols + Symbol_toPrimitive); } + Symbol *symbol_toStringTag() const { return reinterpret_cast(jsSymbols + Symbol_toStringTag); } + Symbol *symbol_unscopables() const { return reinterpret_cast(jsSymbols + Symbol_unscopables); } + #ifndef V4_BOOTSTRAP QIntrusiveList compilationUnits; #endif @@ -416,6 +444,7 @@ public: Heap::String *newIdentifier(const QString &text); Heap::Object *newStringObject(const String *string); + Heap::Object *newSymbolObject(const Symbol *symbol); Heap::Object *newNumberObject(double value); Heap::Object *newBooleanObject(bool b); -- cgit v1.2.3