From 4e4e5a6f2694187498445a6ac6f1634ce8141119 Mon Sep 17 00:00:00 2001 From: Apple Date: Sat, 7 May 2011 12:40:31 +0000 Subject: [PATCH] JavaScriptCore-621.1.tar.gz --- API/APICast.h | 1 - API/APIShims.h | 13 +- API/JSBase.cpp | 1 + API/JSCallbackFunction.cpp | 1 - API/JSCallbackObject.cpp | 1 + API/JSCallbackObject.h | 124 +- API/JSCallbackObjectFunctions.h | 12 +- API/JSClassRef.cpp | 51 +- API/JSContextRef.cpp | 35 +- API/JSObjectRef.cpp | 51 +- API/JSObjectRefPrivate.h | 74 + API/JSStringRef.h | 3 +- API/JSValueRef.cpp | 35 +- API/JSValueRef.h | 23 + API/JSWeakObjectMapRefInternal.h | 68 + API/JSWeakObjectMapRefPrivate.cpp | 84 + API/JSWeakObjectMapRefPrivate.h | 95 + API/WebKitAvailability.h | 166 +- API/tests/testapi.c | 102 + Android.mk | 29 +- Android.v8.wtf.mk | 10 +- DerivedSources.make | 5 + DerivedSources.pro | 10 +- GNUmakefile.am | 61 +- JavaScriptCore.exp | 181 +- JavaScriptCore.gyp/JavaScriptCore.gyp | 3 +- JavaScriptCore.gypi | 48 +- JavaScriptCore.iPhone.order | 1220 ------ JavaScriptCore.order | 3430 +++++++++-------- JavaScriptCore.pri | 228 +- JavaScriptCore.pro | 241 +- assembler/ARMAssembler.cpp | 17 +- assembler/ARMAssembler.h | 59 +- assembler/ARMv7Assembler.h | 635 ++- assembler/AbstractMacroAssembler.h | 25 +- assembler/AssemblerBuffer.h | 2 - assembler/AssemblerBufferWithConstantPool.h | 2 - assembler/CodeLocation.h | 1 - assembler/LinkBuffer.h | 2 - assembler/MIPSAssembler.h | 944 +++++ assembler/MacroAssembler.h | 13 +- assembler/MacroAssemblerARM.h | 115 +- assembler/MacroAssemblerARMv7.h | 189 +- assembler/MacroAssemblerCodeRef.h | 2 - assembler/MacroAssemblerMIPS.h | 1711 ++++++++ assembler/MacroAssemblerX86.h | 5 +- assembler/MacroAssemblerX86Common.h | 77 +- assembler/MacroAssemblerX86_64.h | 13 +- assembler/RepatchBuffer.h | 2 - assembler/X86Assembler.h | 58 +- bytecode/CodeBlock.cpp | 254 +- bytecode/CodeBlock.h | 45 +- bytecode/EvalCodeCache.h | 3 +- bytecode/Instruction.h | 5 +- bytecode/JumpTable.cpp | 2 + bytecode/Opcode.h | 22 +- bytecode/SamplingTool.cpp | 4 +- bytecompiler/BytecodeGenerator.cpp | 72 +- bytecompiler/BytecodeGenerator.h | 7 +- bytecompiler/NodesCodegen.cpp | 26 +- config.h | 10 +- create_hash_table | 26 +- create_rvct_stubs => create_jit_stubs | 31 +- create_regex_tables | 112 + debugger/Debugger.cpp | 2 +- debugger/DebuggerCallFrame.cpp | 4 +- interpreter/CallFrame.h | 7 +- interpreter/Interpreter.cpp | 770 +++- interpreter/Interpreter.h | 13 +- interpreter/RegisterFile.cpp | 17 + interpreter/RegisterFile.h | 9 +- jit/ExecutableAllocator.cpp | 36 + jit/ExecutableAllocator.h | 44 +- jit/ExecutableAllocatorFixedVMPool.cpp | 85 +- jit/ExecutableAllocatorPosix.cpp | 39 +- jit/ExecutableAllocatorSymbian.cpp | 2 +- jit/ExecutableAllocatorWin.cpp | 7 +- jit/JIT.cpp | 25 +- jit/JIT.h | 263 +- jit/JITArithmetic.cpp | 1464 ++----- jit/JITArithmetic32_64.cpp | 1413 +++++++ jit/JITCall.cpp | 10 +- jit/JITCode.h | 2 - jit/JITInlineMethods.h | 75 +- jit/JITOpcodes.cpp | 1743 ++------- jit/JITOpcodes32_64.cpp | 1531 ++++++++ jit/JITPropertyAccess.cpp | 1233 ++---- jit/JITPropertyAccess32_64.cpp | 1191 ++++++ jit/JITStubCall.h | 4 +- jit/JITStubs.cpp | 744 ++-- jit/JITStubs.h | 76 +- jit/JSInterfaceJIT.h | 320 ++ jit/SpecializedThunkJIT.h | 174 + jit/ThunkGenerators.cpp | 160 + jit/ThunkGenerators.h | 46 + jsc.cpp | 14 +- jsc.pro | 6 +- make-generated-sources.sh | 1 + os-win32/stdint.h | 4 +- parser/Grammar.y | 9 +- parser/Lexer.cpp | 7 +- parser/Nodes.h | 6 - parser/Parser.cpp | 5 +- pcre/pcre_exec.cpp | 2 +- profiler/CallIdentifier.h | 4 +- profiler/Profile.cpp | 4 +- profiler/ProfileGenerator.cpp | 6 +- profiler/ProfileNode.cpp | 9 +- qt/api/QtScript.pro | 12 +- qt/api/qscriptconverter_p.h | 82 + qt/api/qscriptengine.cpp | 98 + qt/api/qscriptengine.h | 12 + qt/api/qscriptengine_p.cpp | 40 +- qt/api/qscriptengine_p.h | 46 +- qt/api/qscriptprogram.cpp | 136 + qt/api/qscriptprogram.h | 53 + qt/api/qscriptprogram_p.h | 129 + qt/api/qscriptstring.cpp | 131 + qt/api/qscriptstring.h | 58 + qt/api/qscriptstring_p.h | 112 + qt/api/qscriptsyntaxcheckresult.cpp | 148 + qt/api/qscriptsyntaxcheckresult.h | 50 + qt/api/qscriptsyntaxcheckresult_p.h | 73 + qt/api/qscriptvalue.cpp | 35 +- qt/api/qscriptvalue_p.h | 266 +- qt/api/qtscriptglobal.h | 27 +- qt/tests/qscriptengine/qscriptengine.pro | 1 + qt/tests/qscriptengine/tst_qscriptengine.cpp | 250 ++ qt/tests/qscriptstring/qscriptstring.pro | 7 + qt/tests/qscriptstring/tst_qscriptstring.cpp | 175 + qt/tests/qscriptvalue/qscriptvalue.pro | 7 +- qt/tests/qscriptvalue/tst_qscriptvalue.cpp | 94 +- qt/tests/qscriptvalue/tst_qscriptvalue.h | 196 + .../tst_qscriptvalue_generated.cpp | 1922 +++++++++ qt/tests/tests.pri | 9 - qt/tests/tests.pro | 3 +- runtime/ArrayPrototype.cpp | 159 +- runtime/CachedTranscendentalFunction.h | 103 + runtime/Collector.cpp | 112 +- runtime/Collector.h | 14 +- runtime/CollectorHeapIterator.h | 22 +- runtime/Completion.cpp | 12 +- runtime/Completion.h | 2 +- runtime/DateConstructor.cpp | 5 +- runtime/DateConversion.cpp | 2 +- runtime/DatePrototype.cpp | 10 +- runtime/Error.cpp | 8 +- runtime/ErrorPrototype.cpp | 5 +- runtime/ExceptionHelpers.cpp | 26 +- runtime/ExceptionHelpers.h | 2 + runtime/Executable.cpp | 29 +- runtime/Executable.h | 15 +- runtime/FunctionConstructor.cpp | 2 +- runtime/FunctionPrototype.cpp | 5 +- runtime/GetterSetter.h | 1 + runtime/Identifier.cpp | 172 +- runtime/Identifier.h | 117 +- runtime/InitializeThreading.cpp | 2 + runtime/InternalFunction.cpp | 6 +- runtime/JSAPIValueWrapper.h | 2 - runtime/JSActivation.cpp | 9 +- runtime/JSActivation.h | 5 +- runtime/JSArray.cpp | 12 +- runtime/JSArray.h | 6 +- runtime/JSCell.cpp | 10 - runtime/JSCell.h | 14 +- runtime/JSFunction.cpp | 37 +- runtime/JSFunction.h | 8 +- runtime/JSGlobalData.cpp | 62 +- runtime/JSGlobalData.h | 60 +- runtime/JSGlobalObject.cpp | 41 +- runtime/JSGlobalObject.h | 19 +- runtime/JSGlobalObjectFunctions.cpp | 39 +- runtime/JSImmediate.h | 6 +- runtime/JSLock.cpp | 8 +- runtime/JSNumberCell.cpp | 5 - runtime/JSNumberCell.h | 1 - runtime/JSONObject.cpp | 15 +- runtime/JSONObject.h | 2 + runtime/JSObject.cpp | 9 +- runtime/JSObject.h | 69 +- runtime/JSPropertyNameIterator.h | 11 +- runtime/JSStaticScopeObject.cpp | 2 +- runtime/JSStaticScopeObject.h | 2 +- runtime/JSString.cpp | 174 +- runtime/JSString.h | 374 +- runtime/JSStringBuilder.h | 133 + runtime/JSTypeInfo.h | 8 +- runtime/JSValue.cpp | 4 + runtime/JSValue.h | 17 +- runtime/JSVariableObject.h | 2 +- runtime/JSZombie.h | 2 - runtime/LiteralParser.cpp | 2 +- runtime/Lookup.cpp | 14 +- runtime/Lookup.h | 23 +- runtime/MathObject.cpp | 10 +- runtime/NativeErrorConstructor.cpp | 11 +- runtime/NativeErrorConstructor.h | 2 +- runtime/NativeErrorPrototype.cpp | 8 +- runtime/NativeErrorPrototype.h | 3 +- runtime/NumberConstructor.cpp | 21 +- runtime/NumberPrototype.cpp | 46 +- runtime/NumericStrings.h | 23 + runtime/ObjectPrototype.cpp | 3 +- runtime/Operations.cpp | 7 - runtime/Operations.h | 187 +- runtime/PropertyNameArray.cpp | 2 +- runtime/PropertySlot.cpp | 8 +- runtime/PropertySlot.h | 80 +- runtime/RegExp.cpp | 90 +- runtime/RegExp.h | 8 +- runtime/RegExpCache.cpp | 78 + runtime/RegExpCache.h | 57 + runtime/RegExpConstructor.cpp | 102 +- runtime/RegExpKey.h | 112 + runtime/RegExpMatchesArray.h | 16 +- runtime/RegExpObject.cpp | 31 +- runtime/RegExpPrototype.cpp | 6 +- wrec/Quantifier.h => runtime/RopeImpl.cpp | 80 +- runtime/RopeImpl.h | 97 + runtime/SmallStrings.cpp | 6 +- runtime/SmallStrings.h | 4 +- runtime/StringBuilder.h | 16 +- runtime/StringConstructor.cpp | 5 +- runtime/StringPrototype.cpp | 161 +- runtime/Structure.cpp | 118 +- runtime/Structure.h | 76 +- runtime/StructureTransitionTable.h | 94 - runtime/Terminator.h | 47 + runtime/TimeoutChecker.cpp | 7 + runtime/UString.cpp | 448 +-- runtime/UString.h | 360 +- runtime/UStringImpl.cpp | 82 - runtime/UStringImpl.h | 313 +- runtime/WeakGCPtr.h | 15 +- tests/perf/bench-allocate-nonretained.js | 6 + tests/perf/bench-allocate-retained.js | 10 + wrec/CharacterClass.cpp | 140 - wrec/CharacterClassConstructor.cpp | 257 -- wrec/CharacterClassConstructor.h | 99 - wrec/Escapes.h | 150 - wrec/WREC.cpp | 86 - wrec/WRECFunctors.cpp | 80 - wrec/WRECFunctors.h | 109 - wrec/WRECGenerator.cpp | 653 ---- wrec/WRECGenerator.h | 128 - wrec/WRECParser.cpp | 643 --- wrec/WRECParser.h | 214 - wscript | 8 +- wtf/ASCIICType.h | 1 - wtf/AlwaysInline.h | 12 + wtf/Assertions.h | 35 +- wtf/Atomics.h | 117 + wtf/Complex.h | 46 + wtf/CurrentTime.cpp | 37 +- wtf/CurrentTime.h | 3 +- wtf/FastMalloc.cpp | 385 +- wtf/FastMalloc.h | 24 +- wtf/HashCountedSet.h | 39 +- wtf/HashMap.h | 3 +- wtf/ListHashSet.h | 206 +- wtf/MD5.cpp | 304 ++ wtf/MD5.h | 61 + wtf/MainThread.cpp | 89 +- wtf/MainThread.h | 31 +- wtf/MathExtras.h | 40 +- wtf/OwnFastMallocPtr.h | 2 +- wtf/OwnPtr.h | 3 - wtf/OwnPtrCommon.h | 15 + wtf/PassRefPtr.h | 62 +- wtf/Platform.h | 240 +- wtf/PtrAndFlags.h | 79 - wtf/RandomNumber.h | 2 + wtf/RefPtr.h | 51 +- wtf/StaticConstructors.h | 80 + wtf/StdLibExtras.h | 1 - wtf/StringExtras.h | 2 +- wtf/ThreadSafeShared.h | 148 + wtf/ThreadSpecific.h | 11 +- wtf/Threading.h | 256 +- wtf/ThreadingPrimitives.h | 157 + wtf/ThreadingPthreads.cpp | 28 +- wtf/ThreadingWin.cpp | 21 +- wtf/VMTags.h | 41 +- wtf/ValueCheck.h | 15 +- wtf/Vector.h | 84 +- wtf/Vector3.h | 138 + wtf/VectorTraits.h | 3 - .../CharacterClass.h => wtf/WTFThreadData.cpp | 82 +- wtf/WTFThreadData.h | 160 + wtf/brew/MainThreadBrew.cpp | 45 + wrec/WREC.h => wtf/brew/OwnPtrBrew.cpp | 49 +- wtf/brew/ShellBrew.h | 56 + wtf/brew/SystemMallocBrew.h | 65 + wtf/chromium/ChromiumThreading.h | 3 +- wtf/chromium/MainThreadChromium.cpp | 32 +- wtf/dtoa.cpp | 1 + wtf/efl/MainThreadEfl.cpp | 57 + wtf/{gtk => gobject}/GOwnPtr.cpp | 7 + wtf/{gtk => gobject}/GOwnPtr.h | 2 + wtf/{gtk => gobject}/GRefPtr.cpp | 0 wtf/{gtk => gobject}/GRefPtr.h | 3 + wtf/gtk/ThreadingGtk.cpp | 9 - wtf/mac/MainThreadMac.mm | 95 +- wtf/qt/MainThreadQt.cpp | 7 +- wtf/qt/StringQt.cpp | 72 + wtf/qt/ThreadingQt.cpp | 12 - wtf/symbian/BlockAllocatorSymbian.cpp | 132 + wtf/symbian/BlockAllocatorSymbian.h | 120 + wtf/text/AtomicString.cpp | 323 ++ wtf/text/AtomicString.h | 172 + wtf/text/AtomicStringImpl.h | 38 + wtf/text/CString.cpp | 92 + wtf/text/CString.h | 87 + wtf/text/StringBuffer.h | 84 + wtf/text/StringHash.h | 268 ++ wtf/text/StringImpl.cpp | 981 +++++ wtf/text/StringImpl.h | 399 ++ wtf/text/StringImplBase.h | 103 + wtf/text/StringStatics.cpp | 80 + wtf/text/WTFString.cpp | 913 +++++ wtf/text/WTFString.h | 430 +++ wtf/unicode/Collator.h | 4 +- wtf/unicode/CollatorDefault.cpp | 4 +- wtf/unicode/glib/UnicodeGLib.h | 2 +- wtf/unicode/icu/CollatorICU.cpp | 8 +- wtf/unicode/qt4/UnicodeQt4.h | 2 +- wtf/url/src/URLComponent.h | 71 + wtf/url/src/URLSegments.cpp | 110 + wtf/url/src/URLSegments.h | 105 + wtf/url/wtfurl.gyp | 58 + wtf/win/MainThreadWin.cpp | 2 + wtf/{ => win}/OwnPtrWin.cpp | 0 wtf/wx/MainThreadWx.cpp | 24 + yarr/RegexCompiler.cpp | 107 +- yarr/RegexCompiler.h | 4 +- yarr/RegexInterpreter.cpp | 33 +- yarr/RegexInterpreter.h | 4 +- yarr/RegexJIT.cpp | 68 +- yarr/RegexJIT.h | 4 +- yarr/RegexParser.h | 4 +- yarr/RegexPattern.h | 29 +- 342 files changed, 28487 insertions(+), 14123 deletions(-) create mode 100644 API/JSObjectRefPrivate.h create mode 100644 API/JSWeakObjectMapRefInternal.h create mode 100644 API/JSWeakObjectMapRefPrivate.cpp create mode 100644 API/JSWeakObjectMapRefPrivate.h delete mode 100644 JavaScriptCore.iPhone.order create mode 100644 assembler/MIPSAssembler.h create mode 100644 assembler/MacroAssemblerMIPS.h rename create_rvct_stubs => create_jit_stubs (72%) create mode 100644 create_regex_tables create mode 100644 jit/JITArithmetic32_64.cpp create mode 100644 jit/JITOpcodes32_64.cpp create mode 100644 jit/JITPropertyAccess32_64.cpp create mode 100644 jit/JSInterfaceJIT.h create mode 100644 jit/SpecializedThunkJIT.h create mode 100644 jit/ThunkGenerators.cpp create mode 100644 jit/ThunkGenerators.h create mode 100644 qt/api/qscriptprogram.cpp create mode 100644 qt/api/qscriptprogram.h create mode 100644 qt/api/qscriptprogram_p.h create mode 100644 qt/api/qscriptstring.cpp create mode 100644 qt/api/qscriptstring.h create mode 100644 qt/api/qscriptstring_p.h create mode 100644 qt/api/qscriptsyntaxcheckresult.cpp create mode 100644 qt/api/qscriptsyntaxcheckresult.h create mode 100644 qt/api/qscriptsyntaxcheckresult_p.h create mode 100644 qt/tests/qscriptstring/qscriptstring.pro create mode 100644 qt/tests/qscriptstring/tst_qscriptstring.cpp create mode 100644 qt/tests/qscriptvalue/tst_qscriptvalue.h create mode 100644 qt/tests/qscriptvalue/tst_qscriptvalue_generated.cpp create mode 100644 runtime/CachedTranscendentalFunction.h create mode 100644 runtime/JSStringBuilder.h create mode 100644 runtime/RegExpCache.cpp create mode 100644 runtime/RegExpCache.h create mode 100644 runtime/RegExpKey.h rename wrec/Quantifier.h => runtime/RopeImpl.cpp (57%) create mode 100644 runtime/RopeImpl.h create mode 100644 runtime/Terminator.h delete mode 100644 runtime/UStringImpl.cpp create mode 100644 tests/perf/bench-allocate-nonretained.js create mode 100644 tests/perf/bench-allocate-retained.js delete mode 100644 wrec/CharacterClass.cpp delete mode 100644 wrec/CharacterClassConstructor.cpp delete mode 100644 wrec/CharacterClassConstructor.h delete mode 100644 wrec/Escapes.h delete mode 100644 wrec/WREC.cpp delete mode 100644 wrec/WRECFunctors.cpp delete mode 100644 wrec/WRECFunctors.h delete mode 100644 wrec/WRECGenerator.cpp delete mode 100644 wrec/WRECGenerator.h delete mode 100644 wrec/WRECParser.cpp delete mode 100644 wrec/WRECParser.h create mode 100644 wtf/Atomics.h create mode 100644 wtf/Complex.h create mode 100644 wtf/MD5.cpp create mode 100644 wtf/MD5.h delete mode 100644 wtf/PtrAndFlags.h create mode 100644 wtf/StaticConstructors.h create mode 100644 wtf/ThreadSafeShared.h create mode 100644 wtf/ThreadingPrimitives.h create mode 100644 wtf/Vector3.h rename wrec/CharacterClass.h => wtf/WTFThreadData.cpp (51%) create mode 100644 wtf/WTFThreadData.h create mode 100644 wtf/brew/MainThreadBrew.cpp rename wrec/WREC.h => wtf/brew/OwnPtrBrew.cpp (63%) create mode 100644 wtf/brew/ShellBrew.h create mode 100644 wtf/brew/SystemMallocBrew.h create mode 100644 wtf/efl/MainThreadEfl.cpp rename wtf/{gtk => gobject}/GOwnPtr.cpp (92%) rename wtf/{gtk => gobject}/GOwnPtr.h (98%) rename wtf/{gtk => gobject}/GRefPtr.cpp (100%) rename wtf/{gtk => gobject}/GRefPtr.h (97%) create mode 100644 wtf/qt/StringQt.cpp create mode 100644 wtf/symbian/BlockAllocatorSymbian.cpp create mode 100644 wtf/symbian/BlockAllocatorSymbian.h create mode 100644 wtf/text/AtomicString.cpp create mode 100644 wtf/text/AtomicString.h create mode 100644 wtf/text/AtomicStringImpl.h create mode 100644 wtf/text/CString.cpp create mode 100644 wtf/text/CString.h create mode 100644 wtf/text/StringBuffer.h create mode 100644 wtf/text/StringHash.h create mode 100644 wtf/text/StringImpl.cpp create mode 100644 wtf/text/StringImpl.h create mode 100644 wtf/text/StringImplBase.h create mode 100644 wtf/text/StringStatics.cpp create mode 100644 wtf/text/WTFString.cpp create mode 100644 wtf/text/WTFString.h create mode 100644 wtf/url/src/URLComponent.h create mode 100644 wtf/url/src/URLSegments.cpp create mode 100644 wtf/url/src/URLSegments.h create mode 100644 wtf/url/wtfurl.gyp rename wtf/{ => win}/OwnPtrWin.cpp (100%) diff --git a/API/APICast.h b/API/APICast.h index 4284c44..ba00d02 100644 --- a/API/APICast.h +++ b/API/APICast.h @@ -29,7 +29,6 @@ #include "JSAPIValueWrapper.h" #include "JSGlobalObject.h" #include "JSValue.h" -#include #include namespace JSC { diff --git a/API/APIShims.h b/API/APIShims.h index d7276ec..892068d 100644 --- a/API/APIShims.h +++ b/API/APIShims.h @@ -28,6 +28,7 @@ #include "CallFrame.h" #include "JSLock.h" +#include namespace JSC { @@ -35,7 +36,7 @@ class APIEntryShimWithoutLock { protected: APIEntryShimWithoutLock(JSGlobalData* globalData, bool registerThread) : m_globalData(globalData) - , m_entryIdentifierTable(setCurrentIdentifierTable(globalData->identifierTable)) + , m_entryIdentifierTable(wtfThreadData().setCurrentIdentifierTable(globalData->identifierTable)) { if (registerThread) globalData->heap.registerThread(); @@ -45,7 +46,7 @@ protected: ~APIEntryShimWithoutLock() { m_globalData->timeoutChecker.stop(); - setCurrentIdentifierTable(m_entryIdentifierTable); + wtfThreadData().setCurrentIdentifierTable(m_entryIdentifierTable); } private: @@ -65,7 +66,7 @@ public: // JSPropertyNameAccumulator only has a globalData. APIEntryShim(JSGlobalData* globalData, bool registerThread = true) : APIEntryShimWithoutLock(globalData, registerThread) - , m_lock(globalData->isSharedInstance ? LockForReal : SilenceAssertionsOnly) + , m_lock(globalData->isSharedInstance() ? LockForReal : SilenceAssertionsOnly) { } @@ -79,14 +80,12 @@ public: : m_dropAllLocks(exec) , m_globalData(&exec->globalData()) { - resetCurrentIdentifierTable(); - m_globalData->timeoutChecker.start(); + wtfThreadData().resetCurrentIdentifierTable(); } ~APICallbackShim() { - m_globalData->timeoutChecker.stop(); - setCurrentIdentifierTable(m_globalData->identifierTable); + wtfThreadData().setCurrentIdentifierTable(m_globalData->identifierTable); } private: diff --git a/API/JSBase.cpp b/API/JSBase.cpp index ebfeafa..c5f1b15 100644 --- a/API/JSBase.cpp +++ b/API/JSBase.cpp @@ -38,6 +38,7 @@ #include #include #include +#include using namespace JSC; diff --git a/API/JSCallbackFunction.cpp b/API/JSCallbackFunction.cpp index 0e434d9..63c8add 100644 --- a/API/JSCallbackFunction.cpp +++ b/API/JSCallbackFunction.cpp @@ -24,7 +24,6 @@ */ #include "config.h" -#include #include "JSCallbackFunction.h" #include "APIShims.h" diff --git a/API/JSCallbackObject.cpp b/API/JSCallbackObject.cpp index 2fde0f8..b36c194 100644 --- a/API/JSCallbackObject.cpp +++ b/API/JSCallbackObject.cpp @@ -28,6 +28,7 @@ #include "JSCallbackObject.h" #include "Collector.h" +#include namespace JSC { diff --git a/API/JSCallbackObject.h b/API/JSCallbackObject.h index adb5b60..1cf7a02 100644 --- a/API/JSCallbackObject.h +++ b/API/JSCallbackObject.h @@ -33,6 +33,84 @@ namespace JSC { +struct JSCallbackObjectData { + JSCallbackObjectData(void* privateData, JSClassRef jsClass) + : privateData(privateData) + , jsClass(jsClass) + { + JSClassRetain(jsClass); + } + + ~JSCallbackObjectData() + { + JSClassRelease(jsClass); + } + + JSValue getPrivateProperty(const Identifier& propertyName) const + { + if (!m_privateProperties) + return JSValue(); + return m_privateProperties->getPrivateProperty(propertyName); + } + + void setPrivateProperty(const Identifier& propertyName, JSValue value) + { + if (!m_privateProperties) + m_privateProperties.set(new JSPrivatePropertyMap); + m_privateProperties->setPrivateProperty(propertyName, value); + } + + void deletePrivateProperty(const Identifier& propertyName) + { + if (!m_privateProperties) + return; + m_privateProperties->deletePrivateProperty(propertyName); + } + + void markChildren(MarkStack& markStack) + { + if (!m_privateProperties) + return; + m_privateProperties->markChildren(markStack); + } + + void* privateData; + JSClassRef jsClass; + struct JSPrivatePropertyMap { + JSValue getPrivateProperty(const Identifier& propertyName) const + { + PrivatePropertyMap::const_iterator location = m_propertyMap.find(propertyName.ustring().rep()); + if (location == m_propertyMap.end()) + return JSValue(); + return location->second; + } + + void setPrivateProperty(const Identifier& propertyName, JSValue value) + { + m_propertyMap.set(propertyName.ustring().rep(), value); + } + + void deletePrivateProperty(const Identifier& propertyName) + { + m_propertyMap.remove(propertyName.ustring().rep()); + } + + void markChildren(MarkStack& markStack) + { + for (PrivatePropertyMap::iterator ptr = m_propertyMap.begin(); ptr != m_propertyMap.end(); ++ptr) { + if (ptr->second) + markStack.append(ptr->second); + } + } + + private: + typedef HashMap, JSValue, IdentifierRepHash> PrivatePropertyMap; + PrivatePropertyMap m_propertyMap; + }; + OwnPtr m_privateProperties; +}; + + template class JSCallbackObject : public Base { public: @@ -52,6 +130,21 @@ public: { return Structure::create(proto, TypeInfo(ObjectType, StructureFlags), Base::AnonymousSlotCount); } + + JSValue getPrivateProperty(const Identifier& propertyName) const + { + return m_callbackObjectData->getPrivateProperty(propertyName); + } + + void setPrivateProperty(const Identifier& propertyName, JSValue value) + { + m_callbackObjectData->setPrivateProperty(propertyName, value); + } + + void deletePrivateProperty(const Identifier& propertyName) + { + m_callbackObjectData->deletePrivateProperty(propertyName); + } protected: static const unsigned StructureFlags = OverridesGetOwnPropertySlot | ImplementsHasInstance | OverridesHasInstance | OverridesMarkChildren | OverridesGetPropertyNames | Base::StructureFlags; @@ -79,6 +172,12 @@ private: virtual CallType getCallData(CallData&); virtual const ClassInfo* classInfo() const { return &info; } + virtual void markChildren(MarkStack& markStack) + { + Base::markChildren(markStack); + m_callbackObjectData->markChildren(markStack); + } + void init(ExecState*); static JSCallbackObject* asCallbackObject(JSValue); @@ -86,27 +185,10 @@ private: static JSValue JSC_HOST_CALL call(ExecState*, JSObject* functionObject, JSValue thisValue, const ArgList&); static JSObject* construct(ExecState*, JSObject* constructor, const ArgList&); - static JSValue staticValueGetter(ExecState*, const Identifier&, const PropertySlot&); - static JSValue staticFunctionGetter(ExecState*, const Identifier&, const PropertySlot&); - static JSValue callbackGetter(ExecState*, const Identifier&, const PropertySlot&); - - struct JSCallbackObjectData { - JSCallbackObjectData(void* privateData, JSClassRef jsClass) - : privateData(privateData) - , jsClass(jsClass) - { - JSClassRetain(jsClass); - } - - ~JSCallbackObjectData() - { - JSClassRelease(jsClass); - } - - void* privateData; - JSClassRef jsClass; - }; - + static JSValue staticValueGetter(ExecState*, JSValue, const Identifier&); + static JSValue staticFunctionGetter(ExecState*, JSValue, const Identifier&); + static JSValue callbackGetter(ExecState*, JSValue, const Identifier&); + OwnPtr m_callbackObjectData; }; diff --git a/API/JSCallbackObjectFunctions.h b/API/JSCallbackObjectFunctions.h index 4b28a99..6c83eb4 100644 --- a/API/JSCallbackObjectFunctions.h +++ b/API/JSCallbackObjectFunctions.h @@ -516,9 +516,9 @@ bool JSCallbackObject::inherits(JSClassRef c) const } template -JSValue JSCallbackObject::staticValueGetter(ExecState* exec, const Identifier& propertyName, const PropertySlot& slot) +JSValue JSCallbackObject::staticValueGetter(ExecState* exec, JSValue slotBase, const Identifier& propertyName) { - JSCallbackObject* thisObj = asCallbackObject(slot.slotBase()); + JSCallbackObject* thisObj = asCallbackObject(slotBase); JSObjectRef thisRef = toRef(thisObj); RefPtr propertyNameRef; @@ -547,9 +547,9 @@ JSValue JSCallbackObject::staticValueGetter(ExecState* exec, const Identif } template -JSValue JSCallbackObject::staticFunctionGetter(ExecState* exec, const Identifier& propertyName, const PropertySlot& slot) +JSValue JSCallbackObject::staticFunctionGetter(ExecState* exec, JSValue slotBase, const Identifier& propertyName) { - JSCallbackObject* thisObj = asCallbackObject(slot.slotBase()); + JSCallbackObject* thisObj = asCallbackObject(slotBase); // Check for cached or override property. PropertySlot slot2(thisObj); @@ -572,9 +572,9 @@ JSValue JSCallbackObject::staticFunctionGetter(ExecState* exec, const Iden } template -JSValue JSCallbackObject::callbackGetter(ExecState* exec, const Identifier& propertyName, const PropertySlot& slot) +JSValue JSCallbackObject::callbackGetter(ExecState* exec, JSValue slotBase, const Identifier& propertyName) { - JSCallbackObject* thisObj = asCallbackObject(slot.slotBase()); + JSCallbackObject* thisObj = asCallbackObject(slotBase); JSObjectRef thisRef = toRef(thisObj); RefPtr propertyNameRef; diff --git a/API/JSClassRef.cpp b/API/JSClassRef.cpp index d75d5cd..3e65b75 100644 --- a/API/JSClassRef.cpp +++ b/API/JSClassRef.cpp @@ -33,12 +33,29 @@ #include #include #include +#include +#include using namespace std; using namespace JSC; +using namespace WTF::Unicode; const JSClassDefinition kJSClassDefinitionEmpty = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; +static inline UString tryCreateStringFromUTF8(const char* string) +{ + if (!string) + return UString::null(); + + size_t length = strlen(string); + Vector buffer(length); + UChar* p = buffer.data(); + if (conversionOK != convertUTF8ToUTF16(&string, string + length, &p, p + length)) + return UString::null(); + + return UString(buffer.data(), p - buffer.data()); +} + OpaqueJSClass::OpaqueJSClass(const JSClassDefinition* definition, OpaqueJSClass* protoClass) : parentClass(definition->parentClass) , prototypeClass(0) @@ -53,7 +70,7 @@ OpaqueJSClass::OpaqueJSClass(const JSClassDefinition* definition, OpaqueJSClass* , callAsConstructor(definition->callAsConstructor) , hasInstance(definition->hasInstance) , convertToType(definition->convertToType) - , m_className(UString::createFromUTF8(definition->className).rep()->ref()) + , m_className(tryCreateStringFromUTF8(definition->className)) , m_staticValues(0) , m_staticFunctions(0) { @@ -62,9 +79,14 @@ OpaqueJSClass::OpaqueJSClass(const JSClassDefinition* definition, OpaqueJSClass* if (const JSStaticValue* staticValue = definition->staticValues) { m_staticValues = new OpaqueJSClassStaticValuesTable(); while (staticValue->name) { - // Use a local variable here to sidestep an RVCT compiler bug. - StaticValueEntry* entry = new StaticValueEntry(staticValue->getProperty, staticValue->setProperty, staticValue->attributes); - m_staticValues->add(UString::createFromUTF8(staticValue->name).rep()->ref(), entry); + UString valueName = tryCreateStringFromUTF8(staticValue->name); + if (!valueName.isNull()) { + // Use a local variable here to sidestep an RVCT compiler bug. + StaticValueEntry* entry = new StaticValueEntry(staticValue->getProperty, staticValue->setProperty, staticValue->attributes); + UStringImpl* impl = valueName.rep(); + impl->ref(); + m_staticValues->add(impl, entry); + } ++staticValue; } } @@ -72,9 +94,14 @@ OpaqueJSClass::OpaqueJSClass(const JSClassDefinition* definition, OpaqueJSClass* if (const JSStaticFunction* staticFunction = definition->staticFunctions) { m_staticFunctions = new OpaqueJSClassStaticFunctionsTable(); while (staticFunction->name) { - // Use a local variable here to sidestep an RVCT compiler bug. - StaticFunctionEntry* entry = new StaticFunctionEntry(staticFunction->callAsFunction, staticFunction->attributes); - m_staticFunctions->add(UString::createFromUTF8(staticFunction->name).rep()->ref(), entry); + UString functionName = tryCreateStringFromUTF8(staticFunction->name); + if (!functionName.isNull()) { + // Use a local variable here to sidestep an RVCT compiler bug. + StaticFunctionEntry* entry = new StaticFunctionEntry(staticFunction->callAsFunction, staticFunction->attributes); + UStringImpl* impl = functionName.rep(); + impl->ref(); + m_staticFunctions->add(impl, entry); + } ++staticFunction; } } @@ -85,7 +112,8 @@ OpaqueJSClass::OpaqueJSClass(const JSClassDefinition* definition, OpaqueJSClass* OpaqueJSClass::~OpaqueJSClass() { - ASSERT(!m_className.rep()->isIdentifier()); + // The empty string is shared across threads & is an identifier, in all other cases we should have done a deep copy in className(), below. + ASSERT(!m_className.size() || !m_className.rep()->isIdentifier()); if (m_staticValues) { OpaqueJSClassStaticValuesTable::const_iterator end = m_staticValues->end(); @@ -145,13 +173,10 @@ OpaqueJSClassContextData::OpaqueJSClassContextData(OpaqueJSClass* jsClass) ASSERT(!it->first->isIdentifier()); // Use a local variable here to sidestep an RVCT compiler bug. StaticValueEntry* entry = new StaticValueEntry(it->second->getProperty, it->second->setProperty, it->second->attributes); - staticValues->add(UString::Rep::create(it->first->data(), it->first->size()), entry); - + staticValues->add(UString::Rep::create(it->first->characters(), it->first->length()), entry); } - } else staticValues = 0; - if (jsClass->m_staticFunctions) { staticFunctions = new OpaqueJSClassStaticFunctionsTable; @@ -160,7 +185,7 @@ OpaqueJSClassContextData::OpaqueJSClassContextData(OpaqueJSClass* jsClass) ASSERT(!it->first->isIdentifier()); // Use a local variable here to sidestep an RVCT compiler bug. StaticFunctionEntry* entry = new StaticFunctionEntry(it->second->callAsFunction, it->second->attributes); - staticFunctions->add(UString::Rep::create(it->first->data(), it->first->size()), entry); + staticFunctions->add(UString::Rep::create(it->first->characters(), it->first->length()), entry); } } else diff --git a/API/JSContextRef.cpp b/API/JSContextRef.cpp index 2c76338..b97ceda 100644 --- a/API/JSContextRef.cpp +++ b/API/JSContextRef.cpp @@ -33,7 +33,7 @@ #include "JSClassRef.h" #include "JSGlobalObject.h" #include "JSObject.h" -#include +#include #if OS(DARWIN) #include @@ -46,7 +46,7 @@ using namespace JSC; JSContextGroupRef JSContextGroupCreate() { initializeThreading(); - return toRef(JSGlobalData::createNonDefault().releaseRef()); + return toRef(JSGlobalData::createContextGroup(ThreadStackTypeSmall).releaseRef()); } JSContextGroupRef JSContextGroupRetain(JSContextGroupRef group) @@ -84,7 +84,7 @@ JSGlobalContextRef JSGlobalContextCreateInGroup(JSContextGroupRef group, JSClass initializeThreading(); JSLock lock(LockForReal); - RefPtr globalData = group ? PassRefPtr(toJS(group)) : JSGlobalData::createNonDefault(); + RefPtr globalData = group ? PassRefPtr(toJS(group)) : JSGlobalData::createContextGroup(ThreadStackTypeSmall); APIEntryShim entryShim(globalData.get(), false); @@ -123,19 +123,32 @@ void JSGlobalContextRelease(JSGlobalContextRef ctx) JSLock lock(exec); JSGlobalData& globalData = exec->globalData(); - IdentifierTable* savedIdentifierTable = setCurrentIdentifierTable(globalData.identifierTable); - - gcUnprotect(exec->dynamicGlobalObject()); - - if (globalData.refCount() == 2) { // One reference is held by JSGlobalObject, another added by JSGlobalContextRetain(). - // The last reference was released, this is our last chance to collect. + JSGlobalObject* dgo = exec->dynamicGlobalObject(); + IdentifierTable* savedIdentifierTable = wtfThreadData().setCurrentIdentifierTable(globalData.identifierTable); + + // One reference is held by JSGlobalObject, another added by JSGlobalContextRetain(). + bool releasingContextGroup = globalData.refCount() == 2; + bool releasingGlobalObject = Heap::heap(dgo)->unprotect(dgo); + // If this is the last reference to a global data, it should also + // be the only remaining reference to the global object too! + ASSERT(!releasingContextGroup || releasingGlobalObject); + + // An API 'JSGlobalContextRef' retains two things - a global object and a + // global data (or context group, in API terminology). + // * If this is the last reference to any contexts in the given context group, + // call destroy on the heap (the global data is being freed). + // * If this was the last reference to the global object, then unprotecting + // it may release a lot of GC memory - run the garbage collector now. + // * If there are more references remaining the the global object, then do nothing + // (specifically that is more protects, which we assume come from other JSGlobalContextRefs). + if (releasingContextGroup) globalData.heap.destroy(); - } else + else if (releasingGlobalObject) globalData.heap.collectAllGarbage(); globalData.deref(); - setCurrentIdentifierTable(savedIdentifierTable); + wtfThreadData().setCurrentIdentifierTable(savedIdentifierTable); } JSObjectRef JSContextGetGlobalObject(JSContextRef ctx) diff --git a/API/JSObjectRef.cpp b/API/JSObjectRef.cpp index faaa4eb..8fdbdab 100644 --- a/API/JSObjectRef.cpp +++ b/API/JSObjectRef.cpp @@ -26,6 +26,7 @@ #include "config.h" #include "JSObjectRef.h" +#include "JSObjectRefPrivate.h" #include "APICast.h" #include "CodeBlock.h" @@ -48,7 +49,6 @@ #include "ObjectPrototype.h" #include "PropertyNameArray.h" #include "RegExpConstructor.h" -#include using namespace JSC; @@ -364,6 +364,55 @@ bool JSObjectSetPrivate(JSObjectRef object, void* data) return false; } +JSValueRef JSObjectGetPrivateProperty(JSContextRef ctx, JSObjectRef object, JSStringRef propertyName) +{ + ExecState* exec = toJS(ctx); + APIEntryShim entryShim(exec); + JSObject* jsObject = toJS(object); + JSValue result; + Identifier name(propertyName->identifier(&exec->globalData())); + if (jsObject->inherits(&JSCallbackObject::info)) + result = static_cast*>(jsObject)->getPrivateProperty(name); + else if (jsObject->inherits(&JSCallbackObject::info)) + result = static_cast*>(jsObject)->getPrivateProperty(name); + return toRef(exec, result); +} + +bool JSObjectSetPrivateProperty(JSContextRef ctx, JSObjectRef object, JSStringRef propertyName, JSValueRef value) +{ + ExecState* exec = toJS(ctx); + APIEntryShim entryShim(exec); + JSObject* jsObject = toJS(object); + JSValue jsValue = toJS(exec, value); + Identifier name(propertyName->identifier(&exec->globalData())); + if (jsObject->inherits(&JSCallbackObject::info)) { + static_cast*>(jsObject)->setPrivateProperty(name, jsValue); + return true; + } + if (jsObject->inherits(&JSCallbackObject::info)) { + static_cast*>(jsObject)->setPrivateProperty(name, jsValue); + return true; + } + return false; +} + +bool JSObjectDeletePrivateProperty(JSContextRef ctx, JSObjectRef object, JSStringRef propertyName) +{ + ExecState* exec = toJS(ctx); + APIEntryShim entryShim(exec); + JSObject* jsObject = toJS(object); + Identifier name(propertyName->identifier(&exec->globalData())); + if (jsObject->inherits(&JSCallbackObject::info)) { + static_cast*>(jsObject)->deletePrivateProperty(name); + return true; + } + if (jsObject->inherits(&JSCallbackObject::info)) { + static_cast*>(jsObject)->deletePrivateProperty(name); + return true; + } + return false; +} + bool JSObjectIsFunction(JSContextRef, JSObjectRef object) { CallData callData; diff --git a/API/JSObjectRefPrivate.h b/API/JSObjectRefPrivate.h new file mode 100644 index 0000000..32e80ab --- /dev/null +++ b/API/JSObjectRefPrivate.h @@ -0,0 +1,74 @@ +/* + * Copyright (C) 2010 Apple Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + * THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef JSObjectRefPrivate_h +#define JSObjectRefPrivate_h + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/*! + @function + @abstract Sets a private property on an object. This private property cannot be accessed from within JavaScript. + @param ctx The execution context to use. + @param object The JSObject whose private property you want to set. + @param propertyName A JSString containing the property's name. + @param value A JSValue to use as the property's value. This may be NULL. + @result true if object can store private data, otherwise false. + @discussion This API allows you to store JS values directly an object in a way that will be ensure that they are kept alive without exposing them to JavaScript code and without introducing the reference cycles that may occur when using JSValueProtect. + + The default object class does not allocate storage for private data. Only objects created with a non-NULL JSClass can store private properties. + */ +JS_EXPORT bool JSObjectSetPrivateProperty(JSContextRef ctx, JSObjectRef object, JSStringRef propertyName, JSValueRef value); + +/*! + @function + @abstract Gets a private property from an object. + @param ctx The execution context to use. + @param object The JSObject whose private property you want to get. + @param propertyName A JSString containing the property's name. + @result The property's value if object has the property, otherwise NULL. + */ +JS_EXPORT JSValueRef JSObjectGetPrivateProperty(JSContextRef ctx, JSObjectRef object, JSStringRef propertyName); + +/*! + @function + @abstract Deletes a private property from an object. + @param ctx The execution context to use. + @param object The JSObject whose private property you want to delete. + @param propertyName A JSString containing the property's name. + @result true if object can store private data, otherwise false. + @discussion The default object class does not allocate storage for private data. Only objects created with a non-NULL JSClass can store private data. + */ +JS_EXPORT bool JSObjectDeletePrivateProperty(JSContextRef ctx, JSObjectRef object, JSStringRef propertyName); + +#ifdef __cplusplus +} +#endif + +#endif // JSObjectRefPrivate_h diff --git a/API/JSStringRef.h b/API/JSStringRef.h index c58b958..51871b1 100644 --- a/API/JSStringRef.h +++ b/API/JSStringRef.h @@ -37,7 +37,8 @@ extern "C" { #endif -#if !defined(WIN32) && !defined(_WIN32) && !defined(__WINSCW__) +#if !defined(WIN32) && !defined(_WIN32) && !defined(__WINSCW__) \ + && !((defined(__CC_ARM) || defined(__ARMCC__)) && defined(__SYMBIAN32__)) /* RVCT */ /*! @typedef JSChar @abstract A Unicode character. diff --git a/API/JSValueRef.cpp b/API/JSValueRef.cpp index a12cc34..905dcbf 100644 --- a/API/JSValueRef.cpp +++ b/API/JSValueRef.cpp @@ -26,19 +26,21 @@ #include "config.h" #include "JSValueRef.h" -#include #include "APICast.h" #include "APIShims.h" #include "JSCallbackObject.h" #include +#include #include +#include #include #include #include #include #include +#include #include // for std::min @@ -211,6 +213,12 @@ JSValueRef JSValueMakeNumber(JSContextRef ctx, double value) ExecState* exec = toJS(ctx); APIEntryShim entryShim(exec); + // Our JSValue representation relies on a standard bit pattern for NaN. NaNs + // generated internally to JavaScriptCore naturally have that representation, + // but an external NaN might not. + if (isnan(value)) + value = NaN; + return toRef(exec, jsNumber(exec, value)); } @@ -222,6 +230,31 @@ JSValueRef JSValueMakeString(JSContextRef ctx, JSStringRef string) return toRef(exec, jsString(exec, string->ustring())); } +JSValueRef JSValueMakeFromJSONString(JSContextRef ctx, JSStringRef string) +{ + ExecState* exec = toJS(ctx); + APIEntryShim entryShim(exec); + LiteralParser parser(exec, string->ustring(), LiteralParser::StrictJSON); + return toRef(exec, parser.tryLiteralParse()); +} + +JSStringRef JSValueCreateJSONString(JSContextRef ctx, JSValueRef apiValue, unsigned indent, JSValueRef* exception) +{ + ExecState* exec = toJS(ctx); + APIEntryShim entryShim(exec); + JSValue value = toJS(exec, apiValue); + UString result = JSONStringify(exec, value, indent); + if (exception) + *exception = 0; + if (exec->hadException()) { + if (exception) + *exception = toRef(exec, exec->exception()); + exec->clearException(); + return 0; + } + return OpaqueJSString::create(result).releaseRef(); +} + bool JSValueToBoolean(JSContextRef ctx, JSValueRef value) { ExecState* exec = toJS(ctx); diff --git a/API/JSValueRef.h b/API/JSValueRef.h index 7a7bf93..4186db8 100644 --- a/API/JSValueRef.h +++ b/API/JSValueRef.h @@ -27,6 +27,7 @@ #define JSValueRef_h #include +#include #ifndef __cplusplus #include @@ -208,6 +209,28 @@ JS_EXPORT JSValueRef JSValueMakeNumber(JSContextRef ctx, double number); */ JS_EXPORT JSValueRef JSValueMakeString(JSContextRef ctx, JSStringRef string); +/* Converting to and from JSON formatted strings */ + +/*! + @function + @abstract Creates a JavaScript value from a JSON formatted string. + @param ctx The execution context to use. + @param string The JSString containing the JSON string to be parsed. + @result A JSValue containing the parsed value, or NULL if the input is invalid. + */ +JS_EXPORT JSValueRef JSValueMakeFromJSONString(JSContextRef ctx, JSStringRef string) AVAILABLE_AFTER_WEBKIT_VERSION_4_0; + +/*! + @function + @abstract Creates a JavaScript string containing the JSON serialized representation of a JS value. + @param ctx The execution context to use. + @param value The value to serialize. + @param indent The number of spaces to indent when nesting. If 0, the resulting JSON will not contains newlines. The size of the indent is clamped to 10 spaces. + @param exception A pointer to a JSValueRef in which to store an exception, if any. Pass NULL if you do not care to store an exception. + @result A JSString with the result of serialization, or NULL if an exception is thrown. + */ +JS_EXPORT JSStringRef JSValueCreateJSONString(JSContextRef ctx, JSValueRef value, unsigned indent, JSValueRef* exception) AVAILABLE_AFTER_WEBKIT_VERSION_4_0; + /* Converting to primitive values */ /*! diff --git a/API/JSWeakObjectMapRefInternal.h b/API/JSWeakObjectMapRefInternal.h new file mode 100644 index 0000000..64e1f4d --- /dev/null +++ b/API/JSWeakObjectMapRefInternal.h @@ -0,0 +1,68 @@ +/* + * Copyright (C) 2010 Apple Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + * THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef JSWeakObjectMapRefInternal_h +#define JSWeakObjectMapRefInternal_h + +#include "WeakGCMap.h" +#include + +namespace JSC { + +class JSObject; + +} + +typedef void (*JSWeakMapDestroyedCallback)(struct OpaqueJSWeakObjectMap*, void*); + +typedef JSC::WeakGCMap WeakMapType; + +struct OpaqueJSWeakObjectMap : public RefCounted { +public: + static PassRefPtr create(void* data, JSWeakMapDestroyedCallback callback) + { + return adoptRef(new OpaqueJSWeakObjectMap(data, callback)); + } + + WeakMapType& map() { return m_map; } + + ~OpaqueJSWeakObjectMap() + { + m_callback(this, m_data); + } + +private: + OpaqueJSWeakObjectMap(void* data, JSWeakMapDestroyedCallback callback) + : m_data(data) + , m_callback(callback) + { + } + WeakMapType m_map; + void* m_data; + JSWeakMapDestroyedCallback m_callback; +}; + + +#endif // JSWeakObjectMapInternal_h diff --git a/API/JSWeakObjectMapRefPrivate.cpp b/API/JSWeakObjectMapRefPrivate.cpp new file mode 100644 index 0000000..7e6bb63 --- /dev/null +++ b/API/JSWeakObjectMapRefPrivate.cpp @@ -0,0 +1,84 @@ +/* + * Copyright (C) 2010 Apple Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + * THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "config.h" +#include "JSWeakObjectMapRefPrivate.h" + +#include "APICast.h" +#include "APIShims.h" +#include "JSCallbackObject.h" +#include "JSValue.h" +#include "JSWeakObjectMapRefInternal.h" +#include +#include +#include + +using namespace WTF; +using namespace JSC; + +#ifdef __cplusplus +extern "C" { +#endif + +JSWeakObjectMapRef JSWeakObjectMapCreate(JSContextRef context, void* privateData, JSWeakMapDestroyedCallback callback) +{ + ExecState* exec = toJS(context); + APIEntryShim entryShim(exec); + RefPtr map = OpaqueJSWeakObjectMap::create(privateData, callback); + exec->lexicalGlobalObject()->registerWeakMap(map.get()); + return map.get(); +} + +void JSWeakObjectMapSet(JSContextRef ctx, JSWeakObjectMapRef map, void* key, JSObjectRef object) +{ + ExecState* exec = toJS(ctx); + APIEntryShim entryShim(exec); + JSObject* obj = toJS(object); + if (!obj) + return; + ASSERT(obj->inherits(&JSCallbackObject::info) || obj->inherits(&JSCallbackObject::info)); + map->map().set(key, obj); +} + +JSObjectRef JSWeakObjectMapGet(JSContextRef ctx, JSWeakObjectMapRef map, void* key) +{ + ExecState* exec = toJS(ctx); + APIEntryShim entryShim(exec); + return toRef(static_cast(map->map().get(key))); +} + +bool JSWeakObjectMapClear(JSContextRef ctx, JSWeakObjectMapRef map, void* key, JSObjectRef object) +{ + ExecState* exec = toJS(ctx); + APIEntryShim entryShim(exec); + JSObject* obj = toJS(object); + if (map->map().uncheckedRemove(key, obj)) + return true; + return false; +} + +#ifdef __cplusplus +} +#endif diff --git a/API/JSWeakObjectMapRefPrivate.h b/API/JSWeakObjectMapRefPrivate.h new file mode 100644 index 0000000..d36111c --- /dev/null +++ b/API/JSWeakObjectMapRefPrivate.h @@ -0,0 +1,95 @@ +/* + * Copyright (C) 2010 Apple Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + * THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef JSWeakObjectMapRefPrivate_h +#define JSWeakObjectMapRefPrivate_h + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/*! @typedef JSWeakObjectMapRef A weak map for storing JSObjectRefs */ +typedef struct OpaqueJSWeakObjectMap* JSWeakObjectMapRef; + +/*! + @typedef JSWeakMapDestroyedCallback + @abstract The callback invoked when a JSWeakObjectMapRef is being destroyed. + @param map The map that is being destroyed. + @param data The private data (if any) that was associated with the map instance. + */ +typedef void (*JSWeakMapDestroyedCallback)(JSWeakObjectMapRef map, void* data); + +/*! + @function + @abstract Creates a weak value map that can be used to reference user defined objects without preventing them from being collected. + @param ctx The execution context to use. + @param data A void* to set as the map's private data. Pass NULL to specify no private data. + @param destructor A function to call when the weak map is destroyed. + @result A JSWeakObjectMapRef bound to the given context, data and destructor. + @discussion The JSWeakObjectMapRef can be used as a storage mechanism to hold custom JS objects without forcing those objects to + remain live as JSValueProtect would. Any objects that are intended to be stored in a weak map must be user defined objects that + remove themselves from the map in their finalizer. + */ +JS_EXPORT JSWeakObjectMapRef JSWeakObjectMapCreate(JSContextRef ctx, void* data, JSWeakMapDestroyedCallback destructor); + +/*! + @function + @abstract Associates a JSObjectRef with the given key in a JSWeakObjectMap. + @param ctx The execution context to use. + @param map The map to operate on. + @param key The key to associate a weak reference with. + @param object The user defined object to associate with the key. + */ +JS_EXPORT void JSWeakObjectMapSet(JSContextRef ctx, JSWeakObjectMapRef map, void* key, JSObjectRef); + +/*! + @function + @abstract Retrieves the JSObjectRef associated with a key. + @param ctx The execution context to use. + @param map The map to query. + @param key The key to search for. + @result Either the live object associated with the provided key, or NULL. + */ +JS_EXPORT JSObjectRef JSWeakObjectMapGet(JSContextRef ctx, JSWeakObjectMapRef map, void* key); + +/*! + @function + @abstract Clears the association between a key and an object in a JSWeakObjectMapRef + @param ctx The execution context to use. + @param map The map to clear the key association from. + @param key The key to use. + @param object The old object value. + @result Returns true if the key/object association was present in map, and has been removed. + */ +JS_EXPORT bool JSWeakObjectMapClear(JSContextRef ctx, JSWeakObjectMapRef map, void* key, JSObjectRef object); + +#ifdef __cplusplus +} +#endif + +#endif // JSWeakObjectMapPrivate_h diff --git a/API/WebKitAvailability.h b/API/WebKitAvailability.h index 8402528..0e4f091 100644 --- a/API/WebKitAvailability.h +++ b/API/WebKitAvailability.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2008 Apple Inc. All Rights Reserved. + * Copyright (C) 2008, 2009, 2010 Apple Inc. All Rights Reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -42,7 +42,7 @@ #define WEBKIT_VERSION_LATEST 0x9999 #ifdef __APPLE__ -#import +#include #else /* * For non-Mac platforms, require the newest version. @@ -86,6 +86,9 @@ #elif !defined(MAC_OS_X_VERSION_10_6) || MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_6 /* WebKit 3.0 is the version that shipped on Mac OS X 10.5. */ #define WEBKIT_VERSION_MIN_REQUIRED WEBKIT_VERSION_3_0 + #elif !defined(MAC_OS_X_VERSION_10_7) || MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_7 + /* WebKit 4.0 is the version that shipped on Mac OS X 10.6. */ + #define WEBKIT_VERSION_MIN_REQUIRED WEBKIT_VERSION_4_0 #else #define WEBKIT_VERSION_MIN_REQUIRED WEBKIT_VERSION_LATEST #endif @@ -645,9 +648,9 @@ * * Used on declarations introduced in WebKit 4.0 */ -#if WEBKIT_VERSION_MAX_ALLOWED < WEBKIT_VERSION_LATEST +#if WEBKIT_VERSION_MAX_ALLOWED < WEBKIT_VERSION_4_0 #define AVAILABLE_IN_WEBKIT_VERSION_4_0 UNAVAILABLE_ATTRIBUTE -#elif WEBKIT_VERSION_MIN_REQUIRED < WEBKIT_VERSION_LATEST +#elif WEBKIT_VERSION_MIN_REQUIRED < WEBKIT_VERSION_4_0 #define AVAILABLE_IN_WEBKIT_VERSION_4_0 WEAK_IMPORT_ATTRIBUTE #else #define AVAILABLE_IN_WEBKIT_VERSION_4_0 @@ -659,7 +662,7 @@ * Used on declarations introduced in WebKit 4.0, * and deprecated in WebKit 4.0 */ -#if WEBKIT_VERSION_MIN_REQUIRED >= WEBKIT_VERSION_LATEST +#if WEBKIT_VERSION_MIN_REQUIRED >= WEBKIT_VERSION_4_0 #define AVAILABLE_IN_WEBKIT_VERSION_4_0_BUT_DEPRECATED DEPRECATED_ATTRIBUTE #else #define AVAILABLE_IN_WEBKIT_VERSION_4_0_BUT_DEPRECATED AVAILABLE_IN_WEBKIT_VERSION_4_0 @@ -671,7 +674,7 @@ * Used on declarations introduced in WebKit 1.0, * but later deprecated in WebKit 4.0 */ -#if WEBKIT_VERSION_MIN_REQUIRED >= WEBKIT_VERSION_LATEST +#if WEBKIT_VERSION_MIN_REQUIRED >= WEBKIT_VERSION_4_0 #define AVAILABLE_WEBKIT_VERSION_1_0_AND_LATER_BUT_DEPRECATED_IN_WEBKIT_VERSION_4_0 DEPRECATED_ATTRIBUTE #else #define AVAILABLE_WEBKIT_VERSION_1_0_AND_LATER_BUT_DEPRECATED_IN_WEBKIT_VERSION_4_0 AVAILABLE_WEBKIT_VERSION_1_0_AND_LATER @@ -683,7 +686,7 @@ * Used on declarations introduced in WebKit 1.1, * but later deprecated in WebKit 4.0 */ -#if WEBKIT_VERSION_MIN_REQUIRED >= WEBKIT_VERSION_LATEST +#if WEBKIT_VERSION_MIN_REQUIRED >= WEBKIT_VERSION_4_0 #define AVAILABLE_WEBKIT_VERSION_1_1_AND_LATER_BUT_DEPRECATED_IN_WEBKIT_VERSION_4_0 DEPRECATED_ATTRIBUTE #else #define AVAILABLE_WEBKIT_VERSION_1_1_AND_LATER_BUT_DEPRECATED_IN_WEBKIT_VERSION_4_0 AVAILABLE_WEBKIT_VERSION_1_1_AND_LATER @@ -695,7 +698,7 @@ * Used on declarations introduced in WebKit 1.2, * but later deprecated in WebKit 4.0 */ -#if WEBKIT_VERSION_MIN_REQUIRED >= WEBKIT_VERSION_LATEST +#if WEBKIT_VERSION_MIN_REQUIRED >= WEBKIT_VERSION_4_0 #define AVAILABLE_WEBKIT_VERSION_1_2_AND_LATER_BUT_DEPRECATED_IN_WEBKIT_VERSION_4_0 DEPRECATED_ATTRIBUTE #else #define AVAILABLE_WEBKIT_VERSION_1_2_AND_LATER_BUT_DEPRECATED_IN_WEBKIT_VERSION_4_0 AVAILABLE_WEBKIT_VERSION_1_2_AND_LATER @@ -707,7 +710,7 @@ * Used on declarations introduced in WebKit 1.3, * but later deprecated in WebKit 4.0 */ -#if WEBKIT_VERSION_MIN_REQUIRED >= WEBKIT_VERSION_LATEST +#if WEBKIT_VERSION_MIN_REQUIRED >= WEBKIT_VERSION_4_0 #define AVAILABLE_WEBKIT_VERSION_1_3_AND_LATER_BUT_DEPRECATED_IN_WEBKIT_VERSION_4_0 DEPRECATED_ATTRIBUTE #else #define AVAILABLE_WEBKIT_VERSION_1_3_AND_LATER_BUT_DEPRECATED_IN_WEBKIT_VERSION_4_0 AVAILABLE_WEBKIT_VERSION_1_3_AND_LATER @@ -719,7 +722,7 @@ * Used on declarations introduced in WebKit 2.0, * but later deprecated in WebKit 4.0 */ -#if WEBKIT_VERSION_MIN_REQUIRED >= WEBKIT_VERSION_LATEST +#if WEBKIT_VERSION_MIN_REQUIRED >= WEBKIT_VERSION_4_0 #define AVAILABLE_WEBKIT_VERSION_2_0_AND_LATER_BUT_DEPRECATED_IN_WEBKIT_VERSION_4_0 DEPRECATED_ATTRIBUTE #else #define AVAILABLE_WEBKIT_VERSION_2_0_AND_LATER_BUT_DEPRECATED_IN_WEBKIT_VERSION_4_0 AVAILABLE_WEBKIT_VERSION_2_0_AND_LATER @@ -731,7 +734,7 @@ * Used on declarations introduced in WebKit 3.0, * but later deprecated in WebKit 4.0 */ -#if WEBKIT_VERSION_MIN_REQUIRED >= WEBKIT_VERSION_LATEST +#if WEBKIT_VERSION_MIN_REQUIRED >= WEBKIT_VERSION_4_0 #define AVAILABLE_WEBKIT_VERSION_3_0_AND_LATER_BUT_DEPRECATED_IN_WEBKIT_VERSION_4_0 DEPRECATED_ATTRIBUTE #else #define AVAILABLE_WEBKIT_VERSION_3_0_AND_LATER_BUT_DEPRECATED_IN_WEBKIT_VERSION_4_0 AVAILABLE_WEBKIT_VERSION_3_0_AND_LATER @@ -743,7 +746,7 @@ * Used on declarations introduced in WebKit 3.1, * but later deprecated in WebKit 4.0 */ -#if WEBKIT_VERSION_MIN_REQUIRED >= WEBKIT_VERSION_LATEST +#if WEBKIT_VERSION_MIN_REQUIRED >= WEBKIT_VERSION_4_0 #define AVAILABLE_WEBKIT_VERSION_3_1_AND_LATER_BUT_DEPRECATED_IN_WEBKIT_VERSION_4_0 DEPRECATED_ATTRIBUTE #else #define AVAILABLE_WEBKIT_VERSION_3_1_AND_LATER_BUT_DEPRECATED_IN_WEBKIT_VERSION_4_0 AVAILABLE_WEBKIT_VERSION_3_1_AND_LATER @@ -754,11 +757,148 @@ * * Used on types deprecated in WebKit 4.0 */ -#if WEBKIT_VERSION_MIN_REQUIRED >= WEBKIT_VERSION_LATEST +#if WEBKIT_VERSION_MIN_REQUIRED >= WEBKIT_VERSION_4_0 #define DEPRECATED_IN_WEBKIT_VERSION_4_0 DEPRECATED_ATTRIBUTE #else #define DEPRECATED_IN_WEBKIT_VERSION_4_0 #endif + + + + +/* + * AVAILABLE_AFTER_WEBKIT_VERSION_4_0 + * + * Used on declarations introduced after WebKit 4.0 + */ +#if WEBKIT_VERSION_MAX_ALLOWED < WEBKIT_VERSION_LATEST + #define AVAILABLE_AFTER_WEBKIT_VERSION_4_0 UNAVAILABLE_ATTRIBUTE +#elif WEBKIT_VERSION_MIN_REQUIRED < WEBKIT_VERSION_LATEST + #define AVAILABLE_AFTER_WEBKIT_VERSION_4_0 WEAK_IMPORT_ATTRIBUTE +#else + #define AVAILABLE_AFTER_WEBKIT_VERSION_4_0 +#endif + +/* + * AVAILABLE_AFTER_WEBKIT_VERSION_4_0_BUT_DEPRECATED + * + * Used on declarations introduced after WebKit 4.0, + * and deprecated after WebKit 4.0 + */ +#if WEBKIT_VERSION_MIN_REQUIRED >= WEBKIT_VERSION_LATEST + #define AVAILABLE_AFTER_WEBKIT_VERSION_4_0_BUT_DEPRECATED DEPRECATED_ATTRIBUTE +#else + #define AVAILABLE_AFTER_WEBKIT_VERSION_4_0_BUT_DEPRECATED AVAILABLE_AFTER_WEBKIT_VERSION_4_0 +#endif + +/* + * AVAILABLE_WEBKIT_VERSION_1_0_AND_LATER_BUT_DEPRECATED_AFTER_WEBKIT_VERSION_4_0 + * + * Used on declarations introduced in WebKit 1.0, + * but later deprecated after WebKit 4.0 + */ +#if WEBKIT_VERSION_MIN_REQUIRED >= WEBKIT_VERSION_LATEST + #define AVAILABLE_WEBKIT_VERSION_1_0_AND_LATER_BUT_DEPRECATED_AFTER_WEBKIT_VERSION_4_0 DEPRECATED_ATTRIBUTE +#else + #define AVAILABLE_WEBKIT_VERSION_1_0_AND_LATER_BUT_DEPRECATED_AFTER_WEBKIT_VERSION_4_0 AVAILABLE_WEBKIT_VERSION_1_0_AND_LATER +#endif + +/* + * AVAILABLE_WEBKIT_VERSION_1_1_AND_LATER_BUT_DEPRECATED_AFTER_WEBKIT_VERSION_4_0 + * + * Used on declarations introduced in WebKit 1.1, + * but later deprecated after WebKit 4.0 + */ +#if WEBKIT_VERSION_MIN_REQUIRED >= WEBKIT_VERSION_LATEST + #define AVAILABLE_WEBKIT_VERSION_1_1_AND_LATER_BUT_DEPRECATED_AFTER_WEBKIT_VERSION_4_0 DEPRECATED_ATTRIBUTE +#else + #define AVAILABLE_WEBKIT_VERSION_1_1_AND_LATER_BUT_DEPRECATED_AFTER_WEBKIT_VERSION_4_0 AVAILABLE_WEBKIT_VERSION_1_1_AND_LATER +#endif + +/* + * AVAILABLE_WEBKIT_VERSION_1_2_AND_LATER_BUT_DEPRECATED_AFTER_WEBKIT_VERSION_4_0 + * + * Used on declarations introduced in WebKit 1.2, + * but later deprecated after WebKit 4.0 + */ +#if WEBKIT_VERSION_MIN_REQUIRED >= WEBKIT_VERSION_LATEST + #define AVAILABLE_WEBKIT_VERSION_1_2_AND_LATER_BUT_DEPRECATED_AFTER_WEBKIT_VERSION_4_0 DEPRECATED_ATTRIBUTE +#else + #define AVAILABLE_WEBKIT_VERSION_1_2_AND_LATER_BUT_DEPRECATED_AFTER_WEBKIT_VERSION_4_0 AVAILABLE_WEBKIT_VERSION_1_2_AND_LATER +#endif + +/* + * AVAILABLE_WEBKIT_VERSION_1_3_AND_LATER_BUT_DEPRECATED_AFTER_WEBKIT_VERSION_4_0 + * + * Used on declarations introduced in WebKit 1.3, + * but later deprecated after WebKit 4.0 + */ +#if WEBKIT_VERSION_MIN_REQUIRED >= WEBKIT_VERSION_LATEST + #define AVAILABLE_WEBKIT_VERSION_1_3_AND_LATER_BUT_DEPRECATED_AFTER_WEBKIT_VERSION_4_0 DEPRECATED_ATTRIBUTE +#else + #define AVAILABLE_WEBKIT_VERSION_1_3_AND_LATER_BUT_DEPRECATED_AFTER_WEBKIT_VERSION_4_0 AVAILABLE_WEBKIT_VERSION_1_3_AND_LATER +#endif + +/* + * AVAILABLE_WEBKIT_VERSION_2_0_AND_LATER_BUT_DEPRECATED_AFTER_WEBKIT_VERSION_4_0 + * + * Used on declarations introduced in WebKit 2.0, + * but later deprecated after WebKit 4.0 + */ +#if WEBKIT_VERSION_MIN_REQUIRED >= WEBKIT_VERSION_LATEST + #define AVAILABLE_WEBKIT_VERSION_2_0_AND_LATER_BUT_DEPRECATED_AFTER_WEBKIT_VERSION_4_0 DEPRECATED_ATTRIBUTE +#else + #define AVAILABLE_WEBKIT_VERSION_2_0_AND_LATER_BUT_DEPRECATED_AFTER_WEBKIT_VERSION_4_0 AVAILABLE_WEBKIT_VERSION_2_0_AND_LATER +#endif + +/* + * AVAILABLE_WEBKIT_VERSION_3_0_AND_LATER_BUT_DEPRECATED_AFTER_WEBKIT_VERSION_4_0 + * + * Used on declarations introduced in WebKit 3.0, + * but later deprecated after WebKit 4.0 + */ +#if WEBKIT_VERSION_MIN_REQUIRED >= WEBKIT_VERSION_LATEST + #define AVAILABLE_WEBKIT_VERSION_3_0_AND_LATER_BUT_DEPRECATED_AFTER_WEBKIT_VERSION_4_0 DEPRECATED_ATTRIBUTE +#else + #define AVAILABLE_WEBKIT_VERSION_3_0_AND_LATER_BUT_DEPRECATED_AFTER_WEBKIT_VERSION_4_0 AVAILABLE_WEBKIT_VERSION_3_0_AND_LATER +#endif + +/* + * AVAILABLE_WEBKIT_VERSION_3_1_AND_LATER_BUT_DEPRECATED_AFTER_WEBKIT_VERSION_4_0 + * + * Used on declarations introduced in WebKit 3.1, + * but later deprecated after WebKit 4.0 + */ +#if WEBKIT_VERSION_MIN_REQUIRED >= WEBKIT_VERSION_LATEST + #define AVAILABLE_WEBKIT_VERSION_3_1_AND_LATER_BUT_DEPRECATED_AFTER_WEBKIT_VERSION_4_0 DEPRECATED_ATTRIBUTE +#else + #define AVAILABLE_WEBKIT_VERSION_3_1_AND_LATER_BUT_DEPRECATED_AFTER_WEBKIT_VERSION_4_0 AVAILABLE_WEBKIT_VERSION_3_1_AND_LATER +#endif + +/* + * AVAILABLE_WEBKIT_VERSION_4_0_AND_LATER_BUT_DEPRECATED_AFTER_WEBKIT_VERSION_4_0 + * + * Used on declarations introduced in WebKit 4.0 + * but later deprecated after WebKit 4.0 + */ +#if WEBKIT_VERSION_MIN_REQUIRED >= WEBKIT_VERSION_LATEST + #define AVAILABLE_WEBKIT_VERSION_4_0_AND_LATER_BUT_DEPRECATED_AFTER_WEBKIT_VERSION_4_0 DEPRECATED_ATTRIBUTE +#else + #define AVAILABLE_WEBKIT_VERSION_4_0_AND_LATER_BUT_DEPRECATED_AFTER_WEBKIT_VERSION_4_0 AVAILABLE_WEBKIT_VERSION_4_0_AND_LATER +#endif + +/* + * DEPRECATED_AFTER_WEBKIT_VERSION_4_0 + * + * Used on types deprecated after WebKit 4.0 + */ +#if WEBKIT_VERSION_MIN_REQUIRED >= WEBKIT_VERSION_LATEST + #define DEPRECATED_AFTER_WEBKIT_VERSION_4_0 DEPRECATED_ATTRIBUTE +#else + #define DEPRECATED_AFTER_WEBKIT_VERSION_4_0 +#endif + + #endif /* __WebKitAvailability__ */ diff --git a/API/tests/testapi.c b/API/tests/testapi.c index ebc0cfb..28b4ec8 100644 --- a/API/tests/testapi.c +++ b/API/tests/testapi.c @@ -26,6 +26,7 @@ #include "JavaScriptCore.h" #include "JSBasePrivate.h" #include "JSContextRefPrivate.h" +#include "JSObjectRefPrivate.h" #include #define ASSERT_DISABLED 0 #include @@ -754,6 +755,8 @@ static void testInitializeFinalize() static JSValueRef jsNumberValue = NULL; +static JSObjectRef aHeapRef = NULL; + static void makeGlobalNumberValue(JSContextRef context) { JSValueRef v = JSValueMakeNumber(context, 420); JSValueProtect(context, v); @@ -870,8 +873,107 @@ int main(int argc, char* argv[]) JSObjectSetProperty(context, globalObject, EmptyObjectIString, EmptyObject, kJSPropertyAttributeNone, NULL); JSStringRelease(EmptyObjectIString); + JSStringRef lengthStr = JSStringCreateWithUTF8CString("length"); + aHeapRef = JSObjectMakeArray(context, 0, 0, 0); + JSObjectSetProperty(context, aHeapRef, lengthStr, JSValueMakeNumber(context, 10), 0, 0); + JSStringRef privatePropertyName = JSStringCreateWithUTF8CString("privateProperty"); + if (!JSObjectSetPrivateProperty(context, myObject, privatePropertyName, aHeapRef)) { + printf("FAIL: Could not set private property.\n"); + failed = 1; + } else { + printf("PASS: Set private property.\n"); + } + if (JSObjectSetPrivateProperty(context, aHeapRef, privatePropertyName, aHeapRef)) { + printf("FAIL: JSObjectSetPrivateProperty should fail on non-API objects.\n"); + failed = 1; + } else { + printf("PASS: Did not allow JSObjectSetPrivateProperty on a non-API object.\n"); + } + if (JSObjectGetPrivateProperty(context, myObject, privatePropertyName) != aHeapRef) { + printf("FAIL: Could not retrieve private property.\n"); + failed = 1; + } else + printf("PASS: Retrieved private property.\n"); + if (JSObjectGetPrivateProperty(context, aHeapRef, privatePropertyName)) { + printf("FAIL: JSObjectGetPrivateProperty should return NULL when called on a non-API object.\n"); + failed = 1; + } else + printf("PASS: JSObjectGetPrivateProperty return NULL.\n"); + + if (JSObjectGetProperty(context, myObject, privatePropertyName, 0) == aHeapRef) { + printf("FAIL: Accessed private property through ordinary property lookup.\n"); + failed = 1; + } else + printf("PASS: Cannot access private property through ordinary property lookup.\n"); + + JSGarbageCollect(context); + + for (int i = 0; i < 10000; i++) + JSObjectMake(context, 0, 0); + + if (JSValueToNumber(context, JSObjectGetProperty(context, aHeapRef, lengthStr, 0), 0) != 10) { + printf("FAIL: Private property has been collected.\n"); + failed = 1; + } else + printf("PASS: Private property does not appear to have been collected.\n"); + JSStringRelease(lengthStr); + + JSStringRef validJSON = JSStringCreateWithUTF8CString("{\"aProperty\":true}"); + JSValueRef jsonObject = JSValueMakeFromJSONString(context, validJSON); + JSStringRelease(validJSON); + if (!JSValueIsObject(context, jsonObject)) { + printf("FAIL: Did not parse valid JSON correctly\n"); + failed = 1; + } else + printf("PASS: Parsed valid JSON string.\n"); + JSStringRef propertyName = JSStringCreateWithUTF8CString("aProperty"); + assertEqualsAsBoolean(JSObjectGetProperty(context, JSValueToObject(context, jsonObject, 0), propertyName, 0), true); + JSStringRelease(propertyName); + JSStringRef invalidJSON = JSStringCreateWithUTF8CString("fail!"); + if (JSValueMakeFromJSONString(context, invalidJSON)) { + printf("FAIL: Should return null for invalid JSON data\n"); + failed = 1; + } else + printf("PASS: Correctly returned null for invalid JSON data.\n"); JSValueRef exception; + JSStringRef str = JSValueCreateJSONString(context, jsonObject, 0, 0); + if (!JSStringIsEqualToUTF8CString(str, "{\"aProperty\":true}")) { + printf("FAIL: Did not correctly serialise with indent of 0.\n"); + failed = 1; + } else + printf("PASS: Correctly serialised with indent of 0.\n"); + JSStringRelease(str); + str = JSValueCreateJSONString(context, jsonObject, 4, 0); + if (!JSStringIsEqualToUTF8CString(str, "{\n \"aProperty\": true\n}")) { + printf("FAIL: Did not correctly serialise with indent of 4.\n"); + failed = 1; + } else + printf("PASS: Correctly serialised with indent of 4.\n"); + JSStringRelease(str); + JSStringRef src = JSStringCreateWithUTF8CString("({get a(){ throw '';}})"); + JSValueRef unstringifiableObj = JSEvaluateScript(context, src, NULL, NULL, 1, NULL); + + str = JSValueCreateJSONString(context, unstringifiableObj, 4, 0); + if (str) { + printf("FAIL: Didn't return null when attempting to serialize unserializable value.\n"); + JSStringRelease(str); + failed = 1; + } else + printf("PASS: returned null when attempting to serialize unserializable value.\n"); + + str = JSValueCreateJSONString(context, unstringifiableObj, 4, &exception); + if (str) { + printf("FAIL: Didn't return null when attempting to serialize unserializable value.\n"); + JSStringRelease(str); + failed = 1; + } else + printf("PASS: returned null when attempting to serialize unserializable value.\n"); + if (!exception) { + printf("FAIL: Did not set exception on serialisation error\n"); + failed = 1; + } else + printf("PASS: set exception on serialisation error\n"); // Conversions that throw exceptions exception = NULL; ASSERT(NULL == JSValueToObject(context, jsNull, &exception)); diff --git a/Android.mk b/Android.mk index e76da32..1b5da02 100644 --- a/Android.mk +++ b/Android.mk @@ -45,6 +45,16 @@ LOCAL_SRC_FILES := \ interpreter/Interpreter.cpp \ interpreter/RegisterFile.cpp \ \ + jit/ExecutableAllocator.cpp\ + jit/ExecutableAllocatorFixedVMPool.cpp \ + jit/ExecutableAllocatorPosix.cpp \ + jit/JIT.cpp \ + jit/JITArithmetic.cpp \ + jit/JITCall.cpp \ + jit/JITOpcodes.cpp \ + jit/JITPropertyAccess.cpp \ + jit/JITStubs.cpp \ + \ parser/Lexer.cpp \ parser/Nodes.cpp \ parser/Parser.cpp \ @@ -142,13 +152,6 @@ LOCAL_SRC_FILES := \ runtime/TimeoutChecker.cpp \ runtime/UString.cpp \ \ - wrec/CharacterClass.cpp \ - wrec/CharacterClassConstructor.cpp \ - wrec/WREC.cpp \ - wrec/WRECFunctors.cpp \ - wrec/WRECGenerator.cpp \ - wrec/WRECParser.cpp \ - \ wtf/Assertions.cpp \ wtf/ByteArray.cpp \ wtf/CurrentTime.cpp \ @@ -162,16 +165,26 @@ LOCAL_SRC_FILES := \ wtf/ThreadIdentifierDataPthreads.cpp \ wtf/Threading.cpp \ wtf/ThreadingPthreads.cpp \ + wtf/WTFThreadData.cpp \ \ wtf/TypeTraits.cpp \ wtf/dtoa.cpp \ \ wtf/android/MainThreadAndroid.cpp \ \ + wtf/text/AtomicString.cpp \ + wtf/text/CString.cpp \ + wtf/text/StringImpl.cpp \ + wtf/text/WTFString.cpp \ + \ wtf/unicode/CollatorDefault.cpp \ wtf/unicode/UTF8.cpp \ \ - wtf/unicode/icu/CollatorICU.cpp + wtf/unicode/icu/CollatorICU.cpp \ + \ + yarr/RegexCompiler.cpp \ + yarr/RegexInterpreter.cpp \ + yarr/RegexJIT.cpp # Rule to build grammar.y with our custom bison. GEN := $(intermediates)/parser/Grammar.cpp diff --git a/Android.v8.wtf.mk b/Android.v8.wtf.mk index 69128d6..9249e47 100644 --- a/Android.v8.wtf.mk +++ b/Android.v8.wtf.mk @@ -45,12 +45,18 @@ LOCAL_SRC_FILES := \ wtf/ThreadIdentifierDataPthreads.cpp \ wtf/Threading.cpp \ wtf/ThreadingPthreads.cpp \ - \ - wtf/android/MainThreadAndroid.cpp \ + wtf/WTFThreadData.cpp \ \ wtf/TypeTraits.cpp \ wtf/dtoa.cpp \ \ + wtf/android/MainThreadAndroid.cpp \ + \ + wtf/text/AtomicString.cpp \ + wtf/text/CString.cpp \ + wtf/text/StringImpl.cpp \ + wtf/text/WTFString.cpp \ + \ wtf/unicode/CollatorDefault.cpp \ wtf/unicode/UTF8.cpp \ \ diff --git a/DerivedSources.make b/DerivedSources.make index 9eaccab..4fc9cad 100644 --- a/DerivedSources.make +++ b/DerivedSources.make @@ -48,6 +48,7 @@ all : \ RegExpObject.lut.h \ StringPrototype.lut.h \ docs/bytecode.html \ + RegExpJitTables.h \ # # lookup tables for classes @@ -74,3 +75,7 @@ chartables.c : dftables docs/bytecode.html: make-bytecode-docs.pl Interpreter.cpp perl $^ $@ + +#character tables for Yarr +RegExpJitTables.h: create_regex_tables + python $^ > $@ diff --git a/DerivedSources.pro b/DerivedSources.pro index bd9f6ab..7c5aad8 100644 --- a/DerivedSources.pro +++ b/DerivedSources.pro @@ -77,8 +77,8 @@ addExtraCompiler(jscbison) # GENERATOR 3: JIT Stub functions for RVCT rvctstubs.output = $${JSC_GENERATED_SOURCES_DIR}$${QMAKE_DIR_SEP}Generated${QMAKE_FILE_BASE}_RVCT.h -rvctstubs.wkScript = $$PWD/create_rvct_stubs -rvctstubs.commands = perl $$rvctstubs.wkScript ${QMAKE_FILE_NAME} -i > ${QMAKE_FILE_OUT} +rvctstubs.wkScript = $$PWD/create_jit_stubs +rvctstubs.commands = perl -i $$rvctstubs.wkScript --prefix RVCT ${QMAKE_FILE_NAME} > ${QMAKE_FILE_OUT} rvctstubs.depends = ${QMAKE_FILE_NAME} rvctstubs.input = RVCT_STUB_FILES rvctstubs.CONFIG += no_link @@ -93,3 +93,9 @@ ctgen.commands = perl $$ctgen.wkScript ${QMAKE_FILE_OUT} $$PREPROCESSOR ctgen.clean = ${QMAKE_FILE_OUT} ${QMAKE_VAR_JSC_GENERATED_SOURCES_DIR}${QMAKE_FILE_BASE} addExtraCompiler(ctgen) +#GENERATOR: "RegExpJitTables.h": tables used by Yarr +retgen.output = $$JSC_GENERATED_SOURCES_DIR/RegExpJitTables.h +retgen.wkScript = $$PWD/create_regex_tables +retgen.input = retgen.wkScript +retgen.commands = python $$retgen.wkScript > ${QMAKE_FILE_OUT} +addExtraCompiler(retgen) diff --git a/GNUmakefile.am b/GNUmakefile.am index 7ac6a8c..cd93c1b 100644 --- a/GNUmakefile.am +++ b/GNUmakefile.am @@ -10,11 +10,13 @@ javascriptcore_cppflags += \ -I$(srcdir)/JavaScriptCore/pcre \ -I$(srcdir)/JavaScriptCore/profiler \ -I$(srcdir)/JavaScriptCore/runtime \ - -I$(srcdir)/JavaScriptCore/wrec \ -I$(srcdir)/JavaScriptCore/jit \ -I$(srcdir)/JavaScriptCore/assembler \ + -I$(srcdir)/JavaScriptCore/wtf \ + -I$(srcdir)/JavaScriptCore/wtf/text \ -I$(srcdir)/JavaScriptCore/wtf/unicode \ -I$(srcdir)/JavaScriptCore/yarr \ + -I$(top_builddir)/JavaScriptCore \ -I$(top_builddir)/JavaScriptCore/pcre \ -I$(top_builddir)/JavaScriptCore/parser \ -I$(top_builddir)/JavaScriptCore/runtime @@ -33,6 +35,7 @@ javascriptcore_h_api += \ javascriptcore_built_nosources += \ DerivedSources/Lexer.lut.h \ + JavaScriptCore/RegExpJitTables.h \ JavaScriptCore/runtime/ArrayPrototype.lut.h \ JavaScriptCore/runtime/DatePrototype.lut.h \ JavaScriptCore/runtime/JSONObject.lut.h \ @@ -81,16 +84,23 @@ javascriptcore_sources += \ JavaScriptCore/jit/ExecutableAllocator.h \ JavaScriptCore/jit/JIT.cpp \ JavaScriptCore/jit/JITOpcodes.cpp \ + JavaScriptCore/jit/JITOpcodes32_64.cpp \ JavaScriptCore/jit/JITCall.cpp \ JavaScriptCore/jit/JITCode.h \ JavaScriptCore/jit/JITPropertyAccess.cpp \ + JavaScriptCore/jit/JITPropertyAccess32_64.cpp \ JavaScriptCore/jit/JITArithmetic.cpp \ + JavaScriptCore/jit/JITArithmetic32_64.cpp \ JavaScriptCore/jit/ExecutableAllocator.cpp \ JavaScriptCore/jit/JIT.h \ JavaScriptCore/jit/JITInlineMethods.h \ JavaScriptCore/jit/JITStubs.cpp \ JavaScriptCore/jit/JITStubs.h \ JavaScriptCore/jit/JITStubCall.h \ + JavaScriptCore/jit/JSInterfaceJIT.h \ + JavaScriptCore/jit/SpecializedThunkJIT.h \ + JavaScriptCore/jit/ThunkGenerators.cpp \ + JavaScriptCore/jit/ThunkGenerators.h \ JavaScriptCore/bytecode/StructureStubInfo.cpp \ JavaScriptCore/bytecode/StructureStubInfo.h \ JavaScriptCore/bytecode/CodeBlock.cpp \ @@ -192,6 +202,7 @@ javascriptcore_sources += \ JavaScriptCore/runtime/JSONObject.h \ JavaScriptCore/runtime/JSPropertyNameIterator.cpp \ JavaScriptCore/runtime/JSPropertyNameIterator.h \ + JavaScriptCore/runtime/JSStringBuilder.h \ JavaScriptCore/runtime/JSZombie.h \ JavaScriptCore/runtime/LiteralParser.cpp \ JavaScriptCore/runtime/LiteralParser.h \ @@ -208,24 +219,18 @@ javascriptcore_sources += \ JavaScriptCore/runtime/StructureChain.cpp \ JavaScriptCore/runtime/StructureChain.h \ JavaScriptCore/runtime/StructureTransitionTable.h \ + JavaScriptCore/runtime/Terminator.h \ JavaScriptCore/runtime/TimeoutChecker.cpp \ JavaScriptCore/runtime/TimeoutChecker.h \ JavaScriptCore/runtime/JSTypeInfo.h \ JavaScriptCore/runtime/WeakGCMap.h \ JavaScriptCore/runtime/WeakGCPtr.h \ - JavaScriptCore/wrec/CharacterClass.h \ - JavaScriptCore/wrec/CharacterClassConstructor.h \ - JavaScriptCore/wrec/Escapes.h \ - JavaScriptCore/wrec/Quantifier.h \ - JavaScriptCore/wrec/WREC.h \ - JavaScriptCore/wrec/WRECFunctors.h \ - JavaScriptCore/wrec/WRECGenerator.h \ - JavaScriptCore/wrec/WRECParser.h \ JavaScriptCore/wtf/ASCIICType.h \ JavaScriptCore/wtf/AVLTree.h \ JavaScriptCore/wtf/AlwaysInline.h \ JavaScriptCore/wtf/Assertions.cpp \ JavaScriptCore/wtf/Assertions.h \ + JavaScriptCore/wtf/Atomics.h \ JavaScriptCore/wtf/ByteArray.cpp \ JavaScriptCore/wtf/ByteArray.h \ JavaScriptCore/wtf/CrossThreadRefCounted.h \ @@ -248,6 +253,8 @@ javascriptcore_sources += \ JavaScriptCore/wtf/ListHashSet.h \ JavaScriptCore/wtf/ListRefPtr.h \ JavaScriptCore/wtf/Locker.h \ + JavaScriptCore/wtf/MD5.cpp \ + JavaScriptCore/wtf/MD5.h \ JavaScriptCore/wtf/MainThread.cpp \ JavaScriptCore/wtf/MainThread.h \ JavaScriptCore/wtf/MathExtras.h \ @@ -262,7 +269,6 @@ javascriptcore_sources += \ JavaScriptCore/wtf/PassRefPtr.h \ JavaScriptCore/wtf/Platform.h \ JavaScriptCore/wtf/PossiblyNull.h \ - JavaScriptCore/wtf/PtrAndFlags.h \ JavaScriptCore/wtf/RandomNumber.cpp \ JavaScriptCore/wtf/RandomNumber.h \ JavaScriptCore/wtf/RandomNumberSeed.h \ @@ -273,6 +279,7 @@ javascriptcore_sources += \ JavaScriptCore/wtf/RefPtrHashMap.h \ JavaScriptCore/wtf/RetainPtr.h \ JavaScriptCore/wtf/SegmentedVector.h \ + JavaScriptCore/wtf/StaticConstructors.h \ JavaScriptCore/wtf/StdLibExtras.h \ JavaScriptCore/wtf/StringExtras.h \ JavaScriptCore/wtf/StringHashFunctions.h \ @@ -283,19 +290,35 @@ javascriptcore_sources += \ JavaScriptCore/wtf/ThreadIdentifierDataPthreads.h \ JavaScriptCore/wtf/Threading.cpp \ JavaScriptCore/wtf/Threading.h \ + JavaScriptCore/wtf/ThreadingPrimitives.h \ JavaScriptCore/wtf/ThreadingPthreads.cpp \ + JavaScriptCore/wtf/ThreadSafeShared.h \ JavaScriptCore/wtf/ThreadSpecific.h \ JavaScriptCore/wtf/TypeTraits.cpp \ JavaScriptCore/wtf/TypeTraits.h \ JavaScriptCore/wtf/UnusedParam.h \ + JavaScriptCore/wtf/ValueCheck.h \ JavaScriptCore/wtf/Vector.h \ JavaScriptCore/wtf/VectorTraits.h \ - JavaScriptCore/wtf/gtk/GOwnPtr.cpp \ - JavaScriptCore/wtf/gtk/GOwnPtr.h \ - JavaScriptCore/wtf/gtk/GRefPtr.cpp \ - JavaScriptCore/wtf/gtk/GRefPtr.h \ + JavaScriptCore/wtf/WTFThreadData.cpp \ + JavaScriptCore/wtf/WTFThreadData.h \ + JavaScriptCore/wtf/gobject/GOwnPtr.cpp \ + JavaScriptCore/wtf/gobject/GOwnPtr.h \ + JavaScriptCore/wtf/gobject/GRefPtr.cpp \ + JavaScriptCore/wtf/gobject/GRefPtr.h \ JavaScriptCore/wtf/gtk/MainThreadGtk.cpp \ JavaScriptCore/wtf/gtk/ThreadingGtk.cpp \ + JavaScriptCore/wtf/text/AtomicString.cpp \ + JavaScriptCore/wtf/text/AtomicString.h \ + JavaScriptCore/wtf/text/AtomicStringImpl.h \ + JavaScriptCore/wtf/text/CString.cpp \ + JavaScriptCore/wtf/text/CString.h \ + JavaScriptCore/wtf/text/StringHash.h \ + JavaScriptCore/wtf/text/StringImpl.cpp \ + JavaScriptCore/wtf/text/StringImpl.h \ + JavaScriptCore/wtf/text/StringStatics.cpp \ + JavaScriptCore/wtf/text/WTFString.cpp \ + JavaScriptCore/wtf/text/WTFString.h \ JavaScriptCore/wtf/unicode/Collator.h \ JavaScriptCore/wtf/unicode/CollatorDefault.cpp \ JavaScriptCore/wtf/unicode/UTF8.cpp \ @@ -484,13 +507,18 @@ javascriptcore_sources += \ JavaScriptCore/runtime/PutPropertySlot.h \ JavaScriptCore/runtime/RegExp.cpp \ JavaScriptCore/runtime/RegExp.h \ + JavaScriptCore/runtime/RegExpCache.cpp \ + JavaScriptCore/runtime/RegExpCache.h \ JavaScriptCore/runtime/RegExpConstructor.cpp \ JavaScriptCore/runtime/RegExpConstructor.h \ + JavaScriptCore/runtime/RegExpKey.h \ JavaScriptCore/runtime/RegExpMatchesArray.h \ JavaScriptCore/runtime/RegExpObject.cpp \ JavaScriptCore/runtime/RegExpObject.h \ JavaScriptCore/runtime/RegExpPrototype.cpp \ JavaScriptCore/runtime/RegExpPrototype.h \ + JavaScriptCore/runtime/RopeImpl.cpp \ + JavaScriptCore/runtime/RopeImpl.h \ JavaScriptCore/runtime/ScopeChain.cpp \ JavaScriptCore/runtime/ScopeChain.h \ JavaScriptCore/runtime/ScopeChainMark.h \ @@ -505,7 +533,6 @@ javascriptcore_sources += \ JavaScriptCore/runtime/Tracing.h \ JavaScriptCore/runtime/UString.cpp \ JavaScriptCore/runtime/UString.h \ - JavaScriptCore/runtime/UStringImpl.cpp \ JavaScriptCore/runtime/UStringImpl.h \ JavaScriptCore/runtime/WeakRandom.h \ JavaScriptCore/wtf/FastAllocBase.h \ @@ -535,6 +562,9 @@ DerivedSources/Lexer.lut.h: $(CREATE_HASH_TABLE) $(srcdir)/JavaScriptCore/parser JavaScriptCore/%.lut.h: $(CREATE_HASH_TABLE) $(srcdir)/JavaScriptCore/%.cpp $(PERL) $^ -i > $@ +JavaScriptCore/RegExpJitTables.h: $(srcdir)/JavaScriptCore/create_regex_tables + $(PYTHON) $(srcdir)/JavaScriptCore/create_regex_tables > $@ + JavaScriptCore/pcre/chartables.c: $(srcdir)/JavaScriptCore/pcre/dftables $(PERL) $^ $@ @@ -595,6 +625,7 @@ Programs_jsc_LDADD = \ javascriptcore_dist += \ $(CREATE_HASH_TABLE) \ + $(CREATE_REGEXP_TABLES) \ JavaScriptCore/AUTHORS \ JavaScriptCore/COPYING.LIB \ JavaScriptCore/ChangeLog \ diff --git a/JavaScriptCore.exp b/JavaScriptCore.exp index aa82120..3f408c6 100644 --- a/JavaScriptCore.exp +++ b/JavaScriptCore.exp @@ -1,3 +1,5 @@ +__ZN7WebCore10StringImpl6createEPKcj +__ZN7WebCore12AtomicString11addSlowCaseEPNS_10StringImplE _JSCheckScriptSyntax _JSClassCreate _JSClassRelease @@ -18,8 +20,10 @@ _JSGlobalContextRetain _JSObjectCallAsConstructor _JSObjectCallAsFunction _JSObjectCopyPropertyNames +_JSObjectDeletePrivateProperty _JSObjectDeleteProperty _JSObjectGetPrivate +_JSObjectGetPrivateProperty _JSObjectGetProperty _JSObjectGetPropertyAtIndex _JSObjectGetPrototype @@ -35,6 +39,7 @@ _JSObjectMakeFunction _JSObjectMakeFunctionWithCallback _JSObjectMakeRegExp _JSObjectSetPrivate +_JSObjectSetPrivateProperty _JSObjectSetProperty _JSObjectSetPropertyAtIndex _JSObjectSetPrototype @@ -57,6 +62,7 @@ _JSStringIsEqual _JSStringIsEqualToUTF8CString _JSStringRelease _JSStringRetain +_JSValueCreateJSONString _JSValueGetType _JSValueIsBoolean _JSValueIsEqual @@ -69,6 +75,7 @@ _JSValueIsStrictEqual _JSValueIsString _JSValueIsUndefined _JSValueMakeBoolean +_JSValueMakeFromJSONString _JSValueMakeNull _JSValueMakeNumber _JSValueMakeString @@ -79,6 +86,10 @@ _JSValueToNumber _JSValueToObject _JSValueToStringCopy _JSValueUnprotect +_JSWeakObjectMapClear +_JSWeakObjectMapCreate +_JSWeakObjectMapGet +_JSWeakObjectMapSet _WebCoreWebThreadIsLockedOrDisabled _WTFLog _WTFLogVerbose @@ -91,12 +102,14 @@ __Z12jsRegExpFreeP8JSRegExp __Z15jsRegExpCompilePKti24JSRegExpIgnoreCaseOption23JSRegExpMultilineOptionPjPPKc __Z15jsRegExpExecutePK8JSRegExpPKtiiPii __ZN14OpaqueJSString6createERKN3JSC7UStringE -__ZN3JSC10Identifier11addSlowCaseEPNS_12JSGlobalDataEPNS_11UStringImplE -__ZN3JSC10Identifier11addSlowCaseEPNS_9ExecStateEPNS_11UStringImplE -__ZN3JSC10Identifier24checkSameIdentifierTableEPNS_12JSGlobalDataEPNS_11UStringImplE -__ZN3JSC10Identifier24checkSameIdentifierTableEPNS_9ExecStateEPNS_11UStringImplE +__ZN3JSC10Identifier11addSlowCaseEPNS_12JSGlobalDataEPN7WebCore10StringImplE +__ZN3JSC10Identifier11addSlowCaseEPNS_9ExecStateEPN7WebCore10StringImplE +__ZN3JSC10Identifier27checkCurrentIdentifierTableEPNS_12JSGlobalDataE +__ZN3JSC10Identifier27checkCurrentIdentifierTableEPNS_9ExecStateE __ZN3JSC10Identifier3addEPNS_9ExecStateEPKc -__ZN3JSC10Identifier5equalEPKNS_11UStringImplEPKc +__ZN3JSC10Identifier4fromEPNS_9ExecStateEi +__ZN3JSC10Identifier4fromEPNS_9ExecStateEj +__ZN3JSC10Identifier5equalEPKN7WebCore10StringImplEPKc __ZN3JSC10JSFunctionC1EPNS_9ExecStateEN3WTF17NonNullPassRefPtrINS_9StructureEEEiRKNS_10IdentifierEPFNS_7JSValueES2_PNS_8JSObjectESA_RKNS_7ArgListEE __ZN3JSC10throwErrorEPNS_9ExecStateENS_9ErrorTypeE __ZN3JSC10throwErrorEPNS_9ExecStateENS_9ErrorTypeEPKc @@ -104,24 +117,20 @@ __ZN3JSC10throwErrorEPNS_9ExecStateENS_9ErrorTypeERKNS_7UStringE __ZN3JSC11JSByteArray15createStructureENS_7JSValueE __ZN3JSC11JSByteArrayC1EPNS_9ExecStateEN3WTF17NonNullPassRefPtrINS_9StructureEEEPNS3_9ByteArrayEPKNS_9ClassInfoE __ZN3JSC11ParserArena5resetEv -__ZN3JSC11UStringImpl12sharedBufferEv -__ZN3JSC11UStringImpl6s_nullE -__ZN3JSC11UStringImpl7s_emptyE -__ZN3JSC11UStringImplD1Ev __ZN3JSC11checkSyntaxEPNS_9ExecStateERKNS_10SourceCodeE __ZN3JSC12DateInstance4infoE __ZN3JSC12DateInstanceC1EPNS_9ExecStateEN3WTF17NonNullPassRefPtrINS_9StructureEEEd __ZN3JSC12DateInstanceC1EPNS_9ExecStateEd __ZN3JSC12JSGlobalData10ClientDataD2Ev __ZN3JSC12JSGlobalData11jsArrayVPtrE -__ZN3JSC12JSGlobalData12createLeakedEv +__ZN3JSC12JSGlobalData12createLeakedENS_15ThreadStackTypeE __ZN3JSC12JSGlobalData12jsStringVPtrE __ZN3JSC12JSGlobalData12stopSamplingEv __ZN3JSC12JSGlobalData13startSamplingEv __ZN3JSC12JSGlobalData14dumpSampleDataEPNS_9ExecStateE __ZN3JSC12JSGlobalData14resetDateCacheEv __ZN3JSC12JSGlobalData14sharedInstanceEv -__ZN3JSC12JSGlobalData6createEv +__ZN3JSC12JSGlobalData6createENS_15ThreadStackTypeE __ZN3JSC12JSGlobalDataD1Ev __ZN3JSC12SamplingTool5setupEv __ZN3JSC12SmallStrings17createEmptyStringEPNS_12JSGlobalDataE @@ -165,7 +174,7 @@ __ZN3JSC16JSVariableObject14symbolTableGetERKNS_10IdentifierERNS_18PropertyDescr __ZN3JSC16JSVariableObject19getOwnPropertyNamesEPNS_9ExecStateERNS_17PropertyNameArrayENS_15EnumerationModeE __ZN3JSC16toUInt32SlowCaseEdRb __ZN3JSC17BytecodeGenerator21setDumpsGeneratedCodeEb -__ZN3JSC17PropertyNameArray3addEPNS_11UStringImplE +__ZN3JSC17PropertyNameArray3addEPN7WebCore10StringImplE __ZN3JSC17PrototypeFunctionC1EPNS_9ExecStateEN3WTF17NonNullPassRefPtrINS_9StructureEEEiRKNS_10IdentifierEPFNS_7JSValueES2_PNS_8JSObjectESA_RKNS_7ArgListEE __ZN3JSC17PrototypeFunctionC1EPNS_9ExecStateEiRKNS_10IdentifierEPFNS_7JSValueES2_PNS_8JSObjectES6_RKNS_7ArgListEE __ZN3JSC17constructFunctionEPNS_9ExecStateERKNS_7ArgListERKNS_10IdentifierERKNS_7UStringEi @@ -186,12 +195,11 @@ __ZN3JSC23objectProtoFuncToStringEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_ __ZN3JSC23setUpStaticFunctionSlotEPNS_9ExecStateEPKNS_9HashEntryEPNS_8JSObjectERKNS_10IdentifierERNS_12PropertySlotE __ZN3JSC24createStackOverflowErrorEPNS_9ExecStateE __ZN3JSC25evaluateInGlobalCallFrameERKNS_7UStringERNS_7JSValueEPNS_14JSGlobalObjectE -__ZN3JSC25g_identifierTableSpecificE -__ZN3JSC29createIdentifierTableSpecificEv __ZN3JSC35createInterruptedExecutionExceptionEPNS_12JSGlobalDataE __ZN3JSC3NaNE __ZN3JSC4Heap14primaryHeapEndEv __ZN3JSC4Heap15recordExtraCostEm +__ZN3JSC4Heap16objectTypeCountsEv __ZN3JSC4Heap16primaryHeapBeginEv __ZN3JSC4Heap17collectAllGarbageEv __ZN3JSC4Heap17globalObjectCountEv @@ -204,12 +212,10 @@ __ZN3JSC4Heap7protectENS_7JSValueE __ZN3JSC4Heap8allocateEm __ZN3JSC4Heap9unprotectENS_7JSValueE __ZN3JSC4callEPNS_9ExecStateENS_7JSValueENS_8CallTypeERKNS_8CallDataES2_RKNS_7ArgListE -__ZN3JSC5equalEPKNS_11UStringImplES2_ __ZN3JSC6JSCell11getCallDataERNS_8CallDataE __ZN3JSC6JSCell11getJSNumberEv __ZN3JSC6JSCell14deletePropertyEPNS_9ExecStateERKNS_10IdentifierE __ZN3JSC6JSCell14deletePropertyEPNS_9ExecStateEj -__ZN3JSC6JSCell14toThisJSStringEPNS_9ExecStateE __ZN3JSC6JSCell16getConstructDataERNS_13ConstructDataE __ZN3JSC6JSCell18getOwnPropertySlotEPNS_9ExecStateERKNS_10IdentifierERNS_12PropertySlotE __ZN3JSC6JSCell18getOwnPropertySlotEPNS_9ExecStateEjRNS_12PropertySlotE @@ -225,12 +231,14 @@ __ZN3JSC6JSLock6unlockENS_14JSLockBehaviorE __ZN3JSC6JSLock9lockCountEv __ZN3JSC6JSLockC1EPNS_9ExecStateE __ZN3JSC6Parser5parseEPNS_12JSGlobalDataEPiPNS_7UStringE -__ZN3JSC7CStringD1Ev -__ZN3JSC7CStringaSERKS0_ +__ZN3JSC7JSArray12markChildrenERNS_9MarkStackE +__ZN3JSC7JSArray15setSubclassDataEPv __ZN3JSC7JSArray4infoE __ZN3JSC7JSArray9setLengthEj __ZN3JSC7JSArrayC1EN3WTF17NonNullPassRefPtrINS_9StructureEEE __ZN3JSC7JSArrayC1EN3WTF17NonNullPassRefPtrINS_9StructureEEERKNS_7ArgListE +__ZN3JSC7JSArrayC2EN3WTF17NonNullPassRefPtrINS_9StructureEEE +__ZN3JSC7JSArrayD2Ev __ZN3JSC7Profile10restoreAllEv __ZN3JSC7Profile5focusEPKNS_11ProfileNodeE __ZN3JSC7Profile7excludeEPKNS_11ProfileNodeE @@ -240,8 +248,7 @@ __ZN3JSC7UString4fromEi __ZN3JSC7UString4fromEj __ZN3JSC7UString4fromEl __ZN3JSC7UStringC1EPKc -__ZN3JSC7UStringC1EPKti -__ZN3JSC7UStringaSEPKc +__ZN3JSC7UStringC1EPKtj __ZN3JSC8Debugger23recompileAllJSFunctionsEPNS_12JSGlobalDataE __ZN3JSC8Debugger6attachEPNS_14JSGlobalObjectE __ZN3JSC8Debugger6detachEPNS_14JSGlobalObjectE @@ -271,7 +278,6 @@ __ZN3JSC8JSObject23allocatePropertyStorageEmm __ZN3JSC8JSObject24getOwnPropertyDescriptorEPNS_9ExecStateERKNS_10IdentifierERNS_18PropertyDescriptorE __ZN3JSC8JSObject3putEPNS_9ExecStateERKNS_10IdentifierENS_7JSValueERNS_15PutPropertySlotE __ZN3JSC8JSObject3putEPNS_9ExecStateEjNS_7JSValueE -__ZN3JSC8JSString4RopeD1Ev __ZN3JSC8Profiler13stopProfilingEPNS_9ExecStateERKNS_7UStringE __ZN3JSC8Profiler14startProfilingEPNS_9ExecStateERKNS_7UStringE __ZN3JSC8Profiler8profilerEv @@ -282,7 +288,7 @@ __ZN3JSC9MarkStack10s_pageSizeE __ZN3JSC9MarkStack12releaseStackEPvm __ZN3JSC9MarkStack13allocateStackEm __ZN3JSC9MarkStack18initializePagesizeEv -__ZN3JSC9Structure13hasTransitionEPNS_11UStringImplEj +__ZN3JSC9Structure13hasTransitionEPN7WebCore10StringImplEj __ZN3JSC9Structure17stopIgnoringLeaksEv __ZN3JSC9Structure18startIgnoringLeaksEv __ZN3JSC9Structure21addPropertyTransitionEPS0_RKNS_10IdentifierEjPNS_6JSCellERm @@ -291,7 +297,7 @@ __ZN3JSC9Structure25changePrototypeTransitionEPS0_NS_7JSValueE __ZN3JSC9Structure27despecifyDictionaryFunctionERKNS_10IdentifierE __ZN3JSC9Structure27despecifyFunctionTransitionEPS0_RKNS_10IdentifierE __ZN3JSC9Structure28addPropertyWithoutTransitionERKNS_10IdentifierEjPNS_6JSCellE -__ZN3JSC9Structure3getEPKNS_11UStringImplERjRPNS_6JSCellE +__ZN3JSC9Structure3getEPKN7WebCore10StringImplERjRPNS_6JSCellE __ZN3JSC9Structure40addPropertyTransitionToExistingStructureEPS0_RKNS_10IdentifierEjPNS_6JSCellERm __ZN3JSC9StructureC1ENS_7JSValueERKNS_8TypeInfoEj __ZN3JSC9StructureD1Ev @@ -301,6 +307,7 @@ __ZN3JSCgtERKNS_7UStringES2_ __ZN3JSCltERKNS_7UStringES2_ __ZN3WTF10fastCallocEmm __ZN3WTF10fastMallocEm +__ZN3WTF10fastStrDupEPKc __ZN3WTF11currentTimeEv __ZN3WTF11fastReallocEPvm __ZN3WTF12createThreadEPFPvS0_ES0_ @@ -308,9 +315,13 @@ __ZN3WTF12createThreadEPFPvS0_ES0_PKc __ZN3WTF12detachThreadEj __ZN3WTF12isMainThreadEv __ZN3WTF12randomNumberEv +__ZN3WTF13WTFThreadData10staticDataE +__ZN3WTF13WTFThreadDataC1Ev +__ZN3WTF13WTFThreadDataD1Ev __ZN3WTF13currentThreadEv __ZN3WTF13tryFastCallocEmm __ZN3WTF13tryFastMallocEm +__ZN3WTF14fastMallocSizeEPKv __ZN3WTF15ThreadCondition4waitERNS_5MutexE __ZN3WTF15ThreadCondition6signalEv __ZN3WTF15ThreadCondition9broadcastEv @@ -323,6 +334,7 @@ __ZN3WTF18dateToDaysFrom1970Eiii __ZN3WTF18monthFromDayInYearEib __ZN3WTF19initializeThreadingEv __ZN3WTF20fastMallocStatisticsEv +__ZN3WTF20initializeMainThreadEv __ZN3WTF21RefCountedLeakCounter16suppressMessagesEPKc __ZN3WTF21RefCountedLeakCounter24cancelMessageSuppressionEPKc __ZN3WTF21RefCountedLeakCounter9decrementEv @@ -338,24 +350,113 @@ __ZN3WTF32doubleToStringInJavaScriptFormatEdPcPj __ZN3WTF36lockAtomicallyInitializedStaticMutexEv __ZN3WTF37parseDateFromNullTerminatedCharactersEPKc __ZN3WTF38unlockAtomicallyInitializedStaticMutexEv +__ZN3WTF39initializeMainThreadToProcessMainThreadEv +__ZN3WTF3MD58addBytesEPKhm +__ZN3WTF3MD58checksumEv +__ZN3WTF3MD5C1Ev __ZN3WTF5Mutex4lockEv __ZN3WTF5Mutex6unlockEv __ZN3WTF5Mutex7tryLockEv __ZN3WTF5MutexC1Ev __ZN3WTF5MutexD1Ev __ZN3WTF6strtodEPKcPPc +__ZN3WTF7CString11mutableDataEv +__ZN3WTF7CString16newUninitializedEmRPc +__ZN3WTF7CStringC1EPKc +__ZN3WTF7CStringC1EPKcj __ZN3WTF7Unicode18convertUTF16ToUTF8EPPKtS2_PPcS4_b +__ZN3WTF7Unicode18convertUTF8ToUTF16EPPKcS2_PPtS4_b __ZN3WTF8Collator18setOrderLowerFirstEb __ZN3WTF8CollatorC1EPKc __ZN3WTF8CollatorD1Ev __ZN3WTF8fastFreeEPv __ZN3WTF8msToYearEd -__ZN3WTF9dayInYearEdi __ZN3WTF9ByteArray6createEm +__ZN3WTF9dayInYearEdi +__ZN3WTFeqERKNS_7CStringES2_ +__ZN7WebCore10StringImpl11reverseFindEPS0_ib +__ZN7WebCore10StringImpl11reverseFindEti +__ZN7WebCore10StringImpl12sharedBufferEv +__ZN7WebCore10StringImpl18simplifyWhiteSpaceEv +__ZN7WebCore10StringImpl19characterStartingAtEj +__ZN7WebCore10StringImpl19createUninitializedEjRPt +__ZN7WebCore10StringImpl22containsOnlyWhitespaceEv +__ZN7WebCore10StringImpl23defaultWritingDirectionEv +__ZN7WebCore10StringImpl37createStrippingNullCharactersSlowCaseEPKtj +__ZN7WebCore10StringImpl4findEPFbtEi +__ZN7WebCore10StringImpl4findEPKcib +__ZN7WebCore10StringImpl4findEPS0_ib +__ZN7WebCore10StringImpl4findEti +__ZN7WebCore10StringImpl5adoptERNS_12StringBufferE +__ZN7WebCore10StringImpl5emptyEv +__ZN7WebCore10StringImpl5lowerEv +__ZN7WebCore10StringImpl5toIntEPb +__ZN7WebCore10StringImpl5upperEv +__ZN7WebCore10StringImpl6createEPKc +__ZN7WebCore10StringImpl6createEPKtj +__ZN7WebCore10StringImpl6createEPKtjN3WTF10PassRefPtrINS3_21CrossThreadRefCountedINS3_16OwnFastMallocPtrIS1_EEEEEE +__ZN7WebCore10StringImpl6secureEtb +__ZN7WebCore10StringImpl7replaceEPS0_S1_ +__ZN7WebCore10StringImpl7replaceEjjPS0_ +__ZN7WebCore10StringImpl7replaceEtPS0_ +__ZN7WebCore10StringImpl7replaceEtt +__ZN7WebCore10StringImpl8endsWithEPS0_b +__ZN7WebCore10StringImpl9substringEjj +__ZN7WebCore10StringImplD1Ev +__ZN7WebCore11commentAtomE +__ZN7WebCore12AtomicString3addEPKc +__ZN7WebCore12AtomicString3addEPKt +__ZN7WebCore12AtomicString3addEPKtj +__ZN7WebCore12AtomicString3addEPKtjj +__ZN7WebCore12AtomicString4findEPKtjj +__ZN7WebCore12AtomicString4initEv +__ZN7WebCore15charactersToIntEPKtmPb +__ZN7WebCore17charactersToFloatEPKtmPb +__ZN7WebCore17equalIgnoringCaseEPKtPKcj +__ZN7WebCore17equalIgnoringCaseEPNS_10StringImplEPKc +__ZN7WebCore17equalIgnoringCaseEPNS_10StringImplES1_ +__ZN7WebCore18charactersToDoubleEPKtmPb +__ZN7WebCore20equalIgnoringNullityEPNS_10StringImplES1_ +__ZN7WebCore21charactersToIntStrictEPKtmPbi +__ZN7WebCore22charactersToUIntStrictEPKtmPbi +__ZN7WebCore5equalEPKNS_10StringImplEPKc +__ZN7WebCore5equalEPKNS_10StringImplES2_ +__ZN7WebCore6String26fromUTF8WithLatin1FallbackEPKcm +__ZN7WebCore6String29charactersWithNullTerminationEv +__ZN7WebCore6String6appendEPKtj +__ZN7WebCore6String6appendERKS0_ +__ZN7WebCore6String6appendEc +__ZN7WebCore6String6appendEt +__ZN7WebCore6String6formatEPKcz +__ZN7WebCore6String6insertERKS0_j +__ZN7WebCore6String6numberEd +__ZN7WebCore6String6numberEi +__ZN7WebCore6String6numberEj +__ZN7WebCore6String6numberEl +__ZN7WebCore6String6numberEm +__ZN7WebCore6String6numberEt +__ZN7WebCore6String6numberEx +__ZN7WebCore6String6numberEy +__ZN7WebCore6String6removeEji +__ZN7WebCore6String8fromUTF8EPKc +__ZN7WebCore6String8fromUTF8EPKcm +__ZN7WebCore6String8truncateEj +__ZN7WebCore6StringC1EPKt +__ZN7WebCore7xmlAtomE +__ZN7WebCore8nullAtomE +__ZN7WebCore8starAtomE +__ZN7WebCore8textAtomE +__ZN7WebCore9emptyAtomE +__ZN7WebCore9xmlnsAtomE +__ZN7WebCoreeqERKNS_12AtomicStringEPKc +__ZN7WebCoreplEPKcRKNS_6StringE +__ZN7WebCoreplERKNS_6StringEPKc +__ZN7WebCoreplERKNS_6StringES2_ __ZNK3JSC10JSFunction23isHostFunctionNonInlineEv __ZNK3JSC11Interpreter14retrieveCallerEPNS_9ExecStateEPNS_16InternalFunctionE __ZNK3JSC11Interpreter18retrieveLastCallerEPNS_9ExecStateERiRlRNS_7UStringERNS_7JSValueE -__ZNK3JSC14JSGlobalObject14isDynamicScopeEv +__ZNK3JSC12PropertySlot14functionGetterEPNS_9ExecStateE +__ZNK3JSC14JSGlobalObject14isDynamicScopeERb __ZNK3JSC16InternalFunction9classInfoEv __ZNK3JSC16JSVariableObject16isVariableObjectEv __ZNK3JSC17DebuggerCallFrame10thisObjectEv @@ -374,7 +475,6 @@ __ZNK3JSC4Heap10statisticsEv __ZNK3JSC4Heap11objectCountEv __ZNK3JSC6JSCell11toPrimitiveEPNS_9ExecStateENS_22PreferredPrimitiveTypeE __ZNK3JSC6JSCell12toThisObjectEPNS_9ExecStateE -__ZNK3JSC6JSCell12toThisStringEPNS_9ExecStateE __ZNK3JSC6JSCell14isGetterSetterEv __ZNK3JSC6JSCell8toNumberEPNS_9ExecStateE __ZNK3JSC6JSCell8toObjectEPNS_9ExecStateE @@ -385,6 +485,7 @@ __ZNK3JSC6JSCell9getStringEPNS_9ExecStateERNS_7UStringE __ZNK3JSC6JSCell9getUInt32ERj __ZNK3JSC6JSCell9toBooleanEPNS_9ExecStateE __ZNK3JSC7ArgList8getSliceEiRS0_ +__ZNK3JSC7JSArray12subclassDataEv __ZNK3JSC7JSValue16toObjectSlowCaseEPNS_9ExecStateE __ZNK3JSC7JSValue19synthesizePrototypeEPNS_9ExecStateE __ZNK3JSC7JSValue20toThisObjectSlowCaseEPNS_9ExecStateE @@ -393,7 +494,7 @@ __ZNK3JSC7UString10UTF8StringEb __ZNK3JSC7UString14toStrictUInt32EPb __ZNK3JSC7UString5asciiEv __ZNK3JSC7UString6is8BitEv -__ZNK3JSC7UString6substrEii +__ZNK3JSC7UString6substrEjj __ZNK3JSC7UString8toUInt32EPb __ZNK3JSC7UString8toUInt32EPbb __ZNK3JSC8JSObject11hasPropertyEPNS_9ExecStateERKNS_10IdentifierE @@ -409,6 +510,32 @@ __ZNK3JSC8JSString11resolveRopeEPNS_9ExecStateE __ZNK3JSC9HashTable11createTableEPNS_12JSGlobalDataE __ZNK3JSC9HashTable11deleteTableEv __ZNK3WTF8Collator7collateEPKtmS2_m +__ZNK7WebCore12AtomicString5lowerEv +__ZNK7WebCore6String11toIntStrictEPbi +__ZNK7WebCore6String12toUIntStrictEPbi +__ZNK7WebCore6String14threadsafeCopyEv +__ZNK7WebCore6String15stripWhiteSpaceEv +__ZNK7WebCore6String16removeCharactersEPFbtE +__ZNK7WebCore6String17crossThreadStringEv +__ZNK7WebCore6String18simplifyWhiteSpaceEv +__ZNK7WebCore6String19characterStartingAtEj +__ZNK7WebCore6String4utf8Ev +__ZNK7WebCore6String5asciiEv +__ZNK7WebCore6String5lowerEv +__ZNK7WebCore6String5splitERKS0_RN3WTF6VectorIS0_Lm0EEE +__ZNK7WebCore6String5splitERKS0_bRN3WTF6VectorIS0_Lm0EEE +__ZNK7WebCore6String5splitEtRN3WTF6VectorIS0_Lm0EEE +__ZNK7WebCore6String5splitEtbRN3WTF6VectorIS0_Lm0EEE +__ZNK7WebCore6String5toIntEPb +__ZNK7WebCore6String5upperEv +__ZNK7WebCore6String6latin1Ev +__ZNK7WebCore6String6toUIntEPb +__ZNK7WebCore6String7toFloatEPb +__ZNK7WebCore6String8foldCaseEv +__ZNK7WebCore6String8toDoubleEPb +__ZNK7WebCore6String8toIntPtrEPb +__ZNK7WebCore6String8toUInt64EPb +__ZNK7WebCore6String9substringEjj __ZTVN3JSC12StringObjectE __ZTVN3JSC14JSGlobalObjectE __ZTVN3JSC15JSWrapperObjectE diff --git a/JavaScriptCore.gyp/JavaScriptCore.gyp b/JavaScriptCore.gyp/JavaScriptCore.gyp index 66f40e9..9e014dd 100644 --- a/JavaScriptCore.gyp/JavaScriptCore.gyp +++ b/JavaScriptCore.gyp/JavaScriptCore.gyp @@ -114,9 +114,10 @@ # ... Then include what we want. ['include', '../wtf/'], # GLib/GTK, even though its name doesn't really indicate. - ['exclude', '/(gtk|glib)/.*\\.(cpp|h)$'], + ['exclude', '/(gtk|glib|gobject)/.*\\.(cpp|h)$'], ['exclude', '(Default|Gtk|Mac|None|Qt|Win|Wx)\\.(cpp|mm)$'], ['exclude', 'wtf/CurrentTime\\.cpp$'], + ['exclude', 'wtf/MainThread.cpp$'], ['exclude', 'wtf/TC.*\\.(cpp|h)$'], ], 'direct_dependent_settings': { diff --git a/JavaScriptCore.gypi b/JavaScriptCore.gypi index 24577da..787e0e6 100644 --- a/JavaScriptCore.gypi +++ b/JavaScriptCore.gypi @@ -115,11 +115,14 @@ 'jit/JIT.cpp', 'jit/JIT.h', 'jit/JITArithmetic.cpp', + 'jit/JITArithmetic32_64.cpp', 'jit/JITCall.cpp', 'jit/JITCode.h', 'jit/JITInlineMethods.h', 'jit/JITOpcodes.cpp', + 'jit/JITOpcodes32_64.cpp', 'jit/JITPropertyAccess.cpp', + 'jit/JITPropertyAccess32_64.cpp', 'jit/JITStubCall.h', 'jit/JITStubs.cpp', 'jit/JITStubs.h', @@ -299,8 +302,11 @@ 'runtime/PutPropertySlot.h', 'runtime/RegExp.cpp', 'runtime/RegExp.h', + 'runtime/RegExpCache.cpp', + 'runtime/RegExpCache.h', 'runtime/RegExpConstructor.cpp', 'runtime/RegExpConstructor.h', + 'runtime/RegExpKey.h', 'runtime/RegExpMatchesArray.h', 'runtime/RegExpObject.cpp', 'runtime/RegExpObject.h', @@ -324,30 +330,18 @@ 'runtime/StructureChain.h', 'runtime/StructureTransitionTable.h', 'runtime/SymbolTable.h', + 'runtime/Terminator.h', 'runtime/TimeoutChecker.cpp', 'runtime/TimeoutChecker.h', 'runtime/Tracing.h', 'runtime/UString.cpp', 'runtime/UString.h', 'runtime/WeakRandom.h', - 'wrec/CharacterClass.cpp', - 'wrec/CharacterClass.h', - 'wrec/CharacterClassConstructor.cpp', - 'wrec/CharacterClassConstructor.h', - 'wrec/Escapes.h', - 'wrec/Quantifier.h', - 'wrec/WREC.cpp', - 'wrec/WREC.h', - 'wrec/WRECFunctors.cpp', - 'wrec/WRECFunctors.h', - 'wrec/WRECGenerator.cpp', - 'wrec/WRECGenerator.h', - 'wrec/WRECParser.cpp', - 'wrec/WRECParser.h', 'wtf/AlwaysInline.h', 'wtf/ASCIICType.h', 'wtf/Assertions.cpp', 'wtf/Assertions.h', + 'wtf/Atomics.h', 'wtf/AVLTree.h', 'wtf/ByteArray.cpp', 'wtf/ByteArray.h', @@ -367,8 +361,8 @@ 'wtf/FastMalloc.h', 'wtf/Forward.h', 'wtf/GetPtr.h', - 'wtf/gtk/GOwnPtr.cpp', - 'wtf/gtk/GOwnPtr.h', + 'wtf/gobject/GOwnPtr.cpp', + 'wtf/gobject/GOwnPtr.h', 'wtf/gtk/MainThreadGtk.cpp', 'wtf/gtk/ThreadingGtk.cpp', 'wtf/HashCountedSet.h', @@ -382,6 +376,8 @@ 'wtf/ListHashSet.h', 'wtf/ListRefPtr.h', 'wtf/Locker.h', + 'wtf/MD5.cpp', + 'wtf/MD5.h', 'wtf/MainThread.cpp', 'wtf/MainThread.h', 'wtf/MallocZoneSupport.h', @@ -393,7 +389,6 @@ 'wtf/OwnFastMallocPtr.h', 'wtf/OwnPtr.h', 'wtf/OwnPtrCommon.h', - 'wtf/OwnPtrWin.cpp', 'wtf/PassOwnPtr.h', 'wtf/PassRefPtr.h', 'wtf/Platform.h', @@ -408,11 +403,13 @@ 'wtf/RefPtrHashMap.h', 'wtf/RetainPtr.h', 'wtf/SegmentedVector.h', + 'wtf/StaticConstructors.h', 'wtf/StdLibExtras.h', 'wtf/StringExtras.h', 'wtf/StringHashFunctions.h', 'wtf/TCPackedCache.h', 'wtf/qt/MainThreadQt.cpp', + 'wtf/qt/StringQt.cpp', 'wtf/qt/ThreadingQt.cpp', 'wtf/TCPageMap.h', 'wtf/TCSpinLock.h', @@ -423,12 +420,25 @@ 'wtf/Threading.cpp', 'wtf/Threading.h', 'wtf/ThreadingNone.cpp', + 'wtf/ThreadingPrimitives.h', 'wtf/ThreadingPthreads.cpp', 'wtf/ThreadingWin.cpp', + 'wtf/ThreadSafeShared.h', 'wtf/ThreadSpecific.h', 'wtf/ThreadSpecificWin.cpp', 'wtf/TypeTraits.cpp', 'wtf/TypeTraits.h', + 'wtf/text/AtomicString.cpp', + 'wtf/text/AtomicString.h', + 'wtf/text/AtomicStringImpl.h', + 'wtf/text/CString.cpp', + 'wtf/text/CString.h', + 'wtf/text/StringHash.h', + 'wtf/text/StringImpl.cpp', + 'wtf/text/StringImpl.h', + 'wtf/text/StringStatics.cpp', + 'wtf/text/WTFString.cpp', + 'wtf/text/WTFString.h', 'wtf/unicode/Collator.h', 'wtf/unicode/CollatorDefault.cpp', 'wtf/unicode/glib/UnicodeGLib.cpp', @@ -441,10 +451,14 @@ 'wtf/unicode/UTF8.cpp', 'wtf/unicode/UTF8.h', 'wtf/UnusedParam.h', + 'wtf/ValueCheck.h', 'wtf/Vector.h', 'wtf/VectorTraits.h', 'wtf/VMTags.h', + 'wtf/WTFThreadData.cpp', + 'wtf/WTFThreadData.h', 'wtf/win/MainThreadWin.cpp', + 'wtf/win/OwnPtrWin.cpp', 'wtf/wx/MainThreadWx.cpp', 'yarr/RegexCompiler.cpp', 'yarr/RegexCompiler.h', diff --git a/JavaScriptCore.iPhone.order b/JavaScriptCore.iPhone.order deleted file mode 100644 index aafa210..0000000 --- a/JavaScriptCore.iPhone.order +++ /dev/null @@ -1,1220 +0,0 @@ -__ZN3WTF10fastMallocEm -__ZN3WTF10fastMallocILb1EEEPvm -__ZN3WTF20TCMalloc_ThreadCache10InitModuleEv - stub helpers -__ZN3WTFL15InitSizeClassesEv -__Z20TCMalloc_SystemAllocmPmm -__ZN3WTF20TCMalloc_ThreadCache22CreateCacheIfNecessaryEv -__ZN3WTF20TCMalloc_ThreadCache7NewHeapEP17_opaque_pthread_t -__ZN3WTF20TCMalloc_ThreadCache14PickNextSampleEm -__ZN3WTF25TCMalloc_Central_FreeList11RemoveRangeEPPvS2_Pi -__ZN3WTF25TCMalloc_Central_FreeList18FetchFromSpansSafeEv -__ZN3WTF17TCMalloc_PageHeap3NewEm -__ZN3WTF17TCMalloc_PageHeap10AllocLargeEm -__ZN3WTF17TCMalloc_PageHeap8GrowHeapEm -__ZN3WTFL13MetaDataAllocEm -__ZN3WTF17TCMalloc_PageHeap6DeleteEPNS_4SpanE -__ZN3WTF17TCMalloc_PageHeap19IncrementalScavengeEm -__Z22TCMalloc_SystemReleasePvm -__ZN3WTF17TCMalloc_PageHeap5CarveEPNS_4SpanEmb -__ZN3WTF16fastZeroedMallocEm -__ZN3WTF8fastFreeEPv -__ZN3WTF12isMainThreadEv -__ZN3JSC19initializeThreadingEv -__ZN3JSCL23initializeThreadingOnceEv -__ZN3WTF19initializeThreadingEv -__ZN3WTF20initializeMainThreadEv -__ZN3WTF5MutexC1Ev -__ZN3WTF28initializeMainThreadPlatformEv -__ZN3JSC17initializeUStringEv -__ZN3JSC12JSGlobalData10storeVPtrsEv -__ZN3JSC9StructureC1ENS_7JSValueERKNS_8TypeInfoEj -__ZN3JSC7JSArrayC1EN3WTF17NonNullPassRefPtrINS_9StructureEEE -__ZN3JSC7JSArrayD1Ev -__ZN3JSC7JSArrayD2Ev -__ZN3JSC9StructureD1Ev -__ZN3JSC9StructureD2Ev -__ZN3JSC11JSByteArray15createStructureENS_7JSValueE -__ZN3JSC11JSByteArrayD1Ev -__ZN3JSC8JSStringD1Ev -__ZN3JSC8JSStringD2Ev -__ZN3JSC10JSFunctionC1EN3WTF17NonNullPassRefPtrINS_9StructureEEE -__ZN3JSC10JSFunctionD1Ev -__ZN3JSC10JSFunctionD2Ev -__ZN3JSC18VPtrHackExecutableD0Ev -__ZN3JSC16InternalFunctionD2Ev -__ZN3WTF15initializeDatesEv -__ZN3WTF20equivalentYearForDSTEi -__ZN3WTF11currentTimeEv -__ZN3WTF14FastMallocZone4sizeEP14_malloc_zone_tPKv -__ZN3WTF36lockAtomicallyInitializedStaticMutexEv -__ZN3WTF38unlockAtomicallyInitializedStaticMutexEv -__ZN3WTF5Mutex4lockEv -__ZN3WTF5Mutex6unlockEv -__ZN3WTF6strtodEPKcPPc -__ZN3JSC6JSLock12DropAllLocksC1ENS_14JSLockBehaviorE -__ZN3JSC6JSLock12DropAllLocksC2ENS_14JSLockBehaviorE -__ZN3JSCL17createJSLockCountEv -__ZN3JSC6JSLock12DropAllLocksD1Ev -__ZN3WTF20TCMalloc_ThreadCache18DestroyThreadCacheEPv -__ZN3WTF20TCMalloc_ThreadCache11DeleteCacheEPS0_ -__ZN3WTF20TCMalloc_ThreadCache21ReleaseToCentralCacheEmi -__ZN3WTF25TCMalloc_Central_FreeList18ReleaseListToSpansEPv -__ZN3WTF25TCMalloc_Central_FreeList14MakeCacheSpaceEv -__ZN3WTF16callOnMainThreadEPFvPvES0_ -__ZN3WTF5DequeINS_19FunctionWithContextEE14expandCapacityEv -__ZN3WTF37scheduleDispatchFunctionsOnMainThreadEv --[WTFMainThreadCaller call] -__ZN3WTF31dispatchFunctionsFromMainThreadEv -__ZN3WTF15ThreadConditionC1Ev -__ZN3WTF12createThreadEPFPvS0_ES0_PKc -__ZN3WTF20createThreadInternalEPFPvS0_ES0_PKc -__ZN3WTFL35establishIdentifierForPthreadHandleERKP17_opaque_pthread_t -__ZN3WTF9HashTableIjSt4pairIjP17_opaque_pthread_tENS_18PairFirstExtractorIS4_EENS_7IntHashIjEENS_14PairHashTraitsINS_10HashTraitsIjEENSA_IS3_EEEESB_E6rehashEi -__ZN3WTF9HashTableIjSt4pairIjP17_opaque_pthread_tENS_18PairFirstExtractorIS4_EENS_7IntHashIjEENS_14PairHashTraitsINS_10HashTraitsIjEENSA_IS3_EEEESB_E4findIjNS_22IdentityHashTranslatorIjS4_S8_EEEENS_17HashTableIteratorIjS4_S6_S8_SD_SB_EERKT_ -__ZN3WTF9HashTableIjSt4pairIjP17_opaque_pthread_tENS_18PairFirstExtractorIS4_EENS_7IntHashIjEENS_14PairHashTraitsINS_10HashTraitsIjEENSA_IS3_EEEESB_E3addIjS3_NS_17HashMapTranslatorIS4_SD_S8_EEEES1_INS_17HashTableIteratorIjS4_S6_S8_SD_SB_EEbERKT_RKT0_ -__ZN3WTF15ThreadCondition4waitERNS_5MutexE -__ZN3WTFL16threadEntryPointEPv -__ZN3WTF31initializeCurrentThreadInternalEPKc -__ZN3WTF20ThreadIdentifierData10initializeEj -__ZN3WTF20ThreadIdentifierData23initializeKeyOnceHelperEv -__ZN3WTF5MutexD1Ev -__ZN3WTF13currentThreadEv -__ZN3WTF20ThreadIdentifierData10identifierEv -__ZN3WTF15ThreadCondition9broadcastEv -__ZN3WTF15ThreadCondition6signalEv -__ZN3JSC12JSGlobalData12createLeakedEv -__ZN3JSC9Structure18startIgnoringLeaksEv -__ZN3JSC12JSGlobalDataC2Eb -__ZN3JSC21createIdentifierTableEv -__ZN3JSC17CommonIdentifiersC1EPNS_12JSGlobalDataE -__ZN3JSC17CommonIdentifiersC2EPNS_12JSGlobalDataE -__ZN3JSC10Identifier3addEPNS_12JSGlobalDataEPKc -__ZNK3JSC11UStringImpl4hashEv -__ZN3WTF9HashTableIPKcSt4pairIS2_NS_6RefPtrIN3JSC11UStringImplEEEENS_18PairFirstExtractorIS8_EENS_7PtrHashIS2_EENS_14PairHashTraitsINS_10HashTraitsIS2_EENSE_IS7_EEEESF_E4findIS2_NS_22IdentityHashTranslatorIS2_S8_SC_EEEENS_17HashTableIteratorIS2_S8_SA_SC_SH_SF_EERKT_ -__ZN3WTF9HashTableIPKcSt4pairIS2_NS_6RefPtrIN3JSC11UStringImplEEEENS_18PairFirstExtractorIS8_EENS_7PtrHashIS2_EENS_14PairHashTraitsINS_10HashTraitsIS2_EENSE_IS7_EEEESF_E6rehashEi -__ZN3WTF9HashTableIPKcSt4pairIS2_NS_6RefPtrIN3JSC11UStringImplEEEENS_18PairFirstExtractorIS8_EENS_7PtrHashIS2_EENS_14PairHashTraitsINS_10HashTraitsIS2_EENSE_IS7_EEEESF_E3addIS2_S7_NS_17HashMapTranslatorIS8_SH_SC_EEEES3_INS_17HashTableIteratorIS2_S8_SA_SC_SH_SF_EEbERKT_RKT0_ -__ZN3WTF9HashTableIPN3JSC11UStringImplES3_NS_17IdentityExtractorIS3_EENS_7StrHashIS3_EENS_10HashTraitsIS3_EES9_E6rehashEi -__ZN3JSC5equalEPKNS_11UStringImplES2_ -__ZN3WTF9HashTableIPN3JSC11UStringImplES3_NS_17IdentityExtractorIS3_EENS_7StrHashIS3_EENS_10HashTraitsIS3_EES9_E4findIS3_NS_22IdentityHashTranslatorIS3_S3_S7_EEEENS_17HashTableIteratorIS3_S3_S5_S7_S9_S9_EERKT_ -__ZN3JSC12SmallStringsC1Ev -__ZN3JSC5LexerC1EPNS_12JSGlobalDataE -__ZN3JSC11ParserArenaC1Ev -__ZN3JSC11InterpreterC1Ev -__ZN3JSC11InterpreterC2Ev -__ZN3JSC11Interpreter14privateExecuteENS0_13ExecutionFlagEPNS_12RegisterFileEPNS_9ExecStateEPNS_7JSValueE -__ZN3WTF9HashTableIPKvSt4pairIS2_N3JSC8OpcodeIDEENS_18PairFirstExtractorIS6_EENS_7PtrHashIS2_EENS_14PairHashTraitsINS_10HashTraitsIS2_EENSC_IS5_EEEESD_E4findIS2_NS_22IdentityHashTranslatorIS2_S6_SA_EEEENS_17HashTableIteratorIS2_S6_S8_SA_SF_SD_EERKT_ -__ZN3WTF9HashTableIPKvSt4pairIS2_N3JSC8OpcodeIDEENS_18PairFirstExtractorIS6_EENS_7PtrHashIS2_EENS_14PairHashTraitsINS_10HashTraitsIS2_EENSC_IS5_EEEESD_E6rehashEi -__ZN3WTF9HashTableIPKvSt4pairIS2_N3JSC8OpcodeIDEENS_18PairFirstExtractorIS6_EENS_7PtrHashIS2_EENS_14PairHashTraitsINS_10HashTraitsIS2_EENSC_IS5_EEEESD_E3addIS2_S5_NS_17HashMapTranslatorIS6_SF_SA_EEEES3_INS_17HashTableIteratorIS2_S6_S8_SA_SF_SD_EEbERKT_RKT0_ -__ZN3JSC14TimeoutCheckerC1Ev -__ZN3JSC4HeapC1EPNS_12JSGlobalDataE -__ZN3JSC4Heap13allocateBlockEv -__ZN3WTF11fastReallocEPvm -__ZN3WTF11fastReallocILb1EEEPvS1_m -__ZN3JSC9MarkStack18initializePagesizeEv -__ZN3JSC9MarkStack13allocateStackEm -__ZN3JSC27startProfilerServerIfNeededEv -+[ProfilerServer sharedProfileServer] --[ProfilerServer init] -__ZN3JSC25setDefaultIdentifierTableEPNS_15IdentifierTableE -__ZN3JSC29createIdentifierTableSpecificEv -__ZN3JSCL37createIdentifierTableSpecificCallbackEv -__ZN3JSC25setCurrentIdentifierTableEPNS_15IdentifierTableE -__ZN3JSC9Structure17stopIgnoringLeaksEv -__Z15jsRegExpCompilePKti24JSRegExpIgnoreCaseOption23JSRegExpMultilineOptionPjPPKc -__ZL30calculateCompiledPatternLengthPKti24JSRegExpIgnoreCaseOptionR11CompileDataR9ErrorCode -__ZL11checkEscapePPKtS0_P9ErrorCodeib -__ZL13compileBranchiPiPPhPPKtS3_P9ErrorCodeS_S_R11CompileData -__Z15jsRegExpExecutePK8JSRegExpPKtiiPii -__ZL5matchPKtPKhiR9MatchData -__ZN3JSC7UStringC1EPKti -__ZN3JSC7UStringC2EPKti -__ZN3WTF13tryFastMallocEm -__ZN3WTF10fastMallocILb0EEEPvm -__ZN3JSC11UStringImpl12sharedBufferEv -__ZN3JSC4Heap8allocateEm -__ZN3JSC6JSCellD1Ev -__ZN3JSC4Heap7protectENS_7JSValueE -__ZN3WTF9HashTableIPN3JSC6JSCellESt4pairIS3_jENS_18PairFirstExtractorIS5_EENS_7PtrHashIS3_EENS_14PairHashTraitsINS_10HashTraitsIS3_EENSB_IjEEEESC_E6rehashEi -__ZN3WTF9HashTableIPN3JSC6JSCellESt4pairIS3_jENS_18PairFirstExtractorIS5_EENS_7PtrHashIS3_EENS_14PairHashTraitsINS_10HashTraitsIS3_EENSB_IjEEEESC_E4findIS3_NS_22IdentityHashTranslatorIS3_S5_S9_EEEENS_17HashTableIteratorIS3_S5_S7_S9_SE_SC_EERKT_ -__ZN3WTF9HashTableIPN3JSC6JSCellESt4pairIS3_jENS_18PairFirstExtractorIS5_EENS_7PtrHashIS3_EENS_14PairHashTraitsINS_10HashTraitsIS3_EENSB_IjEEEESC_E3addIS3_jNS_17HashMapTranslatorIS5_SE_S9_EEEES4_INS_17HashTableIteratorIS3_S5_S7_S9_SE_SC_EEbERKT_RKT0_ -__ZN3WTF9HashTableIPN3JSC6JSCellESt4pairIS3_jENS_18PairFirstExtractorIS5_EENS_7PtrHashIS3_EENS_14PairHashTraitsINS_10HashTraitsIS3_EENSB_IjEEEESC_E3addIS3_S5_NS_22IdentityHashTranslatorIS3_S5_S9_EEEES4_INS_17HashTableIteratorIS3_S5_S7_S9_SE_SC_EEbERKT_RKT0_ -__ZN3JSC14JSGlobalObjectnwEmPNS_12JSGlobalDataE -__ZN3JSC14JSGlobalObject4initEPNS_8JSObjectE -__ZN3JSC14JSGlobalObject5resetENS_7JSValueE -__ZN3JSC17FunctionPrototypeC1EPNS_9ExecStateEN3WTF17NonNullPassRefPtrINS_9StructureEEE -__ZN3JSC17FunctionPrototypeC2EPNS_9ExecStateEN3WTF17NonNullPassRefPtrINS_9StructureEEE -__ZN3JSC16InternalFunctionC2EPNS_12JSGlobalDataEN3WTF17NonNullPassRefPtrINS_9StructureEEERKNS_10IdentifierE -__ZN3JSC8jsStringEPNS_12JSGlobalDataERKNS_7UStringE -__ZN3JSC12SmallStrings17createEmptyStringEPNS_12JSGlobalDataE -__ZN3JSC7UStringC1EPKc -__ZN3JSCL9createRepEPKc -__ZN3JSC8JSObject17putDirectInternalERKNS_10IdentifierENS_7JSValueEjbRNS_15PutPropertySlotEPNS_6JSCellE -__ZN3JSC9Structure40addPropertyTransitionToExistingStructureEPS0_RKNS_10IdentifierEjPNS_6JSCellERm -__ZNK3JSC24StructureTransitionTable3getERKSt4pairIN3WTF6RefPtrINS_11UStringImplEEEjEPNS_6JSCellE -__ZN3JSC9Structure3getEPKNS_11UStringImplERjRPNS_6JSCellE -__ZN3JSC9Structure21addPropertyTransitionEPS0_RKNS_10IdentifierEjPNS_6JSCellERm -__ZN3JSC9Structure3putERKNS_10IdentifierEjPNS_6JSCellE -__ZN3JSC24StructureTransitionTable3addERKSt4pairIN3WTF6RefPtrINS_11UStringImplEEEjEPNS_9StructureEPNS_6JSCellE -__ZN3JSC9Structure28addPropertyWithoutTransitionERKNS_10IdentifierEjPNS_6JSCellE -__ZN3JSC17FunctionPrototype21addFunctionPropertiesEPNS_9ExecStateEPNS_9StructureEPPNS_17PrototypeFunctionES7_ -__ZN3JSC17PrototypeFunctionC1EPNS_9ExecStateEN3WTF17NonNullPassRefPtrINS_9StructureEEEiRKNS_10IdentifierEPFNS_7JSValueES2_PNS_8JSObjectESA_RKNS_7ArgListEE -__ZN3JSC17PrototypeFunctionC2EPNS_9ExecStateEN3WTF17NonNullPassRefPtrINS_9StructureEEEiRKNS_10IdentifierEPFNS_7JSValueES2_PNS_8JSObjectESA_RKNS_7ArgListEE -__ZN3JSC8JSObject34putDirectFunctionWithoutTransitionEPNS_9ExecStateEPNS_16InternalFunctionEj -__ZN3JSC16InternalFunction4nameEPNS_9ExecStateE -__ZN3JSC9Structure3getERKNS_10IdentifierE -__ZN3JSC15ObjectPrototypeC1EPNS_9ExecStateEN3WTF17NonNullPassRefPtrINS_9StructureEEEPS5_ -__ZN3JSC15ObjectPrototypeC2EPNS_9ExecStateEN3WTF17NonNullPassRefPtrINS_9StructureEEEPS5_ -__ZN3JSC9Structure26rehashPropertyMapHashTableEj -__ZN3JSC8JSObject17createInheritorIDEv -__ZN3JSC14ArrayPrototypeC1EN3WTF17NonNullPassRefPtrINS_9StructureEEE -__ZN3JSC7JSArrayC2EN3WTF17NonNullPassRefPtrINS_9StructureEEE -__ZN3JSC15StringPrototypeC1EPNS_9ExecStateEN3WTF17NonNullPassRefPtrINS_9StructureEEE -__ZN3JSC15StringPrototypeC2EPNS_9ExecStateEN3WTF17NonNullPassRefPtrINS_9StructureEEE -__ZN3JSC12StringObjectC2EPNS_9ExecStateEN3WTF17NonNullPassRefPtrINS_9StructureEEE -__ZN3JSC16BooleanPrototypeC1EPNS_9ExecStateEN3WTF17NonNullPassRefPtrINS_9StructureEEEPS5_ -__ZN3JSC16BooleanPrototypeC2EPNS_9ExecStateEN3WTF17NonNullPassRefPtrINS_9StructureEEEPS5_ -__ZN3JSC13BooleanObjectC2EN3WTF17NonNullPassRefPtrINS_9StructureEEE -__ZN3JSC15NumberPrototypeC1EPNS_9ExecStateEN3WTF17NonNullPassRefPtrINS_9StructureEEEPS5_ -__ZN3JSC15NumberPrototypeC2EPNS_9ExecStateEN3WTF17NonNullPassRefPtrINS_9StructureEEEPS5_ -__ZN3JSC12NumberObjectC2EN3WTF17NonNullPassRefPtrINS_9StructureEEE -__ZN3JSC13DatePrototypeC1EPNS_9ExecStateEN3WTF17NonNullPassRefPtrINS_9StructureEEE -__ZN3JSC12DateInstanceC2EPNS_9ExecStateEN3WTF17NonNullPassRefPtrINS_9StructureEEE -__ZN3JSC12nonInlineNaNEv -__ZN3JSC15RegExpPrototypeC1EPNS_9ExecStateEN3WTF17NonNullPassRefPtrINS_9StructureEEEPS5_ -__ZN3JSC15RegExpPrototypeC2EPNS_9ExecStateEN3WTF17NonNullPassRefPtrINS_9StructureEEEPS5_ -__ZN3JSC14ErrorPrototypeC1EPNS_9ExecStateEN3WTF17NonNullPassRefPtrINS_9StructureEEEPS5_ -__ZN3JSC14ErrorPrototypeC2EPNS_9ExecStateEN3WTF17NonNullPassRefPtrINS_9StructureEEEPS5_ -__ZN3JSC13ErrorInstanceC2EN3WTF17NonNullPassRefPtrINS_9StructureEEE -__ZN3JSC18jsNontrivialStringEPNS_12JSGlobalDataEPKc -__ZN3JSC20NativeErrorPrototypeC1EPNS_9ExecStateEN3WTF17NonNullPassRefPtrINS_9StructureEEERKNS_7UStringES9_ -__ZN3JSC17ObjectConstructorC1EPNS_9ExecStateEN3WTF17NonNullPassRefPtrINS_9StructureEEEPNS_15ObjectPrototypeEPS5_ -__ZN3JSC17ObjectConstructorC2EPNS_9ExecStateEN3WTF17NonNullPassRefPtrINS_9StructureEEEPNS_15ObjectPrototypeEPS5_ -__ZN3JSC10Identifier3addEPNS_9ExecStateEPKc -__ZN3JSC19FunctionConstructorC1EPNS_9ExecStateEN3WTF17NonNullPassRefPtrINS_9StructureEEEPNS_17FunctionPrototypeE -__ZN3JSC19FunctionConstructorC2EPNS_9ExecStateEN3WTF17NonNullPassRefPtrINS_9StructureEEEPNS_17FunctionPrototypeE -__ZNK3JSC16InternalFunction9classInfoEv -__ZN3JSC16ArrayConstructorC1EPNS_9ExecStateEN3WTF17NonNullPassRefPtrINS_9StructureEEEPNS_14ArrayPrototypeEPS5_ -__ZN3JSC16ArrayConstructorC2EPNS_9ExecStateEN3WTF17NonNullPassRefPtrINS_9StructureEEEPNS_14ArrayPrototypeEPS5_ -__ZNK3JSC14ArrayPrototype9classInfoEv -__ZN3JSC17StringConstructorC1EPNS_9ExecStateEN3WTF17NonNullPassRefPtrINS_9StructureEEEPS5_PNS_15StringPrototypeE -__ZN3JSC17StringConstructorC2EPNS_9ExecStateEN3WTF17NonNullPassRefPtrINS_9StructureEEEPS5_PNS_15StringPrototypeE -__ZNK3JSC15StringPrototype9classInfoEv -__ZN3JSC18BooleanConstructorC1EPNS_9ExecStateEN3WTF17NonNullPassRefPtrINS_9StructureEEEPNS_16BooleanPrototypeE -__ZN3JSC18BooleanConstructorC2EPNS_9ExecStateEN3WTF17NonNullPassRefPtrINS_9StructureEEEPNS_16BooleanPrototypeE -__ZNK3JSC13BooleanObject9classInfoEv -__ZN3JSC17NumberConstructorC1EPNS_9ExecStateEN3WTF17NonNullPassRefPtrINS_9StructureEEEPNS_15NumberPrototypeE -__ZN3JSC17NumberConstructorC2EPNS_9ExecStateEN3WTF17NonNullPassRefPtrINS_9StructureEEEPNS_15NumberPrototypeE -__ZN3JSC15DateConstructorC1EPNS_9ExecStateEN3WTF17NonNullPassRefPtrINS_9StructureEEEPS5_PNS_13DatePrototypeE -__ZN3JSC15DateConstructorC2EPNS_9ExecStateEN3WTF17NonNullPassRefPtrINS_9StructureEEEPS5_PNS_13DatePrototypeE -__ZNK3JSC13DatePrototype9classInfoEv -__ZN3JSC17RegExpConstructorC1EPNS_9ExecStateEN3WTF17NonNullPassRefPtrINS_9StructureEEEPNS_15RegExpPrototypeE -__ZN3JSC17RegExpConstructorC2EPNS_9ExecStateEN3WTF17NonNullPassRefPtrINS_9StructureEEEPNS_15RegExpPrototypeE -__ZN3JSC16ErrorConstructorC1EPNS_9ExecStateEN3WTF17NonNullPassRefPtrINS_9StructureEEEPNS_14ErrorPrototypeE -__ZN3JSC16ErrorConstructorC2EPNS_9ExecStateEN3WTF17NonNullPassRefPtrINS_9StructureEEEPNS_14ErrorPrototypeE -__ZNK3JSC13ErrorInstance9classInfoEv -__ZN3JSC22NativeErrorConstructorC1EPNS_9ExecStateEN3WTF17NonNullPassRefPtrINS_9StructureEEEPNS_20NativeErrorPrototypeE -__ZN3JSC22NativeErrorConstructorC2EPNS_9ExecStateEN3WTF17NonNullPassRefPtrINS_9StructureEEEPNS_20NativeErrorPrototypeE -__ZNK3JSC6JSCell9getStringEPNS_9ExecStateE -__ZN3JSC10Identifier11addSlowCaseEPNS_9ExecStateEPNS_11UStringImplE -__ZN3JSC10Identifier11addSlowCaseEPNS_12JSGlobalDataEPNS_11UStringImplE -__ZN3WTF9HashTableIPN3JSC11UStringImplES3_NS_17IdentityExtractorIS3_EENS_7StrHashIS3_EENS_10HashTraitsIS3_EES9_E3addIS3_S3_NS_22IdentityHashTranslatorIS3_S3_S7_EEEESt4pairINS_17HashTableIteratorIS3_S3_S5_S7_S9_S9_EEbERKT_RKT0_ -__ZN3JSC8JSObject23allocatePropertyStorageEmm -__ZN3JSC10MathObjectC1EPNS_9ExecStateEN3WTF17NonNullPassRefPtrINS_9StructureEEE -__ZN3JSC10MathObjectC2EPNS_9ExecStateEN3WTF17NonNullPassRefPtrINS_9StructureEEE -__ZN3JSC12SmallStrings24singleCharacterStringRepEh -__ZN3JSC19SmallStringsStorageC2Ev -__ZN3JSC14JSGlobalObject16addStaticGlobalsEPNS0_18GlobalPropertyInfoEi -__ZN3WTF9HashTableINS_6RefPtrIN3JSC11UStringImplEEESt4pairIS4_NS2_16SymbolTableEntryEENS_18PairFirstExtractorIS7_EENS2_17IdentifierRepHashENS_14PairHashTraitsINS_10HashTraitsIS4_EENS2_26SymbolTableIndexHashTraitsEEESD_E6rehashEi -__ZN3WTF9HashTableINS_6RefPtrIN3JSC11UStringImplEEESt4pairIS4_NS2_16SymbolTableEntryEENS_18PairFirstExtractorIS7_EENS2_17IdentifierRepHashENS_14PairHashTraitsINS_10HashTraitsIS4_EENS2_26SymbolTableIndexHashTraitsEEESD_E3addIPS3_S6_NS_29RefPtrHashMapRawKeyTranslatorISI_S7_SF_SA_EEEES5_INS_17HashTableIteratorIS4_S7_S9_SA_SF_SD_EEbERKT_RKT0_ -__ZN3JSC18GlobalEvalFunctionC1EPNS_9ExecStateEN3WTF17NonNullPassRefPtrINS_9StructureEEEiRKNS_10IdentifierEPFNS_7JSValueES2_PNS_8JSObjectESA_RKNS_7ArgListEEPNS_14JSGlobalObjectE -__ZN3JSC14JSGlobalObject14resetPrototypeENS_7JSValueE -__ZN3JSC9Structure25changePrototypeTransitionEPS0_NS_7JSValueE -__ZN3JSC9Structure17copyPropertyTableEv -__ZN3JSC14JSGlobalObject10globalExecEv -__ZN3JSC4Heap9unprotectENS_7JSValueE -__ZNK3JSC9HashTable11createTableEPNS_12JSGlobalDataE -__ZN3JSC14JSGlobalObject3putEPNS_9ExecStateERKNS_10IdentifierENS_7JSValueERNS_15PutPropertySlotE -__ZN3JSC8JSObject3putEPNS_9ExecStateERKNS_10IdentifierENS_7JSValueERNS_15PutPropertySlotE -__ZN3JSC14TimeoutChecker5resetEv -__ZN3JSC8evaluateEPNS_9ExecStateERNS_10ScopeChainERKNS_10SourceCodeENS_7JSValueE -__ZN3JSC6JSLockC1EPNS_9ExecStateE -__ZN3JSC17ProgramExecutable7compileEPNS_9ExecStateEPNS_14ScopeChainNodeE -__ZN3JSC6Parser5parseINS_11ProgramNodeEEEN3WTF10PassRefPtrIT_EEPNS_12JSGlobalDataEPNS_8DebuggerEPNS_9ExecStateERKNS_10SourceCodeEPiPNS_7UStringE -__ZN3JSC6Parser5parseEPNS_12JSGlobalDataEPiPNS_7UStringE -__ZN3JSC7UStringaSEPKc -__ZN3JSC5Lexer7setCodeERKNS_10SourceCodeERNS_11ParserArenaE -__Z10jscyyparsePv -__ZN3JSC5Lexer3lexEPvS1_ -__ZN3JSC10Identifier3addEPNS_12JSGlobalDataEPKti -__ZN3WTF9HashTableIPN3JSC11UStringImplES3_NS_17IdentityExtractorIS3_EENS_7StrHashIS3_EENS_10HashTraitsIS3_EES9_E18addPassingHashCodeINS1_11UCharBufferESC_NS_24HashSetTranslatorAdapterIS3_S9_SC_NS1_21UCharBufferTranslatorEEEEESt4pairINS_17HashTableIteratorIS3_S3_S5_S7_S9_S9_EEbERKT_RKT0_ -__ZN3WTF9HashTableIPN3JSC11UStringImplES3_NS_17IdentityExtractorIS3_EENS_7StrHashIS3_EENS_10HashTraitsIS3_EES9_E18addPassingHashCodeIPKcSD_NS_24HashSetTranslatorAdapterIS3_S9_SD_NS1_17CStringTranslatorEEEEESt4pairINS_17HashTableIteratorIS3_S3_S5_S7_S9_S9_EEbERKT_RKT0_ -__ZN3WTF9HashTableIPN3JSC11UStringImplES3_NS_17IdentityExtractorIS3_EENS_7StrHashIS3_EENS_10HashTraitsIS3_EES9_E20fullLookupForWritingINS1_11UCharBufferENS_24HashSetTranslatorAdapterIS3_S9_SC_NS1_21UCharBufferTranslatorEEEEESt4pairISG_IPS3_bEjERKT_ -__ZN3WTF9HashTableIPN3JSC11UStringImplES3_NS_17IdentityExtractorIS3_EENS_7StrHashIS3_EENS_10HashTraitsIS3_EES9_E20fullLookupForWritingIPKcNS_24HashSetTranslatorAdapterIS3_S9_SD_NS1_17CStringTranslatorEEEEESt4pairISH_IPS3_bEjERKT_ -__ZN3WTF15SegmentedVectorIN3JSC10IdentifierELm64EE6appendIS2_EEvRKT_ -__ZN3JSC16FunctionBodyNode6createEPNS_12JSGlobalDataE -__ZN3JSC11ParserArena14derefWithArenaEN3WTF10PassRefPtrINS_21ParserArenaRefCountedEEE -__ZN3JSC5Lexer10sourceCodeEiii -__ZN3JSC11ParserArena20allocateFreeablePoolEv -__ZN3JSC16FunctionBodyNode13finishParsingERKNS_10SourceCodeEPNS_13ParameterNodeERKNS_10IdentifierE -__ZN3JSC18FunctionParametersC2EPNS_13ParameterNodeE -__ZN3WTF6VectorIPN3JSC20ParserArenaDeletableELm0EE14expandCapacityEmPKS3_ -__ZN3JSC13StatementNode6setLocEii -__ZN3WTF6VectorIPN3JSC16FunctionBodyNodeELm0EE14expandCapacityEmPKS3_ -__ZN3JSC14SourceElements6appendEPNS_13StatementNodeE -__ZNK3JSC13StatementNode16isEmptyStatementEv -__ZN3WTF6VectorIPN3JSC13StatementNodeELm0EE14expandCapacityEmPKS3_ -__ZN3WTF6VectorIN3JSC10IdentifierELm0EE15reserveCapacityEm -__Z21mergeDeclarationListsIPN3JSC15ParserArenaDataIN3WTF6VectorISt4pairIPKNS0_10IdentifierEjELm0EEEEEET_SC_SC_ -__Z21mergeDeclarationListsIPN3JSC15ParserArenaDataIN3WTF6VectorIPNS0_16FunctionBodyNodeELm0EEEEEET_S9_S9_ -__ZN3JSC5Lexer10scanRegExpERPKNS_10IdentifierES4_t -__ZN3WTF6VectorItLm0EE14expandCapacityEmPKt -__ZL20makeFunctionCallNodePN3JSC12JSGlobalDataENS_8NodeInfoIPNS_14ExpressionNodeEEENS2_IPNS_13ArgumentsNodeEEEiii -__ZNK3JSC15DotAccessorNode10isLocationEv -__ZNK3JSC14ExpressionNode13isResolveNodeEv -__ZNK3JSC14ExpressionNode21isBracketAccessorNodeEv -__ZN3JSC5Lexer10skipRegExpEv -__ZL14makeAssignNodePN3JSC12JSGlobalDataEPNS_14ExpressionNodeENS_8OperatorES3_bbiii -__ZNK3JSC11ResolveNode10isLocationEv -__ZNK3JSC11ResolveNode13isResolveNodeEv -__ZN3WTF6VectorISt4pairIPKN3JSC10IdentifierEjELm0EE14expandCapacityEmPKS6_ -__ZNK3JSC14ExpressionNode10isLocationEv -__ZN3WTF6VectorIPNS0_IN3JSC10IdentifierELm64EEELm32EE14expandCapacityEmPKS4_ -__ZN3WTF6VectorIPvLm0EE14expandCapacityEmPKS1_ -__ZL11makeAddNodePN3JSC12JSGlobalDataEPNS_14ExpressionNodeES3_b -__ZNK3JSC14ExpressionNode8isNumberEv -__ZN3JSC6Parser16didFinishParsingEPNS_14SourceElementsEPNS_15ParserArenaDataIN3WTF6VectorISt4pairIPKNS_10IdentifierEjELm0EEEEEPNS3_INS5_IPNS_16FunctionBodyNodeELm0EEEEEjii -__ZN3JSC5Lexer5clearEv -__ZN3JSC11ProgramNode6createEPNS_12JSGlobalDataEPNS_14SourceElementsEPN3WTF6VectorISt4pairIPKNS_10IdentifierEjELm0EEEPNS6_IPNS_16FunctionBodyNodeELm0EEERKNS_10SourceCodeEji -__ZN3JSC9ScopeNodeC2EPNS_12JSGlobalDataERKNS_10SourceCodeEPNS_14SourceElementsEPN3WTF6VectorISt4pairIPKNS_10IdentifierEjELm0EEEPNS9_IPNS_16FunctionBodyNodeELm0EEEji -__ZN3JSC13ScopeNodeDataC2ERNS_11ParserArenaEPNS_14SourceElementsEPN3WTF6VectorISt4pairIPKNS_10IdentifierEjELm0EEEPNS6_IPNS_16FunctionBodyNodeELm0EEEi -__ZN3JSC11ParserArena10removeLastEv -__ZN3JSC11ParserArena5resetEv -__ZN3WTF15SegmentedVectorIN3JSC10IdentifierELm64EE5clearEv -__ZN3WTF15SegmentedVectorIN3JSC10IdentifierELm64EE17deleteAllSegmentsEv -__ZN3WTF6VectorIN3JSC10IdentifierELm64EE14shrinkCapacityEm -__ZN3WTF6VectorINS_6RefPtrIN3JSC21ParserArenaRefCountedEEELm0EE14shrinkCapacityEm -__ZN3JSC9CodeBlockC2EPNS_16ScriptExecutableENS_8CodeTypeEN3WTF10PassRefPtrINS_14SourceProviderEEEjPNS4_7HashMapINS4_6RefPtrINS_11UStringImplEEENS_16SymbolTableEntryENS_17IdentifierRepHashENS4_10HashTraitsISB_EENS_26SymbolTableIndexHashTraitsEEE -__ZN3WTF9HashTableIPN3JSC15GlobalCodeBlockES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E3addIS3_S3_NS_22IdentityHashTranslatorIS3_S3_S7_EEEESt4pairINS_17HashTableIteratorIS3_S3_S5_S7_S9_S9_EEbERKT_RKT0_ -__ZN3WTF9HashTableIPN3JSC15GlobalCodeBlockES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E6rehashEi -__ZN3JSC17BytecodeGeneratorC1EPNS_11ProgramNodeEPKNS_8DebuggerERKNS_10ScopeChainEPN3WTF7HashMapINS9_6RefPtrINS_11UStringImplEEENS_16SymbolTableEntryENS_17IdentifierRepHashENS9_10HashTraitsISD_EENS_26SymbolTableIndexHashTraitsEEEPNS_16ProgramCodeBlockE -__ZN3JSC17BytecodeGeneratorC2EPNS_11ProgramNodeEPKNS_8DebuggerERKNS_10ScopeChainEPN3WTF7HashMapINS9_6RefPtrINS_11UStringImplEEENS_16SymbolTableEntryENS_17IdentifierRepHashENS9_10HashTraitsISD_EENS_26SymbolTableIndexHashTraitsEEEPNS_16ProgramCodeBlockE -__ZN3JSC17BytecodeGenerator10emitOpcodeENS_8OpcodeIDE -__ZN3WTF15SegmentedVectorIN3JSC10RegisterIDELm32EE17ensureSegmentsForEm -__ZN3WTF6VectorIN3JSC10RegisterIDELm32EE4growEm -__ZN3JSC26BatchedTransitionOptimizerC2EPNS_8JSObjectE -__ZN3JSC9Structure31toCacheableDictionaryTransitionEPS0_ -__ZN3JSC9Structure22toDictionaryTransitionEPS0_NS0_14DictionaryKindE -__ZN3JSC24StructureTransitionTable6removeERKSt4pairIN3WTF6RefPtrINS_11UStringImplEEEjEPNS_6JSCellE -__ZN3JSC8JSObject12removeDirectERKNS_10IdentifierE -__ZN3JSC9Structure24removePropertyTransitionEPS0_RKNS_10IdentifierERm -__ZN3JSC9Structure6removeERKNS_10IdentifierE -__ZN3JSC17BytecodeGenerator12addGlobalVarERKNS_10IdentifierEbRPNS_10RegisterIDE -__ZN3WTF15SegmentedVectorIN3JSC10RegisterIDELm32EE6appendIiEEvRKT_ -__ZN3JSC17BytecodeGenerator15emitNewFunctionEPNS_10RegisterIDEPNS_16FunctionBodyNodeE -__ZN3JSC9CodeBlock15addFunctionDeclEN3WTF17NonNullPassRefPtrINS_18FunctionExecutableEEE -__ZN3JSC9Structure31removePropertyWithoutTransitionERKNS_10IdentifierE -__ZNK3JSC8JSObject11hasPropertyEPNS_9ExecStateERKNS_10IdentifierE -__ZNK3JSC7UString14toStrictUInt32EPb -__ZN3JSC17BytecodeGenerator16addConstantValueENS_7JSValueE -__ZN3WTF6VectorIN3JSC8RegisterELm0EE14expandCapacityEmPKS2_ -__ZN3JSC17BytecodeGenerator8emitMoveEPNS_10RegisterIDES2_ -__ZN3JSC9Structure26flattenDictionaryStructureEPNS_8JSObjectE -__ZN3JSCL30comparePropertyMapEntryIndicesEPKvS1_ -__ZN3JSC17BytecodeGenerator8generateEv -__ZN3JSC11ProgramNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE -__ZN3JSC17BytecodeGenerator13emitDebugHookENS_11DebugHookIDEii -__ZN3JSC17BytecodeGenerator12newTemporaryEv -__ZN3WTF15SegmentedVectorIN3JSC10RegisterIDELm32EE6appendImEEvRKT_ -__ZN3JSC17BytecodeGenerator8emitLoadEPNS_10RegisterIDENS_7JSValueE -__ZN3JSC17BytecodeGenerator8emitNodeEPNS_10RegisterIDEPNS_4NodeE -__ZN3WTF6VectorIN3JSC8LineInfoELm0EE14expandCapacityEm -__ZN3JSC12FuncDeclNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE -__ZN3JSC6IfNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE -__ZN3JSC17BytecodeGenerator8newLabelEv -__ZN3WTF15SegmentedVectorIN3JSC5LabelELm32EE6appendIPNS1_9CodeBlockEEEvRKT_ -__ZNK3JSC13LogicalOpNode26hasConditionContextCodegenEv -__ZN3JSC17BytecodeGenerator26emitNodeInConditionContextEPNS_14ExpressionNodeEPNS_5LabelES4_b -__ZN3JSC13LogicalOpNode30emitBytecodeInConditionContextERNS_17BytecodeGeneratorEPNS_5LabelES4_b -__ZNK3JSC14ExpressionNode26hasConditionContextCodegenEv -__ZN3JSC12BinaryOpNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE -__ZNK3JSC14ExpressionNode6isNullEv -__ZNK3JSC14ExpressionNode6isPureERNS_17BytecodeGeneratorE -__ZN3JSC15DotAccessorNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE -__ZN3JSC11ResolveNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE -__ZN3JSC17BytecodeGenerator11registerForERKNS_10IdentifierE -__ZN3JSC17BytecodeGenerator18emitExpressionInfoEjjj -__ZN3WTF6VectorIN3JSC19ExpressionRangeInfoELm0EE14expandCapacityEmPKS2_ -__ZN3JSC17BytecodeGenerator11emitGetByIdEPNS_10RegisterIDES2_RKNS_10IdentifierE -__ZN3WTF6VectorIjLm0EE14expandCapacityEmPKj -__ZN3JSC17BytecodeGenerator11addConstantERKNS_10IdentifierE -__ZN3WTF9HashTableINS_6RefPtrIN3JSC11UStringImplEEESt4pairIS4_iENS_18PairFirstExtractorIS6_EENS2_17IdentifierRepHashENS_14PairHashTraitsINS_10HashTraitsIS4_EENS2_17BytecodeGenerator28IdentifierMapIndexHashTraitsEEESC_E6rehashEi -__ZN3WTF9HashTableINS_6RefPtrIN3JSC11UStringImplEEESt4pairIS4_iENS_18PairFirstExtractorIS6_EENS2_17IdentifierRepHashENS_14PairHashTraitsINS_10HashTraitsIS4_EENS2_17BytecodeGenerator28IdentifierMapIndexHashTraitsEEESC_E3addIPS3_iNS_29RefPtrHashMapRawKeyTranslatorISI_S6_SF_S9_EEEES5_INS_17HashTableIteratorIS4_S6_S8_S9_SF_SC_EEbERKT_RKT0_ -__ZN3JSC9CodeBlock13addIdentifierERKNS_10IdentifierE -__ZN3JSC17BytecodeGenerator12emitBinaryOpENS_8OpcodeIDEPNS_10RegisterIDES3_S3_NS_12OperandTypesE -__ZN3JSC17BytecodeGenerator15emitJumpIfFalseEPNS_10RegisterIDEPNS_5LabelE -__ZNK3JSC14LogicalNotNode26hasConditionContextCodegenEv -__ZN3JSC11UnaryOpNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE -__ZN3JSC19FunctionCallDotNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE -__ZN3JSC17BytecodeGenerator15emitMethodCheckEv -__ZN3JSC17BytecodeGenerator8emitCallEPNS_10RegisterIDES2_S2_PNS_13ArgumentsNodeEjjj -__ZN3JSC17BytecodeGenerator8emitCallENS_8OpcodeIDEPNS_10RegisterIDES3_S3_PNS_13ArgumentsNodeEjjj -__ZN3JSC16ArgumentListNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE -__ZN3JSC10RegExpNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE -__ZN3JSC6RegExp6createEPNS_12JSGlobalDataERKNS_7UStringES5_ -__ZN3JSC6RegExpC2EPNS_12JSGlobalDataERKNS_7UStringES5_ -__ZNK3JSC7UString4findEti -__ZN3JSC17BytecodeGenerator13emitNewRegExpEPNS_10RegisterIDEPNS_6RegExpE -__ZN3JSC9CodeBlock9addRegExpEPNS_6RegExpE -__ZN3JSC17BytecodeGenerator11emitUnaryOpENS_8OpcodeIDEPNS_10RegisterIDES3_ -__ZN3JSC17BytecodeGenerator9emitLabelEPNS_5LabelE -__ZN3JSC9BlockNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE -__ZN3JSC17ExprStatementNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE -__ZN3JSC17BytecodeGenerator11emitResolveEPNS_10RegisterIDERKNS_10IdentifierE -__ZN3JSC17BytecodeGenerator18findScopedPropertyERKNS_10IdentifierERiRmbRPNS_8JSObjectE -__ZN3JSC13AssignDotNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE -__ZN3JSC12FuncExprNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE -__ZN3JSC17BytecodeGenerator25emitNewFunctionExpressionEPNS_10RegisterIDEPNS_12FuncExprNodeE -__ZN3JSC9CodeBlock15addFunctionExprEN3WTF17NonNullPassRefPtrINS_18FunctionExecutableEEE -__ZN3JSC17BytecodeGenerator11emitPutByIdEPNS_10RegisterIDERKNS_10IdentifierES2_ -__ZN3JSC17AssignResolveNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE -__ZN3JSC17BytecodeGenerator15emitResolveBaseEPNS_10RegisterIDERKNS_10IdentifierE -__ZN3JSC16VarStatementNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE -__ZN3JSC17BytecodeGenerator15isLocalConstantERKNS_10IdentifierE -__ZN3JSC13LogicalOpNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE -__ZN3WTF15SegmentedVectorIN3JSC5LabelELm32EE10removeLastEv -__ZN3JSC17BytecodeGenerator14emitJumpIfTrueEPNS_10RegisterIDEPNS_5LabelE -__ZN3JSC17ObjectLiteralNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE -__ZN3JSC17BytecodeGenerator13emitNewObjectEPNS_10RegisterIDE -__ZNK3JSC10StringNode6isPureERNS_17BytecodeGeneratorE -__ZN3JSC10StringNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE -__ZN3JSC17BytecodeGenerator8emitLoadEPNS_10RegisterIDERKNS_10IdentifierE -__ZN3WTF9HashTableIPN3JSC11UStringImplESt4pairIS3_PNS1_8JSStringEENS_18PairFirstExtractorIS7_EENS1_17IdentifierRepHashENS_14PairHashTraitsINS_10HashTraitsIS3_EENSC_IS6_EEEESD_E6rehashEi -__ZN3WTF9HashTableIPN3JSC11UStringImplESt4pairIS3_PNS1_8JSStringEENS_18PairFirstExtractorIS7_EENS1_17IdentifierRepHashENS_14PairHashTraitsINS_10HashTraitsIS3_EENSC_IS6_EEEESD_E3addIS3_S6_NS_17HashMapTranslatorIS7_SF_SA_EEEES4_INS_17HashTableIteratorIS3_S7_S9_SA_SF_SD_EEbERKT_RKT0_ -__ZN3JSC13jsOwnedStringEPNS_12JSGlobalDataERKNS_7UStringE -__ZN3JSC21FunctionCallValueNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE -__ZN3JSC16PropertyListNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE -__ZL14compileBracketiPiPPhPPKtS3_P9ErrorCodeiS_S_R11CompileData -__ZNK3JSC11BooleanNode6isPureERNS_17BytecodeGeneratorE -__ZN3JSC11BooleanNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE -__ZN3JSC17BytecodeGenerator8emitLoadEPNS_10RegisterIDEb -__ZL33bracketFindFirstAssertedCharacterPKhb -__ZL32branchFindFirstAssertedCharacterPKhb -__ZL20branchNeedsLineStartPKhjj -__ZNK3JSC11ResolveNode6isPureERNS_17BytecodeGeneratorE -__ZN3JSC17BytecodeGenerator7isLocalERKNS_10IdentifierE -__ZN3JSC10NumberNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE -__ZN3JSC17BytecodeGenerator8emitLoadEPNS_10RegisterIDEd -__ZN3JSC9ArrayNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE -__ZN3JSC17BytecodeGenerator12emitNewArrayEPNS_10RegisterIDEPNS_11ElementNodeE -__ZN3WTF9HashTableIxSt4pairIxjENS_18PairFirstExtractorIS2_EENS_7IntHashIxEENS_14PairHashTraitsIN3JSC24EncodedJSValueHashTraitsENS_10HashTraitsIjEEEES9_E4findIxNS_22IdentityHashTranslatorIxS2_S6_EEEENS_17HashTableIteratorIxS2_S4_S6_SC_S9_EERKT_ -__ZN3WTF9HashTableIxSt4pairIxjENS_18PairFirstExtractorIS2_EENS_7IntHashIxEENS_14PairHashTraitsIN3JSC24EncodedJSValueHashTraitsENS_10HashTraitsIjEEEES9_E6rehashEi -__ZN3WTF9HashTableIxSt4pairIxjENS_18PairFirstExtractorIS2_EENS_7IntHashIxEENS_14PairHashTraitsIN3JSC24EncodedJSValueHashTraitsENS_10HashTraitsIjEEEES9_E3addIxjNS_17HashMapTranslatorIS2_SC_S6_EEEES1_INS_17HashTableIteratorIxS2_S4_S6_SC_S9_EEbERKT_RKT0_ -__ZN3JSC8ThisNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE -__ZNK3JSC10NumberNode6isPureERNS_17BytecodeGeneratorE -__ZN3JSC10IfElseNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE -__ZN3JSC17BytecodeGenerator8emitJumpEPNS_5LabelE -__ZN3JSC23FunctionCallResolveNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE -__ZNK3JSC14ExpressionNode5isAddEv -__ZN3JSC21ThrowableBinaryOpNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE -__ZN3JSC15StrictEqualNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE -__ZN3JSC17BytecodeGenerator14emitEqualityOpENS_8OpcodeIDEPNS_10RegisterIDES3_S3_ -__ZN3JSC11NewExprNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE -__ZN3JSC17BytecodeGenerator13emitConstructEPNS_10RegisterIDES2_PNS_13ArgumentsNodeEjjj -__ZN3WTF6VectorIN3JSC20GetByIdExceptionInfoELm0EE14expandCapacityEmPKS2_ -__ZN3JSC17BytecodeGenerator16emitUnaryNoDstOpENS_8OpcodeIDEPNS_10RegisterIDE -__ZN3JSC12JSGlobalData22numericCompareFunctionEPNS_9ExecStateE -__ZNK3JSC21UStringSourceProvider6lengthEv -__ZN3JSC18FunctionExecutable14fromGlobalCodeERKNS_10IdentifierEPNS_9ExecStateEPNS_8DebuggerERKNS_10SourceCodeEPiPNS_7UStringE -__ZNK3JSC21UStringSourceProvider4dataEv -__ZNK3JSC9ScopeNode15singleStatementEv -__ZNK3JSC17ExprStatementNode15isExprStatementEv -__ZNK3JSC12FuncExprNode14isFuncExprNodeEv -__ZThn12_N3JSC11ProgramNodeD0Ev -__ZN3JSC9ScopeNodeD2Ev -__ZN3JSC11ParserArenaD1Ev -__ZN3JSC14SourceElementsD1Ev -__ZThn12_N3JSC16FunctionBodyNodeD0Ev -__ZN3WTF10RefCountedIN3JSC18FunctionParametersEE5derefEv -__ZN3WTF15SegmentedVectorIN3JSC10IdentifierELm64EED1Ev -__ZN3JSC18FunctionExecutable7compileEPNS_9ExecStateEPNS_14ScopeChainNodeE -__ZN3JSC6Parser5parseINS_16FunctionBodyNodeEEEN3WTF10PassRefPtrIT_EEPNS_12JSGlobalDataEPNS_8DebuggerEPNS_9ExecStateERKNS_10SourceCodeEPiPNS_7UStringE -__ZL11makeSubNodePN3JSC12JSGlobalDataEPNS_14ExpressionNodeES3_b -__ZN3JSC14ExpressionNode14stripUnaryPlusEv -__ZN3JSC16FunctionBodyNode6createEPNS_12JSGlobalDataEPNS_14SourceElementsEPN3WTF6VectorISt4pairIPKNS_10IdentifierEjELm0EEEPNS6_IPS0_Lm0EEERKNS_10SourceCodeEji -__ZN3JSC16FunctionBodyNode13finishParsingEN3WTF10PassRefPtrINS_18FunctionParametersEEERKNS_10IdentifierE -__ZN3JSC17BytecodeGeneratorC1EPNS_16FunctionBodyNodeEPKNS_8DebuggerERKNS_10ScopeChainEPN3WTF7HashMapINS9_6RefPtrINS_11UStringImplEEENS_16SymbolTableEntryENS_17IdentifierRepHashENS9_10HashTraitsISD_EENS_26SymbolTableIndexHashTraitsEEEPNS_9CodeBlockE -__ZN3JSC17BytecodeGeneratorC2EPNS_16FunctionBodyNodeEPKNS_8DebuggerERKNS_10ScopeChainEPN3WTF7HashMapINS9_6RefPtrINS_11UStringImplEEENS_16SymbolTableEntryENS_17IdentifierRepHashENS9_10HashTraitsISD_EENS_26SymbolTableIndexHashTraitsEEEPNS_9CodeBlockE -__ZN3JSC17BytecodeGenerator12addParameterERKNS_10IdentifierE -__ZN3JSC16FunctionBodyNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE -__ZN3JSC10ReturnNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE -__ZN3JSC17BytecodeGenerator10emitReturnEPNS_10RegisterIDE -__ZNK3JSC9BlockNode7isBlockEv -__ZNK3JSC10ReturnNode12isReturnNodeEv -__ZN3WTF6OwnPtrIN3JSC13ExceptionInfoEE5clearEv -__ZN3JSC9CodeBlock11shrinkToFitEv -__ZN3WTF6VectorIN3JSC10IdentifierELm0EE14shrinkCapacityEm -__ZN3WTF6VectorINS_6RefPtrIN3JSC18FunctionExecutableEEELm0EE14shrinkCapacityEm -__ZN3JSC17BytecodeGeneratorD2Ev -__ZN3WTF15SegmentedVectorIN3JSC10LabelScopeELm8EED1Ev -__ZN3WTF15SegmentedVectorIN3JSC10LabelScopeELm8EE17deleteAllSegmentsEv -__ZN3WTF15SegmentedVectorIN3JSC5LabelELm32EED1Ev -__ZN3WTF15SegmentedVectorIN3JSC5LabelELm32EE17deleteAllSegmentsEv -__ZN3WTF15SegmentedVectorIN3JSC10RegisterIDELm32EED1Ev -__ZN3WTF6VectorIN3JSC11InstructionELm0EEaSERKS3_ -__ZN3JSC18FunctionExecutableD0Ev -__ZN3JSC17FunctionCodeBlockD0Ev -__ZN3JSC9CodeBlockD2Ev -__ZN3WTF6OwnPtrIN3JSC13ExceptionInfoEED1Ev -__ZN3JSC11UStringImplD1Ev -__ZN3JSC11UStringImplD2Ev -__ZN3JSC10Identifier6removeEPNS_11UStringImplE -__ZN3JSC22currentIdentifierTableEv -__ZN3JSC21UStringSourceProviderD0Ev -__ZN3WTF6VectorINS_6RefPtrIN3JSC6RegExpEEELm0EE14shrinkCapacityEm -__ZN3WTF6VectorIN3JSC15SimpleJumpTableELm0EE14shrinkCapacityEm -__ZN3WTF6VectorIN3JSC15StringJumpTableELm0EE14shrinkCapacityEm -__ZN3JSC15ParserArenaDataIN3WTF6VectorIPNS_16FunctionBodyNodeELm0EEEED1Ev -__ZN3JSC15ParserArenaDataIN3WTF6VectorISt4pairIPKNS_10IdentifierEjELm0EEEED1Ev -__ZN3WTF25TCMalloc_Central_FreeList11ShrinkCacheEib -__ZNK3JSC8JSObject8toObjectEPNS_9ExecStateE -__ZN3JSC11Interpreter7executeEPNS_17ProgramExecutableEPNS_9ExecStateEPNS_14ScopeChainNodeEPNS_8JSObjectEPNS_7JSValueE -__ZN3JSC12JSGlobalData14resetDateCacheEv -__ZN3JSC14JSGlobalObject13copyGlobalsToERNS_12RegisterFileE -__ZN3JSC18FunctionExecutable4makeEPNS_9ExecStateEPNS_14ScopeChainNodeE -__ZN3JSC10JSFunctionC1EPNS_9ExecStateEN3WTF17NonNullPassRefPtrINS_18FunctionExecutableEEEPNS_14ScopeChainNodeE -__ZN3JSC12SmallStrings27createSingleCharacterStringEPNS_12JSGlobalDataEh -__ZNK3JSC7JSValue3getEPNS_9ExecStateERKNS_10IdentifierERNS_12PropertySlotE -__ZN3JSC11Interpreter15tryCacheGetByIDEPNS_9ExecStateEPNS_9CodeBlockEPNS_11InstructionENS_7JSValueERKNS_10IdentifierERKNS_12PropertySlotE -__ZN3JSC7JSValue13equalSlowCaseEPNS_9ExecStateES0_S0_ -__ZN3JSC10JSFunction18getOwnPropertySlotEPNS_9ExecStateERKNS_10IdentifierERNS_12PropertySlotE -__ZN3JSC9Structure13hasTransitionEPNS_11UStringImplEj -__ZN3JSC11Interpreter15tryCachePutByIDEPNS_9ExecStateEPNS_9CodeBlockEPNS_11InstructionENS_7JSValueERKNS_15PutPropertySlotE -__ZN3JSC24StructureTransitionTable21reifySingleTransitionEv -__ZN3WTF9HashTableISt4pairINS_6RefPtrIN3JSC11UStringImplEEEjES1_IS6_S1_IPNS3_9StructureES8_EENS_18PairFirstExtractorISA_EENS3_28StructureTransitionTableHashENS_14PairHashTraitsINS3_34StructureTransitionTableHashTraitsENS_10HashTraitsIS9_EEEESF_E4findIS6_NS_22IdentityHashTranslatorIS6_SA_SD_EEEENS_17HashTableIteratorIS6_SA_SC_SD_SI_SF_EERKT_ -__ZN3WTF9HashTableISt4pairINS_6RefPtrIN3JSC11UStringImplEEEjES1_IS6_S1_IPNS3_9StructureES8_EENS_18PairFirstExtractorISA_EENS3_28StructureTransitionTableHashENS_14PairHashTraitsINS3_34StructureTransitionTableHashTraitsENS_10HashTraitsIS9_EEEESF_E6rehashEi -__ZN3WTF9HashTableISt4pairINS_6RefPtrIN3JSC11UStringImplEEEjES1_IS6_S1_IPNS3_9StructureES8_EENS_18PairFirstExtractorISA_EENS3_28StructureTransitionTableHashENS_14PairHashTraitsINS3_34StructureTransitionTableHashTraitsENS_10HashTraitsIS9_EEEESF_E3addIS6_S9_NS_17HashMapTranslatorISA_SI_SD_EEEES1_INS_17HashTableIteratorIS6_SA_SC_SD_SI_SF_EEbERKT_RKT0_ -__ZN3JSC10JSFunction11getCallDataERNS_8CallDataE -__ZL15makePostfixNodePN3JSC12JSGlobalDataEPNS_14ExpressionNodeENS_8OperatorEiii -__ZNK3JSC10NumberNode8isNumberEv -__ZN3JSC17BytecodeGenerator6addVarERKNS_10IdentifierEbRPNS_10RegisterIDE -__ZNK3JSC16JSVariableObject16isVariableObjectEv -__ZN3JSC17BytecodeGenerator16emitGetScopedVarEPNS_10RegisterIDEmiNS_7JSValueE -__ZN3JSC7ForNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE -__ZN3JSC17BytecodeGenerator13newLabelScopeENS_10LabelScope4TypeEPKNS_10IdentifierE -__ZN3WTF15SegmentedVectorIN3JSC10LabelScopeELm8EE6appendIS2_EEvRKT_ -__ZN3JSC15ConditionalNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE -__ZNK3JSC14JSGlobalObject14isDynamicScopeEv -__ZN3JSC9BreakNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE -__ZN3JSC17BytecodeGenerator11breakTargetERKNS_10IdentifierE -__ZN3JSC17BytecodeGenerator14emitJumpScopesEPNS_5LabelEi -__ZN3JSC18PostfixResolveNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE -__ZN3JSC17BytecodeGenerator10emitPreIncEPNS_10RegisterIDE -__ZN3JSC19BracketAccessorNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE -__ZN3JSC17BytecodeGenerator12emitGetByValEPNS_10RegisterIDES2_S2_ -__ZN3JSC23setUpStaticFunctionSlotEPNS_9ExecStateEPKNS_9HashEntryEPNS_8JSObjectERKNS_10IdentifierERNS_12PropertySlotE -__ZN3JSC17PrototypeFunction11getCallDataERNS_8CallDataE -__ZNK3JSC7JSValue3getEPNS_9ExecStateEjRNS_12PropertySlotE -__ZNK3JSC12PropertySlot8getValueEPNS_9ExecStateEj -__ZN3JSC7UString4fromEj -__ZNK3JSC8JSObject9toBooleanEPNS_9ExecStateE -__ZNK3JSC8JSString9toBooleanEPNS_9ExecStateE -__ZN3JSC12RegExpObjectC1EN3WTF17NonNullPassRefPtrINS_9StructureEEENS2_INS_6RegExpEEE -__ZN3JSC12RegExpObject18getOwnPropertySlotEPNS_9ExecStateERKNS_10IdentifierERNS_12PropertySlotE -__ZN3JSC18getStaticValueSlotINS_12RegExpObjectENS_8JSObjectEEEbPNS_9ExecStateEPKNS_9HashTableEPT_RKNS_10IdentifierERNS_12PropertySlotE -__ZN3JSCL19regExpProtoFuncTestEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZNK3JSC12RegExpObject9classInfoEv -__ZN3JSC12RegExpObject4testEPNS_9ExecStateERKNS_7ArgListE -__ZN3JSC12RegExpObject5matchEPNS_9ExecStateERKNS_7ArgListE -__ZNK3JSC7JSValue8toStringEPNS_9ExecStateE -__ZN3JSC17RegExpConstructor12performMatchEPNS_6RegExpERKNS_7UStringEiRiS6_PPi -__ZN3JSC6RegExp5matchERKNS_7UStringEiPN3WTF6VectorIiLm32EEE -__ZN3JSC11Interpreter13resolveGlobalEPNS_9ExecStateEPNS_11InstructionERNS_7JSValueE -__ZN3JSC17RegExpConstructor18getOwnPropertySlotEPNS_9ExecStateERKNS_10IdentifierERNS_12PropertySlotE -__ZN3JSC18getStaticValueSlotINS_17RegExpConstructorENS_16InternalFunctionEEEbPNS_9ExecStateEPKNS_9HashTableEPT_RKNS_10IdentifierERNS_12PropertySlotE -__ZN3JSCL24regExpConstructorDollar1EPNS_9ExecStateERKNS_10IdentifierERKNS_12PropertySlotE -__ZN3JSC11jsSubstringEPNS_12JSGlobalDataERKNS_7UStringEjj -__ZN3JSC8JSString18getOwnPropertySlotEPNS_9ExecStateERKNS_10IdentifierERNS_12PropertySlotE -__ZN3JSC15StringPrototype18getOwnPropertySlotEPNS_9ExecStateERKNS_10IdentifierERNS_12PropertySlotE -__ZN3JSC12StringObject18getOwnPropertySlotEPNS_9ExecStateERKNS_10IdentifierERNS_12PropertySlotE -__ZN3JSCL22stringProtoFuncIndexOfEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZNK3JSC8JSString12toThisStringEPNS_9ExecStateE -__ZNK3JSC7UString4findERKS0_i -__ZN3JSC7JSValue11strictEqualEPNS_9ExecStateES0_S0_ -__ZNK3JSC18EmptyStatementNode16isEmptyStatementEv -__ZN3WTF9HashTableINS_6RefPtrIN3JSC11UStringImplEEES4_NS_17IdentityExtractorIS4_EENS2_17IdentifierRepHashENS_10HashTraitsIS4_EES9_E6rehashEi -__ZN3WTF9HashTableINS_6RefPtrIN3JSC11UStringImplEEES4_NS_17IdentityExtractorIS4_EENS2_17IdentifierRepHashENS_10HashTraitsIS4_EES9_E3addIS4_S4_NS_22IdentityHashTranslatorIS4_S4_S7_EEEESt4pairINS_17HashTableIteratorIS4_S4_S6_S7_S9_S9_EEbERKT_RKT0_ -__ZNK3JSC13StatementNode12isReturnNodeEv -__ZN3JSC12JSActivationC1EPNS_9ExecStateEN3WTF17NonNullPassRefPtrINS_18FunctionExecutableEEE -__ZNK3JSC8JSObject12toThisObjectEPNS_9ExecStateE -__ZN3JSC12JSActivation13copyRegistersEPNS_9ArgumentsE -__ZN3JSC9EqualNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE -__ZN3JSC23CallFunctionCallDotNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE -__ZN3JSC17BytecodeGenerator25emitJumpIfNotFunctionCallEPNS_10RegisterIDEPNS_5LabelE -__ZN3JSC19ReverseBinaryOpNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE -__ZN3JSC23objectProtoFuncToStringEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZNK3JSC7JSValue20toThisObjectSlowCaseEPNS_9ExecStateE -__ZNK3JSC8JSObject9classNameEv -__ZN3JSC10makeStringIPKcNS_7UStringES2_EES3_T_T0_T1_ -__ZN3JSC18jsNontrivialStringEPNS_12JSGlobalDataERKNS_7UStringE -__ZN3JSC15TypeOfValueNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE -__ZN3JSC8NullNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE -__ZN3JSC20jsTypeStringForValueEPNS_9ExecStateENS_7JSValueE -__ZN3JSC6JSCell11getCallDataERNS_8CallDataE -__ZNK3JSC19BracketAccessorNode10isLocationEv -__ZNK3JSC19BracketAccessorNode21isBracketAccessorNodeEv -__ZN3JSC9ForInNodeC2EPNS_12JSGlobalDataERKNS_10IdentifierEPNS_14ExpressionNodeES7_PNS_13StatementNodeEiii -__ZN3JSC20ParserArenaDeletablenwEmPNS_12JSGlobalDataE -__ZN3JSC9ForInNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE -__ZN3JSC17BytecodeGenerator20emitGetPropertyNamesEPNS_10RegisterIDES2_S2_S2_PNS_5LabelE -__ZN3JSC17BytecodeGenerator18pushOptimisedForInEPNS_10RegisterIDES2_S2_S2_ -__ZN3WTF6VectorIN3JSC12ForInContextELm0EE14expandCapacityEmPKS2_ -__ZN3WTF11VectorMoverILb0EN3JSC12ForInContextEE4moveEPKS2_S5_PS2_ -__ZN3JSC17AssignBracketNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE -__ZN3JSC17BytecodeGenerator12emitPutByValEPNS_10RegisterIDES2_S2_ -__ZN3JSC17BytecodeGenerator20emitNextPropertyNameEPNS_10RegisterIDES2_S2_S2_S2_PNS_5LabelE -__ZN3JSC22JSPropertyNameIterator6createEPNS_9ExecStateEPNS_8JSObjectE -__ZN3JSC8JSObject16getPropertyNamesEPNS_9ExecStateERNS_17PropertyNameArrayENS_15EnumerationModeE -__ZN3JSC8JSObject19getOwnPropertyNamesEPNS_9ExecStateERNS_17PropertyNameArrayENS_15EnumerationModeE -__ZN3JSC9Structure16getPropertyNamesERNS_17PropertyNameArrayENS_15EnumerationModeE -__ZN3JSC17PropertyNameArray14addKnownUniqueEPNS_11UStringImplE -__ZNK3JSC6JSCell9classInfoEv -__ZNK3JSC9Structure14prototypeChainEPNS_9ExecStateE -__ZN3JSC14StructureChainC1EPNS_9StructureE -__ZN3JSC14StructureChainC2EPNS_9StructureE -__ZN3WTF10RefCountedIN3JSC21PropertyNameArrayDataEE5derefEv -__ZN3JSC22JSPropertyNameIterator3getEPNS_9ExecStateEPNS_8JSObjectEm -__ZN3JSC9Structure27despecifyFunctionTransitionEPS0_RKNS_10IdentifierE -__ZN3JSC9Structure17despecifyFunctionERKNS_10IdentifierE -__ZN3JSC14ArrayPrototype18getOwnPropertySlotEPNS_9ExecStateERKNS_10IdentifierERNS_12PropertySlotE -__ZN3JSC7JSArray18getOwnPropertySlotEPNS_9ExecStateERKNS_10IdentifierERNS_12PropertySlotE -__ZN3JSC17RegExpConstructor3putEPNS_9ExecStateERKNS_10IdentifierENS_7JSValueERNS_15PutPropertySlotE -__ZN3JSC9lookupPutINS_17RegExpConstructorEEEbPNS_9ExecStateERKNS_10IdentifierENS_7JSValueEPKNS_9HashTableEPT_ -__ZNK3JSC14ExpressionNode11isCommaNodeEv -__ZN3JSC9CommaNodeC1EPNS_12JSGlobalDataEPNS_14ExpressionNodeES4_ -__ZN3JSC9CommaNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE -__ZNK3JSC12JSActivation14isDynamicScopeEv -__ZN3JSC9CommaNodeD1Ev -__ZN3JSC9ArgumentsC2EPNS_9ExecStateE -__ZN3JSC17BytecodeGenerator19emitResolveWithBaseEPNS_10RegisterIDES2_RKNS_10IdentifierE -__ZN3JSC9WhileNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE -__ZN3JSC17BytecodeGenerator11emitPostDecEPNS_10RegisterIDES2_ -__ZN3JSC17ObjectConstructor11getCallDataERNS_8CallDataE -__ZN3JSCL21callObjectConstructorEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSCL19isInvalidParamForInEPNS_9ExecStateEPNS_9CodeBlockEPKNS_11InstructionENS_7JSValueERS7_ -__ZN3JSC9Arguments18getOwnPropertySlotEPNS_9ExecStateERKNS_10IdentifierERNS_12PropertySlotE -__ZN3JSC16ArrayConstructor16getConstructDataERNS_13ConstructDataE -__ZN3JSCL29constructWithArrayConstructorEPNS_9ExecStateEPNS_8JSObjectERKNS_7ArgListE -__ZN3JSCL27constructArrayWithSizeQuirkEPNS_9ExecStateERKNS_7ArgListE -__ZN3JSC7JSArrayC1EN3WTF17NonNullPassRefPtrINS_9StructureEEEj -__ZN3JSC9Arguments18getOwnPropertySlotEPNS_9ExecStateEjRNS_12PropertySlotE -__ZN3JSC17TypeOfResolveNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE -__ZN3JSCeqERKNS_7UStringEPKc -__ZN3JSC16jsIsFunctionTypeENS_7JSValueE -__ZN3JSC10JSFunction3putEPNS_9ExecStateERKNS_10IdentifierENS_7JSValueERNS_15PutPropertySlotE -__ZN3JSC9Structure22materializePropertyMapEv -__ZN3JSC7JSArrayC1EN3WTF17NonNullPassRefPtrINS_9StructureEEERKNS_7ArgListE -__ZN3JSCL18arrayProtoFuncPushEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSC7JSArray4pushEPNS_9ExecStateENS_7JSValueE -__ZN3JSC7JSArray20increaseVectorLengthEj -__ZN3WTF14tryFastReallocEPvm -__ZN3WTF11fastReallocILb0EEEPvS1_m -__ZNK3JSC9CodeBlock13refStructuresEPNS_11InstructionE -__ZN3WTF6VectorIN3JSC10IdentifierELm20EE15reserveCapacityEm -__ZN3JSC12StringObject3putEPNS_9ExecStateERKNS_10IdentifierENS_7JSValueERNS_15PutPropertySlotE -__ZN3JSC11Interpreter14uncacheGetByIDEPNS_9CodeBlockEPNS_11InstructionE -__ZNK3JSC9CodeBlock15derefStructuresEPNS_11InstructionE -__ZNK3JSC9CommaNode11isCommaNodeEv -__ZN3JSC9CommaNode6appendEPNS_14ExpressionNodeE -__ZN3JSC7JSArray3putEPNS_9ExecStateERKNS_10IdentifierENS_7JSValueERNS_15PutPropertySlotE -__ZN3JSCL20arrayProtoFuncConcatEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZNK3JSC7JSArray9classInfoEv -__ZNK3JSC9Arguments9classInfoEv -__ZN3JSC7JSArray3putEPNS_9ExecStateEjNS_7JSValueE -__ZN3JSC7JSArray11putSlowCaseEPNS_9ExecStateEjNS_7JSValueE -__ZN3JSC7JSArray9setLengthEj -__ZN3JSC17NumberConstructor18getOwnPropertySlotEPNS_9ExecStateERKNS_10IdentifierERNS_12PropertySlotE -__ZN3JSC18getStaticValueSlotINS_17NumberConstructorENS_16InternalFunctionEEEbPNS_9ExecStateEPKNS_9HashTableEPT_RKNS_10IdentifierERNS_12PropertySlotE -__ZN3JSC7TryNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE -__ZN3JSC17BytecodeGenerator9emitCatchEPNS_10RegisterIDEPNS_5LabelES4_ -__ZN3JSC9CodeBlock19addExceptionHandlerERKNS_11HandlerInfoE -__ZN3WTF6VectorIN3JSC11HandlerInfoELm0EE14expandCapacityEmPKS2_ -__ZN3JSC17BytecodeGenerator16emitPushNewScopeEPNS_10RegisterIDERKNS_10IdentifierES2_ -__ZN3WTF6VectorIN3JSC18ControlFlowContextELm0EE14expandCapacityEmPKS2_ -__ZN3JSC9ThrowNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE -__ZN3JSC17BytecodeGenerator12emitPopScopeEv -__ZN3JSCL21arrayProtoFuncForEachEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZNK3JSC8JSObject3getEPNS_9ExecStateERKNS_10IdentifierE -__ZN3JSC11Interpreter20prepareForRepeatCallEPNS_18FunctionExecutableEPNS_9ExecStateEPNS_10JSFunctionEiPNS_14ScopeChainNodeEPNS_7JSValueE -__ZN3JSC17BytecodeGenerator11emitPostIncEPNS_10RegisterIDES2_ -__ZN3JSC17BytecodeGenerator16emitPutScopedVarEmiPNS_10RegisterIDENS_7JSValueE -__ZN3JSC11Interpreter13endRepeatCallERNS_16CallFrameClosureE -__ZN3JSCL19arrayProtoFuncShiftEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSC7JSArray18getOwnPropertySlotEPNS_9ExecStateEjRNS_12PropertySlotE -__ZN3JSC7JSArray14deletePropertyEPNS_9ExecStateEj -__ZN3JSC10JSFunction16getConstructDataERNS_13ConstructDataE -__ZN3JSCL25functionProtoFuncToStringEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZNK3JSC10JSFunction9classInfoEv -__ZNK3JSC7UStringixEi -__ZNK3JSC18FunctionExecutable11paramStringEv -__ZN3WTF6VectorItLm64EE6appendIcEEvPKT_m -__ZN3JSC13StringBuilder7releaseEv -__ZN3JSC10makeStringIPKcNS_7UStringES2_S3_S2_S3_EES3_T_T0_T1_T2_T3_T4_ -__ZN3JSCL20stringProtoFuncMatchEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZNK3JSC17RegExpConstructor14arrayOfMatchesEPNS_9ExecStateE -__ZN3JSC18RegExpMatchesArrayC2EPNS_9ExecStateEPNS_24RegExpConstructorPrivateE -__ZN3JSC7JSArrayC2EN3WTF17NonNullPassRefPtrINS_9StructureEEEj -__ZN3JSC7JSArray19setLazyCreationDataEPv -__ZN3JSC18RegExpMatchesArray18getOwnPropertySlotEPNS_9ExecStateEjRNS_12PropertySlotE -__ZN3JSC7JSArray16lazyCreationDataEv -__ZN3JSC18RegExpMatchesArray17fillArrayInstanceEPNS_9ExecStateE -__ZN3JSC24RegExpConstructorPrivateD1Ev -__ZN3JSCL22stringProtoFuncReplaceEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSC8JSString14toThisJSStringEPNS_9ExecStateE -__ZNK3JSC7UString30spliceSubstringsWithSeparatorsEPKNS0_5RangeEiPKS0_i -__ZN3JSCL20stringProtoFuncSplitEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSCL19arrayProtoFuncSliceEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZNK3JSC7JSValue9toIntegerEPNS_9ExecStateE -__ZN3JSC4Heap15recordExtraCostEm -__ZNK3JSC8JSObject3getEPNS_9ExecStateEj -__ZN3JSC15ObjectPrototype18getOwnPropertySlotEPNS_9ExecStateEjRNS_12PropertySlotE -__ZN3JSC4Heap9markRootsEv -__ZN3JSC4Heap30markStackObjectsConservativelyERNS_9MarkStackE -__ZN3JSC4Heap31markCurrentThreadConservativelyERNS_9MarkStackE -__ZN3JSC4Heap39markCurrentThreadConservativelyInternalERNS_9MarkStackE -__ZN3JSC4Heap18markConservativelyERNS_9MarkStackEPvS3_ -__ZN3JSC9MarkStack5drainEv -__ZN3JSC9MarkStack12markChildrenEPNS_6JSCellE -__ZN3JSC8JSObject12markChildrenERNS_9MarkStackE -__ZN3JSC14JSGlobalObject12markChildrenERNS_9MarkStackE -__ZN3JSC9CodeBlock13markAggregateERNS_9MarkStackE -__ZN3JSC18FunctionExecutable13markAggregateERNS_9MarkStackE -__ZN3JSC10JSFunction12markChildrenERNS_9MarkStackE -__ZN3JSC7JSArray12markChildrenERNS_9MarkStackE -__ZN3JSC7JSArray18markChildrenDirectERNS_9MarkStackE -__ZN3JSC15JSWrapperObject12markChildrenERNS_9MarkStackE -__ZN3JSC18GlobalEvalFunction12markChildrenERNS_9MarkStackE -__ZN3JSC12JSActivation12markChildrenERNS_9MarkStackE -__ZN3JSC9Arguments12markChildrenERNS_9MarkStackE -__ZN3JSCL12markIfNeededERNS_9MarkStackENS_7JSValueE -__ZN3JSC4Heap20markProtectedObjectsERNS_9MarkStackE -__ZN3JSC12SmallStrings12markChildrenERNS_9MarkStackE -__ZN3JSC9MarkStack7compactEv -__ZN3JSC4Heap12resizeBlocksEv -__ZNK3JSC4Heap11markedCellsEmm -__ZN3JSC17PrototypeFunctionD1Ev -__ZN3JSC12RegExpObjectD1Ev -__ZN3JSC8JSObjectD1Ev -__ZN3JSC22JSPropertyNameIteratorD1Ev -__ZN3WTF10RefCountedIN3JSC14StructureChainEE5derefEv -__ZN3JSC12JSActivationD1Ev -__ZN3JSC12JSActivation16JSActivationDataD1Ev -__ZN3JSC16JSVariableObjectD2Ev -__ZN3JSC23normalizePrototypeChainEPNS_9ExecStateENS_7JSValueES2_RKNS_10IdentifierERm -__ZN3JSC9ArgumentsD1Ev -__ZN3JSC9ArgumentsD2Ev -__ZN3JSC18RegExpMatchesArrayD1Ev -__ZNK3JSC7UString8toUInt32EPbb -__ZNK3JSC7UString8toDoubleEbb -__ZNK3JSC7UString10getCStringERN3WTF6VectorIcLm32EEE -__ZN3JSCL26stringProtoFuncToUpperCaseEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSC17DeleteBracketNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE -__ZN3JSC17BytecodeGenerator15emitDeleteByValEPNS_10RegisterIDES2_S2_ -__ZN3JSC10MathObject18getOwnPropertySlotEPNS_9ExecStateERKNS_10IdentifierERNS_12PropertySlotE -__ZN3JSC21getStaticFunctionSlotINS_8JSObjectEEEbPNS_9ExecStateEPKNS_9HashTableEPS1_RKNS_10IdentifierERNS_12PropertySlotE -__ZN3JSCL19mathProtoFuncRandomEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSC13jsAddSlowCaseEPNS_9ExecStateENS_7JSValueES2_ -__ZNK3JSC8JSString11toPrimitiveEPNS_9ExecStateENS_22PreferredPrimitiveTypeE -__ZN3JSC14NumericStrings3addEd -__ZN3JSC7UString4fromEd -__ZN3WTF32doubleToStringInJavaScriptFormatEdPcPj -__ZN3WTF4dtoaEPcdiPiS1_PS0_ -__ZN3WTFL4multERNS_6BigIntERKS0_ -__ZN3WTF6VectorIjLm16EEaSERKS1_ -__ZN3WTF6BigInt6appendEj -__ZN3JSC7UStringC1EPKci -__ZN3JSCL20stringProtoFuncSliceEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZNK3JSC8JSString11resolveRopeEPNS_9ExecStateE -__ZN3JSC8JSStringC2EPNS_12JSGlobalDataEjPS0_S3_ -__ZN3JSC8JSObject14deletePropertyEPNS_9ExecStateERKNS_10IdentifierE -__ZN3JSC12ContinueNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE -__ZN3JSC17BytecodeGenerator14continueTargetERKNS_10IdentifierE -__ZN3JSC13DeleteDotNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE -__ZN3JSC17BytecodeGenerator14emitDeleteByIdEPNS_10RegisterIDES2_RKNS_10IdentifierE -__ZN3JSC10JSFunction14deletePropertyEPNS_9ExecStateERKNS_10IdentifierE -__ZN3JSC15IdentifierArena21makeNumericIdentifierEPNS_12JSGlobalDataEd -__ZN3JSC11Interpreter7executeERNS_16CallFrameClosureEPNS_7JSValueE -__ZN3JSC9Arguments13copyRegistersEv -__ZN3JSC14PostfixDotNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE -__ZN3JSC8JSObject18getOwnPropertySlotEPNS_9ExecStateEjRNS_12PropertySlotE -__ZN3JSC8JSObject18getOwnPropertySlotEPNS_9ExecStateERKNS_10IdentifierERNS_12PropertySlotE -__ZN3JSC24ApplyFunctionCallDotNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE -__ZNK3JSC14ExpressionNode13isSimpleArrayEv -__ZN3JSC17BytecodeGenerator26emitJumpIfNotFunctionApplyEPNS_10RegisterIDEPNS_5LabelE -__ZN3JSC17BytecodeGenerator22willResolveToArgumentsERKNS_10IdentifierE -__ZN3JSC17BytecodeGenerator29uncheckedRegisterForArgumentsEv -__ZN3JSC17BytecodeGenerator15emitLoadVarargsEPNS_10RegisterIDES2_ -__ZN3JSC17BytecodeGenerator15emitCallVarargsEPNS_10RegisterIDES2_S2_S2_jjj -__ZN3JSC14InstanceOfNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE -__ZN3JSC17BytecodeGenerator14emitInstanceOfEPNS_10RegisterIDES2_S2_S2_ -__ZN3JSCL27isInvalidParamForInstanceOfEPNS_9ExecStateEPNS_9CodeBlockEPKNS_11InstructionENS_7JSValueERS7_ -__ZN3JSC8JSObject11hasInstanceEPNS_9ExecStateENS_7JSValueES3_ -__ZN3JSC8JSObject3putEPNS_9ExecStateEjNS_7JSValueE -__ZN3JSCL21arrayProtoFuncIndexOfEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZNK3JSC8JSString12toThisObjectEPNS_9ExecStateE -__ZN3JSC12StringObjectC1EN3WTF17NonNullPassRefPtrINS_9StructureEEEPNS_8JSStringE -__ZNK3JSC6JSCell12toThisStringEPNS_9ExecStateE -__ZNK3JSC8JSObject8toStringEPNS_9ExecStateE -__ZNK3JSC8JSObject11toPrimitiveEPNS_9ExecStateENS_22PreferredPrimitiveTypeE -__ZNK3JSC8JSObject12defaultValueEPNS_9ExecStateENS_22PreferredPrimitiveTypeE -__ZN3JSC4callEPNS_9ExecStateENS_7JSValueENS_8CallTypeERKNS_8CallDataES2_RKNS_7ArgListE -__ZN3JSCL23stringProtoFuncToStringEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZNK3JSC12StringObject9classInfoEv -__ZN3JSC14TimeoutChecker10didTimeOutEPNS_9ExecStateE -__ZN3JSC16ErrorConstructor16getConstructDataERNS_13ConstructDataE -__ZN3JSCL29constructWithErrorConstructorEPNS_9ExecStateEPNS_8JSObjectERKNS_7ArgListE -__ZN3JSC14constructErrorEPNS_9ExecStateERKNS_7ArgListE -__ZN3JSC13ErrorInstanceC1EN3WTF17NonNullPassRefPtrINS_9StructureEEE -__ZL14makePrefixNodePN3JSC12JSGlobalDataEPNS_14ExpressionNodeENS_8OperatorEiii -__ZNK3JSC7AddNode5isAddEv -__ZN3JSC12BinaryOpNode10emitStrcatERNS_17BytecodeGeneratorEPNS_10RegisterIDES4_PNS_21ReadModifyResolveNodeE -__ZNK3JSC10StringNode8isStringEv -__ZNK3JSC14ExpressionNode8isStringEv -__ZN3JSC17BytecodeGenerator15emitToPrimitiveEPNS_10RegisterIDES2_ -__ZN3JSC17BytecodeGenerator10emitStrcatEPNS_10RegisterIDES2_i -__ZN3JSC13PrefixDotNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE -__ZN3JSC8JSString40appendValueInConstructAndIncrementLengthEPNS_9ExecStateERjNS_7JSValueE -__ZN3JSC17ProgramExecutableD0Ev -__ZN3JSC16ProgramCodeBlockD0Ev -__ZN3JSC15GlobalCodeBlockD2Ev -__ZN3WTF9HashTableIPN3JSC15GlobalCodeBlockES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E4findIS3_NS_22IdentityHashTranslatorIS3_S3_S7_EEEENS_17HashTableIteratorIS3_S3_S5_S7_S9_S9_EERKT_ -__ZN3JSC9CodeBlock8RareDataD2Ev -__ZN3WTF9HashTableINS_6RefPtrIN3JSC11UStringImplEEESt4pairIS4_NS1_INS2_14EvalExecutableEEEENS_18PairFirstExtractorIS8_EENS_7StrHashIS4_EENS_14PairHashTraitsINS_10HashTraitsIS4_EENSE_IS7_EEEESF_E15deallocateTableEPS8_i -__ZN3WTF9HashTableINS_6RefPtrIN3JSC11UStringImplEEESt4pairIS4_NS1_INS2_14EvalExecutableEEEENS_18PairFirstExtractorIS8_EENS_7StrHashIS4_EENS_14PairHashTraitsINS_10HashTraitsIS4_EENSE_IS7_EEEESF_E4findIS4_NS_22IdentityHashTranslatorIS4_S8_SC_EEEENS_17HashTableIteratorIS4_S8_SA_SC_SH_SF_EERKT_ -__ZN3WTF9HashTableINS_6RefPtrIN3JSC11UStringImplEEESt4pairIS4_NS1_INS2_14EvalExecutableEEEENS_18PairFirstExtractorIS8_EENS_7StrHashIS4_EENS_14PairHashTraitsINS_10HashTraitsIS4_EENSE_IS7_EEEESF_E6rehashEi -__ZN3WTF9HashTableINS_6RefPtrIN3JSC11UStringImplEEESt4pairIS4_NS1_INS2_14EvalExecutableEEEENS_18PairFirstExtractorIS8_EENS_7StrHashIS4_EENS_14PairHashTraitsINS_10HashTraitsIS4_EENSE_IS7_EEEESF_E3addIPS3_S7_NS_29RefPtrHashMapRawKeyTranslatorISK_S8_SH_SC_EEEES5_INS_17HashTableIteratorIS4_S8_SA_SC_SH_SF_EEbERKT_RKT0_ -__ZN3WTF6VectorIN3JSC15StringJumpTableELm0EED1Ev -__ZN3JSC6RegExpD1Ev -__Z12jsRegExpFreeP8JSRegExp -__ZN3JSC5Lexer19shiftLineTerminatorEv -__ZNK3JSC8JSString8toNumberEPNS_9ExecStateE -__ZNK3JSC7UString8toDoubleEv -__ZNK3JSC7ArgList8getSliceEiRS0_ -__ZN3JSC17RegExpConstructor16getConstructDataERNS_13ConstructDataE -__ZN3JSCL30constructWithRegExpConstructorEPNS_9ExecStateEPNS_8JSObjectERKNS_7ArgListE -__ZN3JSC15constructRegExpEPNS_9ExecStateERKNS_7ArgListE -__ZN3JSC18globalFuncUnescapeEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3WTF6VectorItLm64EE14expandCapacityEmPKt -__ZN3WTF6VectorIPN3JSC14ExpressionNodeELm8EE14expandCapacityEmPKS3_ -__ZN3JSC10JSFunction4callEPNS_9ExecStateENS_7JSValueERKNS_7ArgListE -__ZN3JSC11Interpreter7executeEPNS_18FunctionExecutableEPNS_9ExecStateEPNS_10JSFunctionEPNS_8JSObjectERKNS_7ArgListEPNS_14ScopeChainNodeEPNS_7JSValueE -__ZL11makeDivNodePN3JSC12JSGlobalDataEPNS_14ExpressionNodeES3_b -__ZNK3JSC8NullNode6isNullEv -__ZN3JSC21ReadModifyResolveNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE -__ZN3JSC15DateConstructor16getConstructDataERNS_13ConstructDataE -__ZN3JSCL28constructWithDateConstructorEPNS_9ExecStateEPNS_8JSObjectERKNS_7ArgListE -__ZN3JSC13constructDateEPNS_9ExecStateERKNS_7ArgListE -__ZN3JSC12DateInstanceC1EPNS_9ExecStateEd -__ZN3WTF8timeClipEd -__ZN3JSC13DatePrototype18getOwnPropertySlotEPNS_9ExecStateERKNS_10IdentifierERNS_12PropertySlotE -__ZN3JSCL19dateProtoFuncGetDayEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZNK3JSC12DateInstance9classInfoEv -__ZNK3JSC12DateInstance26calculateGregorianDateTimeEPNS_9ExecStateE -__ZN3JSC17DateInstanceCache3addEd -__ZN3JSC21msToGregorianDateTimeEPNS_9ExecStateEdbRNS_17GregorianDateTimeE -__ZN3JSC12getUTCOffsetEPNS_9ExecStateE -__ZN3JSCL12getDSTOffsetEPNS_9ExecStateEdd -__ZN3WTFL18calculateDSTOffsetEdd -__ZN3WTF23dayInMonthFromDayInYearEib -__ZN3JSCL21dateProtoFuncGetHoursEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSCL23dateProtoFuncGetMinutesEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSCL30dateProtoFuncGetTimezoneOffsetEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSC14NumericStrings3addEi -__ZN3JSC7UString4fromEi -__ZN3JSCL26stringProtoFuncToLowerCaseEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSC8JSString4Rope20destructNonRecursiveEv -__ZNK3JSC19JSStaticScopeObject14isDynamicScopeEv -__ZN3JSC17ReadModifyDotNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE -__ZN3JSC18BooleanConstructor11getCallDataERNS_8CallDataE -__ZN3JSCL22callBooleanConstructorEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZL17bracketIsAnchoredPKh -__ZN3JSCL18arrayProtoFuncJoinEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3WTF9HashTableIPN3JSC8JSObjectES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E3addIS3_S3_NS_22IdentityHashTranslatorIS3_S3_S7_EEEESt4pairINS_17HashTableIteratorIS3_S3_S5_S7_S9_S9_EEbERKT_RKT0_ -__ZN3WTF9HashTableIPN3JSC8JSObjectES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E6rehashEi -__ZN3WTF6VectorItLm256EE14expandCapacityEmPKt -__ZN3WTF9HashTableIPN3JSC8JSObjectES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E4findIS3_NS_22IdentityHashTranslatorIS3_S3_S7_EEEENS_17HashTableIteratorIS3_S3_S5_S7_S9_S9_EERKT_ -__ZN3JSC19FunctionConstructor16getConstructDataERNS_13ConstructDataE -__ZN3JSCL32constructWithFunctionConstructorEPNS_9ExecStateEPNS_8JSObjectERKNS_7ArgListE -__ZN3JSC17constructFunctionEPNS_9ExecStateERKNS_7ArgListE -__ZN3JSC17constructFunctionEPNS_9ExecStateERKNS_7ArgListERKNS_10IdentifierERKNS_7UStringEi -__ZN3JSC8WithNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE -__ZN3JSC17BytecodeGenerator13emitPushScopeEPNS_10RegisterIDE -__ZN3JSC11Interpreter7resolveEPNS_9ExecStateEPNS_11InstructionERNS_7JSValueE -__ZN3JSC12JSActivation18getOwnPropertySlotEPNS_9ExecStateERKNS_10IdentifierERNS_12PropertySlotE -__ZN3JSC10SwitchNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE -__ZN3JSC13CaseBlockNode20emitBytecodeForBlockERNS_17BytecodeGeneratorEPNS_10RegisterIDES4_ -__ZN3JSC13CaseBlockNode18tryOptimizedSwitchERN3WTF6VectorIPNS_14ExpressionNodeELm8EEERiS7_ -__ZN3JSCL17processClauseListEPNS_14ClauseListNodeERN3WTF6VectorIPNS_14ExpressionNodeELm8EEERNS_10SwitchKindERbRiSB_ -__ZN3JSC17BytecodeGenerator11beginSwitchEPNS_10RegisterIDENS_10SwitchInfo10SwitchTypeE -__ZN3WTF6VectorIN3JSC10SwitchInfoELm0EE14expandCapacityEm -__ZN3WTF6VectorISt4pairIiiELm8EE14expandCapacityEmPKS2_ -__ZN3JSC17BytecodeGenerator9endSwitchEjPN3WTF6RefPtrINS_5LabelEEEPPNS_14ExpressionNodeEPS3_ii -__ZN3JSC9CodeBlock24addStringSwitchJumpTableEv -__ZN3WTF6VectorIN3JSC15StringJumpTableELm0EE14expandCapacityEmPKS2_ -__ZN3WTF11VectorMoverILb0EN3JSC15StringJumpTableEE4moveEPKS2_S5_PS2_ -__ZN3WTF9HashTableINS_6RefPtrIN3JSC11UStringImplEEESt4pairIS4_NS2_14OffsetLocationEENS_18PairFirstExtractorIS7_EENS_7StrHashIS4_EENS_14PairHashTraitsINS_10HashTraitsIS4_EENSD_IS6_EEEESE_E6rehashEi -__ZN3WTF9HashTableINS_6RefPtrIN3JSC11UStringImplEEESt4pairIS4_NS2_14OffsetLocationEENS_18PairFirstExtractorIS7_EENS_7StrHashIS4_EENS_14PairHashTraitsINS_10HashTraitsIS4_EENSD_IS6_EEEESE_E4findIS4_NS_22IdentityHashTranslatorIS4_S7_SB_EEEENS_17HashTableIteratorIS4_S7_S9_SB_SG_SE_EERKT_ -__ZN3WTF9HashTableINS_6RefPtrIN3JSC11UStringImplEEESt4pairIS4_NS2_14OffsetLocationEENS_18PairFirstExtractorIS7_EENS_7StrHashIS4_EENS_14PairHashTraitsINS_10HashTraitsIS4_EENSD_IS6_EEEESE_E3addIS4_S7_NS_22IdentityHashTranslatorIS4_S7_SB_EEEES5_INS_17HashTableIteratorIS4_S7_S9_SB_SG_SE_EEbERKT_RKT0_ -__ZN3WTF9HashTableINS_6RefPtrIN3JSC11UStringImplEEESt4pairIS4_NS2_14OffsetLocationEENS_18PairFirstExtractorIS7_EENS_7StrHashIS4_EENS_14PairHashTraitsINS_10HashTraitsIS4_EENSD_IS6_EEEESE_E3addIPS3_S6_NS_29RefPtrHashMapRawKeyTranslatorISJ_S7_SG_SB_EEEES5_INS_17HashTableIteratorIS4_S7_S9_SB_SG_SE_EEbERKT_RKT0_ -__ZN3JSC15StringJumpTable14offsetForValueEPNS_11UStringImplEi -__ZN3JSC28globalFuncEncodeURIComponentEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSCL6encodeEPNS_9ExecStateERKNS_7ArgListEPKc -__ZNK3JSC7UString10UTF8StringEb -__ZN3WTF7Unicode18convertUTF16ToUTF8EPPKtS2_PPcS4_b -__ZN3JSC7CStringD1Ev -__ZN3JSC11Interpreter22resolveBaseAndPropertyEPNS_9ExecStateEPNS_11InstructionERNS_7JSValueE -__ZN3JSCL24regExpConstructorDollar2EPNS_9ExecStateERKNS_10IdentifierERKNS_12PropertySlotE -__ZN3JSCL24regExpConstructorDollar3EPNS_9ExecStateERKNS_10IdentifierERKNS_12PropertySlotE -__ZN3JSCL24regExpConstructorDollar4EPNS_9ExecStateERKNS_10IdentifierERKNS_12PropertySlotE -__ZNK3JSC11Interpreter18retrieveLastCallerEPNS_9ExecStateERiRlRNS_7UStringERNS_7JSValueE -__ZN3JSC9CodeBlock27lineNumberForBytecodeOffsetEPNS_9ExecStateEj -__ZN3JSC9CodeBlock34reparseForExceptionInfoIfNecessaryEPNS_9ExecStateE -__ZN3JSC18FunctionExecutable20reparseExceptionInfoEPNS_12JSGlobalDataEPNS_14ScopeChainNodeEPNS_9CodeBlockE -__ZN3WTF6OwnPtrIN3JSC13ExceptionInfoEE3setEPS2_ -__ZN3WTF6VectorIPN3JSC14ExpressionNodeELm16EE14expandCapacityEmPKS3_ -__ZN3JSC8jsLessEqEPNS_9ExecStateENS_7JSValueES2_ -__ZN3WTF6VectorIN3JSC8JSString4Rope5FiberELm32EE14expandCapacityEm -__ZL12makeMultNodePN3JSC12JSGlobalDataEPNS_14ExpressionNodeES3_b -__ZN3JSCL17mathProtoFuncCeilEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZNK3JSC7JSValue17toPrimitiveStringEPNS_9ExecStateE -__ZN3JSC20EvalFunctionCallNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE -__ZN3JSC17BytecodeGenerator12emitCallEvalEPNS_10RegisterIDES2_S2_PNS_13ArgumentsNodeEjjj -__ZN3JSC15globalFuncIsNaNEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSC11Interpreter8callEvalEPNS_9ExecStateEPNS_12RegisterFileEPNS_8RegisterEiiRNS_7JSValueE -__ZN3JSC13LiteralParser5Lexer3lexERNS1_18LiteralParserTokenE -__ZN3JSC13LiteralParser5parseENS0_11ParserStateE -__ZN3JSC20MarkedArgumentBufferD1Ev -__ZN3JSC13EvalCodeCache3getEPNS_9ExecStateERKNS_7UStringEPNS_14ScopeChainNodeERNS_7JSValueE -__ZN3JSC14EvalExecutable7compileEPNS_9ExecStateEPNS_14ScopeChainNodeE -__ZN3JSC6Parser5parseINS_8EvalNodeEEEN3WTF10PassRefPtrIT_EEPNS_12JSGlobalDataEPNS_8DebuggerEPNS_9ExecStateERKNS_10SourceCodeEPiPNS_7UStringE -__ZN3JSC8EvalNode6createEPNS_12JSGlobalDataEPNS_14SourceElementsEPN3WTF6VectorISt4pairIPKNS_10IdentifierEjELm0EEEPNS6_IPNS_16FunctionBodyNodeELm0EEERKNS_10SourceCodeEji -__ZNK3JSC10ScopeChain10localDepthEv -__ZN3JSC13EvalCodeBlockC2EPNS_14EvalExecutableEPNS_14JSGlobalObjectEN3WTF10PassRefPtrINS_14SourceProviderEEEi -__ZN3JSC17BytecodeGeneratorC1EPNS_8EvalNodeEPKNS_8DebuggerERKNS_10ScopeChainEPN3WTF7HashMapINS9_6RefPtrINS_11UStringImplEEENS_16SymbolTableEntryENS_17IdentifierRepHashENS9_10HashTraitsISD_EENS_26SymbolTableIndexHashTraitsEEEPNS_13EvalCodeBlockE -__ZN3JSC17BytecodeGeneratorC2EPNS_8EvalNodeEPKNS_8DebuggerERKNS_10ScopeChainEPN3WTF7HashMapINS9_6RefPtrINS_11UStringImplEEENS_16SymbolTableEntryENS_17IdentifierRepHashENS9_10HashTraitsISD_EENS_26SymbolTableIndexHashTraitsEEEPNS_13EvalCodeBlockE -__ZN3JSC8EvalNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE -__ZThn12_N3JSC8EvalNodeD0Ev -__ZN3WTF29RefPtrHashMapRawKeyTranslatorIPN3JSC11UStringImplESt4pairINS_6RefPtrIS2_EENS5_INS1_14EvalExecutableEEEENS_14PairHashTraitsINS_10HashTraitsIS6_EENSB_IS8_EEEENS_7StrHashIS6_EEE9translateERS9_S3_RKS8_ -__ZN3JSC9ExecState9thisValueEv -__ZN3JSC11Interpreter7executeEPNS_14EvalExecutableEPNS_9ExecStateEPNS_8JSObjectEiPNS_14ScopeChainNodeEPNS_7JSValueE -__ZN3JSC11Interpreter11resolveBaseEPNS_9ExecStateEPNS_11InstructionE -__ZN3JSC16globalFuncEscapeEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSCL26stringProtoFuncLastIndexOfEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZNK3JSC7JSValue20toIntegerPreserveNaNEPNS_9ExecStateE -__ZNK3JSC7UString5rfindERKS0_i -__ZN3JSCL24stringProtoFuncSubstringEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSCL21stringProtoFuncSubstrEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSC14EvalExecutableD0Ev -__ZN3JSC13EvalCodeBlockD0Ev -__ZN3WTF21CrossThreadRefCountedINS_16OwnFastMallocPtrItEEE5derefEv -__ZN3JSC10JSONObject18getOwnPropertySlotEPNS_9ExecStateERKNS_10IdentifierERNS_12PropertySlotE -__ZN3JSCL22JSONProtoFuncStringifyEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSC11StringifierC2EPNS_9ExecStateENS_7JSValueES3_ -__ZN3JSCL20unwrapBoxedPrimitiveEPNS_9ExecStateENS_7JSValueE -__ZN3JSC11Stringifier9stringifyENS_7JSValueE -__ZN3JSC11Stringifier22appendStringifiedValueERNS_13StringBuilderENS_7JSValueEPNS_8JSObjectERKNS_27PropertyNameForFunctionCallE -__ZN3JSC11Stringifier6toJSONENS_7JSValueERKNS_27PropertyNameForFunctionCallE -__ZNK3JSC6JSCell9getStringEPNS_9ExecStateERNS_7UStringE -__ZN3JSC11Stringifier6Holder18appendNextPropertyERS0_RNS_13StringBuilderE -__ZN3JSC11Stringifier6indentEv -__ZNK3JSC7UString6substrEii -__ZNK3JSC11Stringifier12startNewLineERNS_13StringBuilderE -__ZN3JSC11Stringifier18appendQuotedStringERNS_13StringBuilderERKNS_7UStringE -__ZN3JSC11Stringifier8unindentEv -__ZN3JSC11StringifierD2Ev -__ZN3JSC19JSStaticScopeObject12markChildrenERNS_9MarkStackE -__ZN3JSC17PrefixResolveNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE -__ZN3JSCL18JSONProtoFuncParseEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSC13LiteralParser5Lexer9lexStringILNS0_10ParserModeE0EEENS0_9TokenTypeERNS1_18LiteralParserTokenE -__ZN3JSC13LiteralParser5Lexer9lexNumberERNS1_18LiteralParserTokenE -__ZN3JSC14LogicalNotNode30emitBytecodeInConditionContextERNS_17BytecodeGeneratorEPNS_5LabelES4_b -__ZN3JSCL18regExpObjectSourceEPNS_9ExecStateERKNS_10IdentifierERKNS_12PropertySlotE -__ZN3JSC18RegExpMatchesArray18getOwnPropertySlotEPNS_9ExecStateERKNS_10IdentifierERNS_12PropertySlotE -__ZN3JSCL19stringProtoFuncTrimEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSCL10trimStringEPNS_9ExecStateENS_7JSValueEi -__ZN3JSC15isStrWhiteSpaceEt -__ZN3JSC17StringConstructor11getCallDataERNS_8CallDataE -__ZN3JSCL21callStringConstructorEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSC23FunctionCallBracketNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE -__ZN3JSC14jsIsObjectTypeENS_7JSValueE -__ZN3JSC14StructureChainD1Ev -__ZN3WTF11OwnArrayPtrINS_6RefPtrIN3JSC9StructureEEEE10safeDeleteEv -__ZN3JSC11Interpreter14throwExceptionERPNS_9ExecStateERNS_7JSValueEjb -__ZNK3JSC8JSObject22isNotAnObjectErrorStubEv -__ZN3JSC9CodeBlock32expressionRangeForBytecodeOffsetEPNS_9ExecStateEjRiS3_S3_ -__ZN3JSC9CodeBlock43hasGlobalResolveInstructionAtBytecodeOffsetEj -__ZN3JSC8JSObject17putWithAttributesEPNS_9ExecStateERKNS_10IdentifierENS_7JSValueEj -__ZNK3JSC8JSObject19isWatchdogExceptionEv -__ZN3JSC9CodeBlock24handlerForBytecodeOffsetEj -__ZN3JSC11Interpreter15unwindCallFrameERPNS_9ExecStateENS_7JSValueERjRPNS_9CodeBlockE -__ZNK3JSC12JSActivation9classInfoEv -__ZN3JSC11Interpreter20createExceptionScopeEPNS_9ExecStateEPKNS_11InstructionE -__ZN3JSC19JSStaticScopeObject18getOwnPropertySlotEPNS_9ExecStateERKNS_10IdentifierERNS_12PropertySlotE -__ZN3JSC4Heap17collectAllGarbageEv -__ZN3JSC4Heap5sweepEv -__ZN3JSC12StringObjectD1Ev -__ZN3JSC15JSWrapperObjectD2Ev -__ZN3JSC19JSStaticScopeObjectD1Ev -__ZN3JSC19JSStaticScopeObjectD2Ev -__ZN3JSC12DateInstanceD1Ev -__ZN3JSC14JSGlobalObjectD2Ev -__ZN3JSC17FunctionPrototypeD1Ev -__ZN3JSC15ObjectPrototypeD1Ev -__ZN3JSC14ArrayPrototypeD1Ev -__ZN3JSC15StringPrototypeD1Ev -__ZN3JSC16BooleanPrototypeD1Ev -__ZN3JSC15NumberPrototypeD1Ev -__ZN3JSC13DatePrototypeD1Ev -__ZN3JSC15RegExpPrototypeD1Ev -__ZN3JSC14ErrorPrototypeD1Ev -__ZN3JSC13ErrorInstanceD2Ev -__ZN3JSC20NativeErrorPrototypeD1Ev -__ZN3JSC17ObjectConstructorD1Ev -__ZN3JSC19FunctionConstructorD1Ev -__ZN3JSC16ArrayConstructorD1Ev -__ZN3JSC17StringConstructorD1Ev -__ZN3JSC18BooleanConstructorD1Ev -__ZN3JSC17NumberConstructorD1Ev -__ZN3JSC15DateConstructorD1Ev -__ZN3JSC17RegExpConstructorD1Ev -__ZN3JSC16ErrorConstructorD1Ev -__ZN3JSC22NativeErrorConstructorD1Ev -__ZN3JSC10MathObjectD1Ev -__ZN3JSC10JSONObjectD1Ev -__ZN3JSC18GlobalEvalFunctionD1Ev -__ZN3JSC7JSArray15copyToRegistersEPNS_9ExecStateEPNS_8RegisterEj -__ZN3JSC11DoWhileNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE -__ZN3JSC11Interpreter14uncachePutByIDEPNS_9CodeBlockEPNS_11InstructionE -__ZN3JSC9parseDateEPNS_9ExecStateERKNS_7UStringE -__ZN3JSC37parseDateFromNullTerminatedCharactersEPNS_9ExecStateEPKc -__ZN3WTFL37parseDateFromNullTerminatedCharactersEPKcRbRi -__ZN3JSCL21dateProtoFuncSetHoursEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSCL23setNewValueFromTimeArgsEPNS_9ExecStateENS_7JSValueERKNS_7ArgListEib -__ZN3JSC21gregorianDateTimeToMSEPNS_9ExecStateERKNS_17GregorianDateTimeEdb -__ZN3JSCL20dateProtoFuncGetTimeEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSCL18mathProtoFuncRoundEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZNK3JSC21UntypedPtrAndBitfieldanEm -__ZN3JSCL18mathProtoFuncFloorEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSC18globalFuncParseIntEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSC15toInt32SlowCaseEdRb -__ZN3JSCL19regExpProtoFuncExecEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSC12RegExpObject4execEPNS_9ExecStateERKNS_7ArgListE -__ZN3JSC20globalFuncParseFloatEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSC9CodeBlock27addImmediateSwitchJumpTableEv -__ZN3WTF6VectorIN3JSC15SimpleJumpTableELm0EE15reserveCapacityEm -__ZN3WTF6VectorIiLm0EE4fillERKim -__ZN3JSC15SimpleJumpTable14offsetForValueEii -__ZN3JSCL29objectProtoFuncHasOwnPropertyEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZNK3JSC8JSObject14hasOwnPropertyEPNS_9ExecStateERKNS_10IdentifierE -__ZN3JSC17NumberConstructor11getCallDataERNS_8CallDataE -__ZN3JSCL21callNumberConstructorEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3WTF37parseDateFromNullTerminatedCharactersEPKc -__ZN3JSC6JSCell14toThisJSStringEPNS_9ExecStateE -__ZN3JSCL22arrayProtoFuncToStringEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZNK3JSC7UString12replaceRangeEiiRKS0_ -__ZN3JSC28globalFuncDecodeURIComponentEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSCL6decodeEPNS_9ExecStateERKNS_7ArgListEPKcb -__ZN3JSC17BytecodeGenerator10emitPreDecEPNS_10RegisterIDE -__ZN3JSCL8parseIntERKNS_7UStringEi -__ZNK3JSC7JSValue19synthesizePrototypeEPNS_9ExecStateE -__ZN3JSC26createNotAnObjectErrorStubEPNS_9ExecStateEb -__ZN3JSC13JSNotAnObject18getOwnPropertySlotEPNS_9ExecStateERKNS_10IdentifierERNS_12PropertySlotE -__ZNK3JSC22JSNotAnObjectErrorStub22isNotAnObjectErrorStubEv -__ZN3JSC22createNotAnObjectErrorEPNS_9ExecStateEPNS_22JSNotAnObjectErrorStubEjPNS_9CodeBlockE -__ZN3JSC9CodeBlock37getByIdExceptionInfoForBytecodeOffsetEPNS_9ExecStateEjRNS_8OpcodeIDE -__ZN3JSCL18createErrorMessageEPNS_9ExecStateEPNS_9CodeBlockEiiiNS_7JSValueENS_7UStringE -__ZN3JSC10makeStringIPKcNS_7UStringES2_S3_S2_S3_S2_EES3_T_T0_T1_T2_T3_T4_T5_ -__ZN3JSC5Error6createEPNS_9ExecStateENS_9ErrorTypeERKNS_7UStringEilS6_ -__ZN3JSC22NativeErrorConstructor16getConstructDataERNS_13ConstructDataE -__ZN3JSC9constructEPNS_9ExecStateENS_7JSValueENS_13ConstructTypeERKNS_13ConstructDataERKNS_7ArgListE -__ZN3JSCL35constructWithNativeErrorConstructorEPNS_9ExecStateEPNS_8JSObjectERKNS_7ArgListE -__ZN3JSC22NativeErrorConstructor9constructEPNS_9ExecStateERKNS_7ArgListE -__ZN3JSCL20dateProtoFuncSetTimeEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSCL21dateProtoFuncGetMonthEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSCL20dateProtoFuncGetYearEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSCL24dateProtoFuncToGMTStringEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZNK3JSC12DateInstance29calculateGregorianDateTimeUTCEPNS_9ExecStateE -__ZN3JSC20formatDateUTCVariantERKNS_17GregorianDateTimeERA100_c -__ZN3JSC13formatTimeUTCERKNS_17GregorianDateTimeERA100_c -__ZN3JSC10makeStringIPcPKcS1_EENS_7UStringET_T0_T1_ -__ZN3JSCL23numberProtoFuncToStringEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSCL28substituteBackreferencesSlowERKNS_7UStringES2_PKiPNS_6RegExpEi -__ZN3JSCL21dateProtoFuncToStringEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSC10formatDateERKNS_17GregorianDateTimeERA100_c -__ZN3JSC10formatTimeERKNS_17GregorianDateTimeERA100_c -__ZNK3JSC8JSObject8toNumberEPNS_9ExecStateE -__ZN3JSCL20dateProtoFuncGetDateEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSC21ReadModifyBracketNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE -__ZL17makeLeftShiftNodePN3JSC12JSGlobalDataEPNS_14ExpressionNodeES3_b -__ZL18makeRightShiftNodePN3JSC12JSGlobalDataEPNS_14ExpressionNodeES3_b -__ZN3JSCL25stringProtoFuncCharCodeAtEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSCL16mathProtoFuncMaxEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSC17RegExpConstructor11getCallDataERNS_8CallDataE -__ZN3JSCL21callRegExpConstructorEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSC17PrefixBracketNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE -__ZN3JSC22JSNotAnObjectErrorStubD1Ev -__ZN3JSC13JSNotAnObjectD1Ev -__ZN3JSC13ErrorInstanceD1Ev -__ZN3JSC17ObjectConstructor16getConstructDataERNS_13ConstructDataE -__ZN3JSCL30constructWithObjectConstructorEPNS_9ExecStateEPNS_8JSObjectERKNS_7ArgListE -__ZN3WTF9HashTableIdSt4pairIdN3JSC7JSValueEENS_18PairFirstExtractorIS4_EENS_9FloatHashIdEENS_14PairHashTraitsINS_10HashTraitsIdEENSA_IS3_EEEESB_E4findIdNS_22IdentityHashTranslatorIdS4_S8_EEEENS_17HashTableIteratorIdS4_S6_S8_SD_SB_EERKT_ -__ZN3WTF9HashTableIdSt4pairIdN3JSC7JSValueEENS_18PairFirstExtractorIS4_EENS_9FloatHashIdEENS_14PairHashTraitsINS_10HashTraitsIdEENSA_IS3_EEEESB_E6rehashEi -__ZN3WTF9HashTableIdSt4pairIdN3JSC7JSValueEENS_18PairFirstExtractorIS4_EENS_9FloatHashIdEENS_14PairHashTraitsINS_10HashTraitsIdEENSA_IS3_EEEESB_E3addIdS3_NS_17HashMapTranslatorIS4_SD_S8_EEEES1_INS_17HashTableIteratorIdS4_S6_S8_SD_SB_EEbERKT_RKT0_ -__ZN3JSC21UntypedPtrAndBitfieldoREm -__ZN3JSC6RegExp6createEPNS_12JSGlobalDataERKNS_7UStringE -__ZN3JSC17PropertyNameArray3addEPNS_11UStringImplE -__ZN3JSCL22objectProtoFuncValueOfEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSC17StringConstructor16getConstructDataERNS_13ConstructDataE -__ZN3JSCL30constructWithStringConstructorEPNS_9ExecStateEPNS_8JSObjectERKNS_7ArgListE -__ZN3JSC12StringObjectC1EPNS_9ExecStateEN3WTF17NonNullPassRefPtrINS_9StructureEEERKNS_7UStringE -__ZN3JSC12RegExpObject11getCallDataERNS_8CallDataE -__ZN3JSC8VoidNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE -__ZN3JSC15constructNumberEPNS_9ExecStateENS_7JSValueE -__ZNK3JSC12NumberObject9classInfoEv -__ZN3JSC12NumberObjectD1Ev -__ZN3JSC4Heap9freeBlockEm -__ZN3JSC4Heap12freeBlockPtrEPNS_14CollectorBlockE -__ZN3JSCL20arrayProtoFuncSpliceEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSCL18arrayProtoFuncSortEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSC7JSArray4sortEPNS_9ExecStateE -__ZN3JSC7JSArray17compactForSortingEv -__ZN3JSC16JSVariableObject14deletePropertyEPNS_9ExecStateERKNS_10IdentifierE -__ZN3JSC9Structure27despecifyDictionaryFunctionERKNS_10IdentifierE -__ZN3JSCL18stringFromCharCodeEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSC23jsSingleCharacterStringEPNS_12JSGlobalDataEt -__ZN3WTF6VectorIN3JSC7UString5RangeELm16EE15reserveCapacityEm -__ZN3WTF6VectorIN3JSC7UStringELm16EE15reserveCapacityEm -__ZN3JSC19globalFuncEncodeURIEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZNK3JSC9ArrayNode13isSimpleArrayEv -__ZNK3JSC9ArrayNode14toArgumentListEPNS_12JSGlobalDataE -__ZN3JSCL17arrayProtoFuncPopEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSC7JSArray3popEv -__ZN3WTF6VectorIPN3JSC9StructureELm8EE14expandCapacityEmPKS3_ -__ZNK3JSC9Arguments20numProvidedArgumentsEPNS_9ExecStateE -__ZN3JSC9Arguments15copyToRegistersEPNS_9ExecStateEPNS_8RegisterEj -__ZN3JSC12RegExpObject3putEPNS_9ExecStateERKNS_10IdentifierENS_7JSValueERNS_15PutPropertySlotE -__ZN3JSC9lookupPutINS_12RegExpObjectEEEbPNS_9ExecStateERKNS_10IdentifierENS_7JSValueEPKNS_9HashTableEPT_ -__ZN3JSCL24setRegExpObjectLastIndexEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueE -__Z15jsc_pcre_xclassiPKh -__ZN3JSC18PostfixBracketNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE -__ZN3JSCL28regExpConstructorLeftContextEPNS_9ExecStateERKNS_10IdentifierERKNS_12PropertySlotE -__ZN3JSC18RegExpMatchesArray3putEPNS_9ExecStateEjNS_7JSValueE -__ZN3JSC12JSActivation3putEPNS_9ExecStateERKNS_10IdentifierENS_7JSValueERNS_15PutPropertySlotE -__ZN3JSC36constructBooleanFromImmediateBooleanEPNS_9ExecStateENS_7JSValueE -__ZN3JSC13BooleanObjectC1EN3WTF17NonNullPassRefPtrINS_9StructureEEE -__ZN3JSC28createUndefinedVariableErrorEPNS_9ExecStateERKNS_10IdentifierEjPNS_9CodeBlockE -__ZN3JSC10makeStringIPKcNS_7UStringEEES3_T_T0_ -__ZN3JSCL22errorProtoFuncToStringEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSC10makeStringINS_7UStringEPKcS1_EES1_T_T0_T1_ -__ZN3JSCL16mathProtoFuncAbsEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSC6JSCell9getObjectEv -__ZN3JSC9MarkStack12releaseStackEPvm -__ZN3JSC8JSObject14deletePropertyEPNS_9ExecStateEj -__ZNK3JSC8JSObject21findPropertyHashEntryEPNS_9ExecStateERKNS_10IdentifierE -__ZN3JSC13BooleanObjectD1Ev -__ZN3JSC22JSPropertyNameIterator12markChildrenERNS_9MarkStackE -__ZN3JSCL21arrayProtoFuncUnShiftEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSCL21stringProtoFuncCharAtEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSC26jsSingleCharacterSubstringEPNS_12JSGlobalDataERKNS_7UStringEj -__ZN3JSC13UnaryPlusNode14stripUnaryPlusEv -__ZN3JSC8JSString18getPrimitiveNumberEPNS_9ExecStateERdRNS_7JSValueE -__ZN3JSC9Arguments3putEPNS_9ExecStateERKNS_10IdentifierENS_7JSValueERNS_15PutPropertySlotE -__ZN3JSC9LabelNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE -__ZN3JSCL21stringProtoFuncConcatEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSCL24booleanProtoFuncToStringEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSCL9dateParseEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSC10JSFunction19getOwnPropertyNamesEPNS_9ExecStateERNS_17PropertyNameArrayENS_15EnumerationModeE -__ZN3WTF9HashTableIPN3JSC11UStringImplES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E3addIS3_S3_NS_22IdentityHashTranslatorIS3_S3_S7_EEEESt4pairINS_17HashTableIteratorIS3_S3_S5_S7_S9_S9_EEbERKT_RKT0_ -__ZN3WTF9HashTableIPN3JSC11UStringImplES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E6rehashEi -__ZN3JSC11Interpreter11resolveSkipEPNS_9ExecStateEPNS_11InstructionERNS_7JSValueE -__ZN3JSCL21arrayProtoFuncReverseEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3WTF7Unicode18UTF8SequenceLengthEc -__ZN3WTF7Unicode18decodeUTF8SequenceEPKc -__ZN3JSC23createNotAFunctionErrorEPNS_9ExecStateENS_7JSValueEjPNS_9CodeBlockE -__ZN3JSCL24dateProtoFuncGetFullYearEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSC16ArrayConstructor11getCallDataERNS_8CallDataE -__ZN3JSCL20callArrayConstructorEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSC7JSArray19getOwnPropertyNamesEPNS_9ExecStateERNS_17PropertyNameArrayENS_15EnumerationModeE -__ZN3WTF9HashTableIPN3JSC11UStringImplES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E4findIS3_NS_22IdentityHashTranslatorIS3_S3_S7_EEEENS_17HashTableIteratorIS3_S3_S5_S7_S9_S9_EERKT_ -__ZN3JSC9ExecState10arrayTableEPS0_ -__ZN3JSCL23dateProtoFuncGetSecondsEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSCL20dateProtoFuncSetYearEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSC13LiteralParser5Lexer9lexStringILNS0_10ParserModeE1EEENS0_9TokenTypeERNS1_18LiteralParserTokenE -__ZN3WTFL3i2bERNS_6BigIntEi -__ZN3JSC6JSCell3putEPNS_9ExecStateERKNS_10IdentifierENS_7JSValueERNS_15PutPropertySlotE -__ZNK3JSC8JSString8toObjectEPNS_9ExecStateE -__ZNK3JSC8JSObject11hasPropertyEPNS_9ExecStateEj -__ZN3WTFL3b2dERKNS_6BigIntEPi -__ZN3WTF6VectorIPNS0_IN3JSC10RegisterIDELm32EEELm32EE14expandCapacityEmPKS4_ -__ZN3JSC7JSArray4sortEPNS_9ExecStateENS_7JSValueENS_8CallTypeERKNS_8CallDataE -__ZN3WTF6VectorIN3JSC26AVLTreeNodeForArrayCompareELm0EE6resizeEm -__ZN3WTF7AVLTreeIN3JSC32AVLTreeAbstractorForArrayCompareELj44ENS_18AVLTreeDefaultBSetILj44EEEE6insertEi -__ZN3JSC32AVLTreeAbstractorForArrayCompare15compare_key_keyENS_7JSValueES1_ -__ZN3WTF7AVLTreeIN3JSC32AVLTreeAbstractorForArrayCompareELj44ENS_18AVLTreeDefaultBSetILj44EEEE7balanceEi -__ZN3JSCL22numberProtoFuncToFixedEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSCL16integerPartNoExpEd -__ZN3JSC10makeStringINS_7UStringES1_PKcS1_EES1_T_T0_T1_T2_ -__ZN3JSCL16mathProtoFuncLogEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSCL16mathProtoFuncPowEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3WTF13tryFastCallocEmm -__ZN3WTF10fastCallocILb0EEEPvmm -__ZN3JSC7JSArray11sortNumericEPNS_9ExecStateENS_7JSValueENS_8CallTypeERKNS_8CallDataE -__ZN3JSCL22compareNumbersForQSortEPKvS1_ -__ZN3JSC10makeStringINS_7UStringES1_EES1_T_T0_ -__ZN3WTF6VectorIPN3JSC10RegisterIDELm32EE14expandCapacityEmPKS3_ -__ZN3JSC16ErrorConstructor11getCallDataERNS_8CallDataE -__ZN3JSCL20callErrorConstructorEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSCL21stringProtoFuncSearchEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSCL17arrayProtoFuncMapEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZNK3JSC7JSValue16synthesizeObjectEPNS_9ExecStateE -__ZN3WTF15ThreadCondition9timedWaitERNS_5MutexEd -__ZN3JSCL7dateNowEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSC18globalFuncIsFiniteEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSC17DeleteResolveNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE -__ZNK3JSC21UStringSourceProvider8getRangeEii -__ZN3JSC12JSActivation14deletePropertyEPNS_9ExecStateERKNS_10IdentifierE -__ZN3JSCL22numberProtoFuncValueOfEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSCL16mathProtoFuncCosEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSC12JSGlobalData6createEv -__ZN3JSC8JSObject17putDirectFunctionEPNS_9ExecStateEPNS_16InternalFunctionEj -__ZN3JSC12JSGlobalData13startSamplingEv -__ZN3JSC11Interpreter13startSamplingEv -__ZN3JSC12JSGlobalData12stopSamplingEv -__ZN3JSC11Interpreter12stopSamplingEv -__ZN3JSCL17mathProtoFuncSqrtEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSCL16mathProtoFuncSinEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSC16toUInt32SlowCaseEdRb -__ZN3JSC9CodeBlock27addCharacterSwitchJumpTableEv -__ZN3JSC20MarkedArgumentBuffer10slowAppendENS_7JSValueE -__ZN3WTF9HashTableIPN3JSC20MarkedArgumentBufferES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E3addIS3_S3_NS_22IdentityHashTranslatorIS3_S3_S7_EEEESt4pairINS_17HashTableIteratorIS3_S3_S5_S7_S9_S9_EEbERKT_RKT0_ -__ZN3WTF9HashTableIPN3JSC20MarkedArgumentBufferES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E6rehashEi -__ZN3WTF9HashTableIPN3JSC20MarkedArgumentBufferES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E4findIS3_NS_22IdentityHashTranslatorIS3_S3_S7_EEEENS_17HashTableIteratorIS3_S3_S5_S7_S9_S9_EERKT_ -__ZN3JSC15ObjectPrototype3putEPNS_9ExecStateERKNS_10IdentifierENS_7JSValueERNS_15PutPropertySlotE -__ZN3JSCltERKNS_7UStringES2_ -__ZN3JSC12JSGlobalData14dumpSampleDataEPNS_9ExecStateE -__ZN3JSC11Interpreter14dumpSampleDataEPNS_9ExecStateE -__ZN3JSC4Heap7destroyEv -__ZN3JSC4Heap10freeBlocksEv -__ZN3JSC14JSGlobalObject25destroyJSGlobalObjectDataEPv -__ZN3JSC14JSGlobalObject18JSGlobalObjectDataD2Ev -__ZN3JSC12JSGlobalDataD1Ev -__ZN3JSC12JSGlobalDataD2Ev -__ZN3JSC12RegisterFileD1Ev -__ZNK3JSC9HashTable11deleteTableEv -__ZN3JSC5LexerD1Ev -__ZN3JSC17CommonIdentifiersD2Ev -__ZN3JSC21deleteIdentifierTableEPNS_15IdentifierTableE -__ZN3JSC15IdentifierTableD2Ev -__ZN3JSC4HeapD1Ev -__ZN3JSC14NumericStringsD1Ev -__ZN3JSC12SmallStringsD1Ev diff --git a/JavaScriptCore.order b/JavaScriptCore.order index d6f6caa..3cb3d1d 100644 --- a/JavaScriptCore.order +++ b/JavaScriptCore.order @@ -1,1868 +1,2047 @@ __ZN3WTF10fastMallocEm -__ZN3WTF10fastMallocILb1EEEPvm __ZN3WTF20TCMalloc_ThreadCache10InitModuleEv __ZN3WTFL15InitSizeClassesEv __Z20TCMalloc_SystemAllocmPmm __ZN3WTFL13MetaDataAllocEm +__ZN3WTF17TCMalloc_PageHeap19initializeScavengerEv __ZN3WTF20TCMalloc_ThreadCache22CreateCacheIfNecessaryEv __ZN3WTF25TCMalloc_Central_FreeList11RemoveRangeEPPvS2_Pi __ZN3WTF25TCMalloc_Central_FreeList18FetchFromSpansSafeEv __ZN3WTF17TCMalloc_PageHeap10AllocLargeEm __ZN3WTF17TCMalloc_PageHeap8GrowHeapEm +__ZN3WTF17TCMalloc_PageHeap6DeleteEPNS_4SpanE +__ZN3WTF8fastFreeEPv __ZN3WTF19initializeThreadingEv -__ZN3WTF20initializeMainThreadEv -__ZN3WTF5MutexC1Ev -__ZN3WTF28initializeMainThreadPlatformEv __ZN3WTF36lockAtomicallyInitializedStaticMutexEv -__ZN3WTF8fastFreeEPv __ZN3WTF38unlockAtomicallyInitializedStaticMutexEv __ZN3JSC19initializeThreadingEv __ZN3JSCL23initializeThreadingOnceEv +__ZN3WTF13WTFThreadDataC1Ev __ZN3JSC17initializeUStringEv -__ZN3JSC12initDateMathEv +__ZN7WebCore10StringImpl5emptyEv +__ZN3JSC12JSGlobalData10storeVPtrsEv +__ZN3JSC9StructureC1ENS_7JSValueERKNS_8TypeInfoEj +__ZN3JSC7JSArrayC1EN3WTF17NonNullPassRefPtrINS_9StructureEEE +__ZN3WTF16fastZeroedMallocEm +__ZN3JSC7JSArrayD1Ev +__ZN3JSC7JSArrayD2Ev +__ZN3JSC9StructureD1Ev +__ZN3JSC9StructureD2Ev +__ZN3JSC11JSByteArray15createStructureENS_7JSValueE +__ZN3JSC11JSByteArrayD1Ev +__ZN3JSC8JSStringD1Ev +__ZN3JSC10JSFunctionC1EN3WTF17NonNullPassRefPtrINS_9StructureEEE +__ZN3JSC10JSFunctionC2EN3WTF17NonNullPassRefPtrINS_9StructureEEE +__ZN3JSC10JSFunctionD1Ev +__ZN3JSC10JSFunctionD2Ev +__ZN3JSC18VPtrHackExecutableD0Ev +__ZN3WTF5MutexC1Ev +__ZN3WTF15initializeDatesEv __ZN3WTF11currentTimeEv +__ZN3WTF8msToYearEd +__ZN3WTF39initializeMainThreadToProcessMainThreadEv +__ZN3WTFL43initializeMainThreadToProcessMainThreadOnceEv +__ZN3WTF47initializeMainThreadToProcessMainThreadPlatformEv +__ZN3WTF20initializeMainThreadEv __ZN3WTF15ThreadConditionC1Ev +__ZN7WebCore10StringImpl6createEPKtj +__ZN7WebCore10StringImpl19createUninitializedEjRPt __ZN3WTF5Mutex4lockEv __ZN3WTF5Mutex6unlockEv +__ZNK7WebCore6String17crossThreadStringEv +__ZN7WebCore10StringImpl17crossThreadStringEv +__ZN7WebCore10StringImpl12sharedBufferEv +__ZN7WebCore6StringC1EPKc +__ZN7WebCore10StringImpl6createEPKc +__ZN7WebCore10StringImpl6createEPKcj +__ZNK7WebCore6String14threadsafeCopyEv +__ZNK7WebCore10StringImpl14threadsafeCopyEv +__ZN7WebCore10StringImpl8endsWithEPS0_b +__ZN7WebCore10StringImpl4findEPS0_ib +__ZN7WebCore10StringImplD1Ev +__ZN7WebCore10StringImplD2Ev +__ZN7WebCoreplERKNS_6StringEPKc +__ZN7WebCore6String6appendERKS0_ +__ZN7WebCoreplERKNS_6StringES2_ __ZN3WTF12createThreadEPFPvS0_ES0_PKc __ZN3WTF20createThreadInternalEPFPvS0_ES0_PKc -__ZN3WTFL35establishIdentifierForPthreadHandleERP17_opaque_pthread_t +__ZN3WTFL35establishIdentifierForPthreadHandleERKP17_opaque_pthread_t __ZN3WTF9HashTableIjSt4pairIjP17_opaque_pthread_tENS_18PairFirstExtractorIS4_EENS_7IntHashIjEENS_14PairHashTraitsINS_10HashTrai __ZN3WTFL16threadEntryPointEPv -__ZN3WTF16fastZeroedMallocEm -__ZN3WTF21setThreadNameInternalEPKc +__ZN3WTF31initializeCurrentThreadInternalEPKc +__ZN3WTF20ThreadIdentifierData10initializeEj +__ZN3WTF20ThreadIdentifierData23initializeKeyOnceHelperEv __ZN3WTF5MutexD1Ev -__ZN3WTF25TCMalloc_Central_FreeList11InsertRangeEPvS1_i -__ZN3WTF25TCMalloc_Central_FreeList18ReleaseListToSpansEPv __ZN3WTF12isMainThreadEv +__ZN3WTF7CString16newUninitializedEmRPc +__ZNK3WTF7CString4dataEv __ZN3WTF14FastMallocZone4sizeEP14_malloc_zone_tPKv +__ZN7WebCore6String29charactersWithNullTerminationEv +__ZN7WebCore10StringImpl34createWithTerminatingNullCharacterERKS0_ __ZN3WTF13currentThreadEv +__ZN3WTF20ThreadIdentifierData10identifierEv +__ZNK7WebCore6String15stripWhiteSpaceEv +__ZN7WebCore10StringImpl15stripWhiteSpaceEv +__ZN7WebCore5equalEPKNS_10StringImplES2_ +__ZN7WebCoreplEPKcRKNS_6StringE +__ZN7WebCore6StringC1EPKt +__ZN7WebCore6StringC2EPKt +__ZNK7WebCore6String7isEmptyEv __ZN3WTF16callOnMainThreadEPFvPvES0_ __ZN3WTF5DequeINS_19FunctionWithContextEE14expandCapacityEv __ZN3WTF37scheduleDispatchFunctionsOnMainThreadEv __ZN3WTF15ThreadCondition4waitERNS_5MutexE -__ZN3JSC8DebuggerC2Ev +__ZN3WTF17TCMalloc_PageHeap3NewEm +__ZN7WebCore12AtomicString4initEv +__ZN3WTF7HashSetIPN7WebCore10StringImplENS1_10StringHashENS_10HashTraitsIS3_EEE3addIPKcNS1_17CStringTranslatorEEESt4pairINS_24H +__ZN3WTF9HashTableIPN7WebCore10StringImplES3_NS_17IdentityExtractorIS3_EENS1_10StringHashENS_10HashTraitsIS3_EES8_E6rehashEi +__ZN7WebCore12AtomicString3addEPKc +__ZN7WebCore12AtomicString3addEPNS_10StringImplE +__ZN7WebCore6StringC1EPKcj +__ZN7WebCore5equalEPKNS_10StringImplEPKc +__ZNK7WebCore6String6lengthEv +__ZNK7WebCore6StringixEj +__ZNK7WebCore6String9substringEjj +__ZN7WebCore10StringImpl9substringEjj +__ZNK7WebCore6String5lowerEv +__ZN7WebCore10StringImpl5lowerEv +__ZN7WebCore10StringImpl4findEti +__ZNK7WebCore6String10charactersEv +__ZN7WebCore17equalIgnoringCaseEPNS_10StringImplES1_ +__ZN7WebCore17equalIgnoringCaseEPNS_10StringImplEPKc +__ZN7WebCore12AtomicString3addEPKtj +__ZN3WTF7HashSetIPN7WebCore10StringImplENS1_10StringHashENS_10HashTraitsIS3_EEE3addINS1_11UCharBufferENS1_21UCharBufferTranslat +__ZN7WebCore18charactersToDoubleEPKtmPb __ZN3WTF6strtodEPKcPPc -__ZN3WTF15ThreadCondition6signalEv -__ZN3WTF15ThreadCondition9timedWaitERNS_5MutexEd __ZN3WTF15ThreadCondition9broadcastEv --[WTFMainThreadCaller call] -__ZN3WTF31dispatchFunctionsFromMainThreadEv -__ZN3WTF14FastMallocZone9forceLockEP14_malloc_zone_t -__ZN3WTF11fastReallocEPvm -__ZN3WTF11fastReallocILb1EEEPvS1_m -__ZN3JSC7UStringC1EPKti -__ZN3JSC7UStringC2EPKti -__ZN3JSC12JSGlobalData12createLeakedEv +__ZN3WTF15ThreadCondition6signalEv +__ZN7WebCore12AtomicString6removeEPNS_10StringImplE +__ZN3JSC12JSGlobalData12createLeakedENS_15ThreadStackTypeE __ZN3JSC9Structure18startIgnoringLeaksEv -__ZN3JSC7VPtrSetC2Ev -__ZN3JSC9StructureC1ENS_7JSValueERKNS_8TypeInfoE -__ZN3JSC7JSArrayC1EN3WTF10PassRefPtrINS_9StructureEEE -__ZN3JSC7JSArrayD1Ev -__ZN3JSC7JSArrayD2Ev -__ZN3WTF10RefCountedIN3JSC9StructureEE5derefEv -__ZN3JSC9StructureD1Ev -__ZN3JSC9StructureD2Ev -__ZN3JSC11JSByteArray15createStructureENS_7JSValueE -__ZN3JSC11JSByteArrayD1Ev -__ZN3JSC8JSStringD1Ev -__ZN3JSC10JSFunctionD1Ev -__ZN3JSC10JSFunctionD2Ev -__ZN3JSC8JSObjectD2Ev -__ZN3JSC12JSGlobalDataC2EbRKNS_7VPtrSetE -__ZN3JSC21createIdentifierTableEv +__ZN3JSC12JSGlobalDataC2ENS0_14GlobalDataTypeENS_15ThreadStackTypeE __ZN3JSC17CommonIdentifiersC1EPNS_12JSGlobalDataE __ZN3JSC17CommonIdentifiersC2EPNS_12JSGlobalDataE __ZN3JSC10Identifier3addEPNS_12JSGlobalDataEPKc -__ZN3WTF7HashSetIPN3JSC7UString3RepENS_7StrHashIS4_EENS_10HashTraitsIS4_EEE3addIPKcNS1_17CStringTranslatorEEESt4pairINS_24HashT -__ZN3WTF9HashTableIPN3JSC7UString3RepES4_NS_17IdentityExtractorIS4_EENS_7StrHashIS4_EENS_10HashTraitsIS4_EESA_E6rehashEi -__ZN3WTF9HashTableIPKcSt4pairIS2_NS_6RefPtrIN3JSC7UString3RepEEEENS_18PairFirstExtractorIS9_EENS_7PtrHashIS2_EENS_14PairHashTra -__ZN3WTF6RefPtrIN3JSC7UString3RepEED1Ev +__ZN3WTF7HashSetIPN7WebCore10StringImplENS1_10StringHashENS_10HashTraitsIS3_EEE3addIPKcN3JSC27IdentifierCStringTranslatorEEESt4 +__ZN3WTF9HashTableIPN7WebCore10StringImplES3_NS_17IdentityExtractorIS3_EENS1_10StringHashENS_10HashTraitsIS3_EES8_E6expandEv +__ZN3WTF9HashTableIPKcSt4pairIS2_NS_6RefPtrIN7WebCore10StringImplEEEENS_18PairFirstExtractorIS8_EENS_7PtrHashIS2_EENS_14PairHas +__ZN3JSC10IdentifierC1EPNS_12JSGlobalDataEPKc __ZN3JSC12SmallStringsC1Ev __ZN3JSC19ExecutableAllocator17intializePageSizeEv __ZN3JSC14ExecutablePool11systemAllocEm __ZN3JSC5LexerC1EPNS_12JSGlobalDataE -__ZN3JSC5LexerC2EPNS_12JSGlobalDataE +__ZN3JSC11ParserArenaC1Ev +__ZN3JSC11ParserArenaC2Ev __ZN3JSC11InterpreterC1Ev __ZN3JSC11InterpreterC2Ev -__ZN3JSC11Interpreter14privateExecuteENS0_13ExecutionFlagEPNS_12RegisterFileEPNS_9ExecStateEPNS_7JSValueE -__ZN3WTF7HashMapIPvN3JSC8OpcodeIDENS_7PtrHashIS1_EENS_10HashTraitsIS1_EENS6_IS3_EEE3addERKS1_RKS3_ -__ZN3WTF9HashTableIPvSt4pairIS1_N3JSC8OpcodeIDEENS_18PairFirstExtractorIS5_EENS_7PtrHashIS1_EENS_14PairHashTraitsINS_10HashTrai -__ZN3JSC8JITStubsC1EPNS_12JSGlobalDataE +__ZN3JSC9JITThunksC1EPNS_12JSGlobalDataE __ZN3JSC3JITC1EPNS_12JSGlobalDataEPNS_9CodeBlockE __ZN3JSC3JITC2EPNS_12JSGlobalDataEPNS_9CodeBlockE -__ZN3JSC3JIT35privateCompileCTIMachineTrampolinesEPN3WTF6RefPtrINS_14ExecutablePoolEEEPNS_12JSGlobalDataEPPvS9_S9_S9_S9_S9_ -__ZN3JSC12X86Assembler23X86InstructionFormatter11oneByteOp64ENS0_15OneByteOpcodeIDEiNS_3X8610RegisterIDE +__ZN3JSC3JIT35privateCompileCTIMachineTrampolinesEPN3WTF6RefPtrINS_14ExecutablePoolEEEPNS_12JSGlobalDataEPNS_19TrampolineStruct +__ZN3JSC20MacroAssemblerX86_6413branchTestPtrENS_23MacroAssemblerX86Common9ConditionENS_12X86Registers10RegisterIDES4_ +__ZN3JSC12X86Assembler23X86InstructionFormatter11oneByteOp64ENS0_15OneByteOpcodeIDEiNS_12X86Registers10RegisterIDE __ZN3JSC12X86Assembler3jCCENS0_9ConditionE -__ZN3JSC23MacroAssemblerX86Common4moveENS_22AbstractMacroAssemblerINS_12X86AssemblerEE6ImmPtrENS_3X8610RegisterIDE -__ZN3JSC12X86Assembler23X86InstructionFormatter11oneByteOp64ENS0_15OneByteOpcodeIDEiNS_3X8610RegisterIDEi -__ZN3JSC12X86Assembler23X86InstructionFormatter9oneByteOpENS0_15OneByteOpcodeIDEiNS_3X8610RegisterIDE +__ZN3JSC12X86Assembler23X86InstructionFormatter11oneByteOp64ENS0_15OneByteOpcodeIDEiNS_12X86Registers10RegisterIDEi +__ZN3JSC12X86Assembler23X86InstructionFormatter9oneByteOpENS0_15OneByteOpcodeIDEiNS_12X86Registers10RegisterIDEi +__ZN3JSC12X86Assembler23X86InstructionFormatter11memoryModRMEiNS_12X86Registers10RegisterIDEi +__ZN3JSC12X86Assembler23X86InstructionFormatter9oneByteOpENS0_15OneByteOpcodeIDEiNS_12X86Registers10RegisterIDE __ZN3JSC15AssemblerBuffer11ensureSpaceEi -__ZN3JSC20MacroAssemblerX86_6413branchTestPtrENS_23MacroAssemblerX86Common9ConditionENS_3X8610RegisterIDENS_22AbstractMacroAsse -__ZN3JSC12X86Assembler23X86InstructionFormatter9oneByteOpENS0_15OneByteOpcodeIDENS_3X8610RegisterIDE __ZN3JSC20MacroAssemblerX86_644callEv -__ZN3JSC12X86Assembler23X86InstructionFormatter9oneByteOpENS0_15OneByteOpcodeIDEiNS_3X8610RegisterIDEi +__ZN3JSC20MacroAssemblerX86_647loadPtrENS_22AbstractMacroAssemblerINS_12X86AssemblerEE15ImplicitAddressENS_12X86Registers10Regi +__ZN3JSC12X86Assembler23X86InstructionFormatter9oneByteOpENS0_15OneByteOpcodeIDENS_12X86Registers10RegisterIDE __ZN3JSC3JIT32compileOpCallInitializeCallFrameEv -__ZN3JSC12X86Assembler23X86InstructionFormatter11memoryModRMEiNS_3X8610RegisterIDEi -__ZN3JSC20MacroAssemblerX86_6421makeTailRecursiveCallENS_22AbstractMacroAssemblerINS_12X86AssemblerEE4JumpE +__ZN3JSC15AssemblerBuffer4growEi +__ZN3WTF11fastReallocEPvm +__ZN3WTF11fastReallocILb1EEEPvS1_m +__ZN3WTF10RefCountedIN3JSC14ExecutablePoolEE5derefEv __ZN3JSC14TimeoutCheckerC1Ev __ZN3JSC4HeapC1EPNS_12JSGlobalDataE +__ZN3JSC4Heap13allocateBlockEv +__ZN3JSC9MarkStack18initializePagesizeEv +__ZN3JSC9MarkStack13allocateStackEm __ZN3JSC27startProfilerServerIfNeededEv +[ProfilerServer sharedProfileServer] -[ProfilerServer init] __ZN3JSC9Structure17stopIgnoringLeaksEv +__ZNK7WebCore6String6latin1Ev +__ZNK3WTF7CString6lengthEv +__ZN7WebCore10StringImpl22containsOnlyWhitespaceEv +__ZN7WebCore12AtomicString3addEPKt +__ZN7WebCore10StringImpl11reverseFindEPS0_ib +__ZN7WebCore10StringImpl5adoptERNS_12StringBufferE +__ZNK7WebCore6String5splitEtRN3WTF6VectorIS0_Lm0EEE +__ZNK7WebCore6String5splitERKS0_bRN3WTF6VectorIS0_Lm0EEE +-[WTFMainThreadCaller call] +__ZN3WTF31dispatchFunctionsFromMainThreadEv +__ZN3WTF15ThreadCondition9timedWaitERNS_5MutexEd +__ZN3WTF14FastMallocZone9forceLockEP14_malloc_zone_t +__ZN3WTF14FastMallocZone11forceUnlockEP14_malloc_zone_t +__ZN3WTF20TCMalloc_ThreadCache18DestroyThreadCacheEPv +__ZN3WTF20TCMalloc_ThreadCache11DeleteCacheEPS0_ +__ZN3WTF25TCMalloc_Central_FreeList11InsertRangeEPvS1_i +__ZN3WTF25TCMalloc_Central_FreeList18ReleaseListToSpansEPv +__ZN3WTF20ThreadIdentifierData8destructEPv +__ZN3WTF31clearPthreadHandleForIdentifierEj +__ZN3WTF12detachThreadEj +__ZN3WTFL26pthreadHandleForIdentifierEj +__ZN7WebCore6StringC1EPKtj +__Z15jsRegExpCompilePKti24JSRegExpIgnoreCaseOption23JSRegExpMultilineOptionPjPPKc +__ZL30calculateCompiledPatternLengthPKti24JSRegExpIgnoreCaseOptionR11CompileDataR9ErrorCode +__ZL11checkEscapePPKtS0_P9ErrorCodeib +__ZL13compileBranchiPiPPhPPKtS3_P9ErrorCodeS_S_R11CompileData +__Z15jsRegExpExecutePK8JSRegExpPKtiiPii +__ZL5matchPKtPKhiR9MatchData +__ZN7WebCore6String6formatEPKcz +__ZNK7WebCore6String19characterStartingAtEj +__ZN7WebCore10StringImpl19characterStartingAtEj +__ZN3WTF25TCMalloc_Central_FreeList11ShrinkCacheEib +__ZNK7WebCore6String16removeCharactersEPFbtE +__ZN7WebCore10StringImpl16removeCharactersEPFbtE +__ZN7WebCore10StringImpl7replaceEtt +__ZNK7WebCore6String4utf8Ev +__ZN3WTF7Unicode18convertUTF16ToUTF8EPPKtS2_PPcS4_b +__ZN3WTF7CStringC1EPKcj +__ZN3WTF7CString4initEPKcj +__ZN7WebCore10StringImpl4findEPFbtEi __ZN3JSC4Heap8allocateEm -__ZN3JSCL13allocateBlockILNS_8HeapTypeE0EEEPNS_14CollectorBlockEv -__ZN3JSC4Heap4heapENS_7JSValueE +__ZN3JSC6JSCellD1Ev __ZN3JSC4Heap7protectENS_7JSValueE -__ZN3WTF7HashMapIPN3JSC6JSCellEjNS_7PtrHashIS3_EENS_10HashTraitsIS3_EENS6_IjEEE3addERKS3_RKj __ZN3WTF9HashTableIPN3JSC6JSCellESt4pairIS3_jENS_18PairFirstExtractorIS5_EENS_7PtrHashIS3_EENS_14PairHashTraitsINS_10HashTraits __ZN3JSC14JSGlobalObjectnwEmPNS_12JSGlobalDataE __ZN3JSC14JSGlobalObject4initEPNS_8JSObjectE __ZN3JSC14JSGlobalObject5resetENS_7JSValueE -__ZN3JSC4Heap12heapAllocateILNS_8HeapTypeE0EEEPvm -__ZN3JSC8jsStringEPNS_12JSGlobalDataERKNS_7UStringE -__ZN3JSC12SmallStrings17createEmptyStringEPNS_12JSGlobalDataE +__ZN3JSC17FunctionPrototypeC1EPNS_9ExecStateEN3WTF17NonNullPassRefPtrINS_9StructureEEE +__ZN3JSC17FunctionPrototypeC2EPNS_9ExecStateEN3WTF17NonNullPassRefPtrINS_9StructureEEE +__ZN3JSC16InternalFunctionC2EPNS_12JSGlobalDataEN3WTF17NonNullPassRefPtrINS_9StructureEEERKNS_10IdentifierE __ZN3JSC7UStringC1EPKc -__ZN3JSCL9createRepEPKc -__ZN3JSC8JSObject9putDirectERKNS_10IdentifierENS_7JSValueEjbRNS_15PutPropertySlotE -__ZN3JSC9Structure40addPropertyTransitionToExistingStructureEPS0_RKNS_10IdentifierEjRm -__ZN3JSC9Structure3getERKNS_10IdentifierERj -__ZN3JSC9Structure21addPropertyTransitionEPS0_RKNS_10IdentifierEjRm -__ZN3JSC9Structure3putERKNS_10IdentifierEj -__ZN3JSC8JSObject26putDirectWithoutTransitionERKNS_10IdentifierENS_7JSValueEj -__ZN3JSC9Structure28addPropertyWithoutTransitionERKNS_10IdentifierEj +__ZN3JSC12SmallStrings17createEmptyStringEPNS_12JSGlobalDataE +__ZN3JSC8JSObject17putDirectInternalERKNS_10IdentifierENS_7JSValueEjbRNS_15PutPropertySlotEPNS_6JSCellE +__ZN3JSC9Structure40addPropertyTransitionToExistingStructureEPS0_RKNS_10IdentifierEjPNS_6JSCellERm +__ZN3JSC9Structure3getEPKN7WebCore10StringImplERjRPNS_6JSCellE +__ZN3JSC9Structure21addPropertyTransitionEPS0_RKNS_10IdentifierEjPNS_6JSCellERm +__ZN3JSC9Structure3putERKNS_10IdentifierEjPNS_6JSCellE +__ZN3JSC9Structure28addPropertyWithoutTransitionERKNS_10IdentifierEjPNS_6JSCellE __ZN3JSC17FunctionPrototype21addFunctionPropertiesEPNS_9ExecStateEPNS_9StructureEPPNS_10JSFunctionES7_ -__ZN3JSC10JSFunctionC2EPNS_9ExecStateEN3WTF10PassRefPtrINS_9StructureEEEiRKNS_10IdentifierEPFNS_7JSValueES2_PNS_8JSObjectESA_RK -__ZN3JSC12JSGlobalData17createNativeThunkEv -__ZN3JSC16FunctionBodyNode17createNativeThunkEPNS_12JSGlobalDataE -__ZN3WTF6VectorINS_6RefPtrIN3JSC21ParserArenaRefCountedEEELm0EE15reserveCapacityEm -__ZN3JSC11ParserArena5resetEv +__ZN3JSC10JSFunctionC1EPNS_9ExecStateEN3WTF17NonNullPassRefPtrINS_9StructureEEEiRKNS_10IdentifierEPFNS_7JSValueES2_PNS_8JSObjec +__ZN3JSC10JSFunctionC2EPNS_9ExecStateEN3WTF17NonNullPassRefPtrINS_9StructureEEEiRKNS_10IdentifierEPFNS_7JSValueES2_PNS_8JSObjec __ZN3JSC8JSObject34putDirectFunctionWithoutTransitionEPNS_9ExecStateEPNS_16InternalFunctionEj -__ZN3JSC15ObjectPrototypeC2EPNS_9ExecStateEN3WTF10PassRefPtrINS_9StructureEEEPS5_ +__ZN3JSC16InternalFunction4nameEPNS_9ExecStateE +__ZN3JSC15ObjectPrototypeC1EPNS_9ExecStateEN3WTF17NonNullPassRefPtrINS_9StructureEEEPS5_ +__ZN3JSC15ObjectPrototypeC2EPNS_9ExecStateEN3WTF17NonNullPassRefPtrINS_9StructureEEEPS5_ __ZN3JSC9Structure26rehashPropertyMapHashTableEj -__ZN3JSC15StringPrototypeC2EPNS_9ExecStateEN3WTF10PassRefPtrINS_9StructureEEE -__ZN3JSC16BooleanPrototypeC2EPNS_9ExecStateEN3WTF10PassRefPtrINS_9StructureEEEPS5_ -__ZN3JSC15NumberPrototypeC2EPNS_9ExecStateEN3WTF10PassRefPtrINS_9StructureEEEPS5_ -__ZN3JSC15RegExpPrototypeC2EPNS_9ExecStateEN3WTF10PassRefPtrINS_9StructureEEEPS5_ -__ZN3JSC14ErrorPrototypeC2EPNS_9ExecStateEN3WTF10PassRefPtrINS_9StructureEEEPS5_ -__ZN3JSC20NativeErrorPrototypeC2EPNS_9ExecStateEN3WTF10PassRefPtrINS_9StructureEEERKNS_7UStringES9_ -__ZN3JSC17ObjectConstructorC2EPNS_9ExecStateEN3WTF10PassRefPtrINS_9StructureEEEPNS_15ObjectPrototypeE -__ZN3JSC19FunctionConstructorC2EPNS_9ExecStateEN3WTF10PassRefPtrINS_9StructureEEEPNS_17FunctionPrototypeE +__ZN3JSC8JSObject17createInheritorIDEv +__ZN3JSC14ArrayPrototypeC1EN3WTF17NonNullPassRefPtrINS_9StructureEEE +__ZN3JSC7JSArrayC2EN3WTF17NonNullPassRefPtrINS_9StructureEEE +__ZN3JSC15StringPrototypeC1EPNS_9ExecStateEN3WTF17NonNullPassRefPtrINS_9StructureEEE +__ZN3JSC15StringPrototypeC2EPNS_9ExecStateEN3WTF17NonNullPassRefPtrINS_9StructureEEE +__ZN3JSC12StringObjectC2EPNS_9ExecStateEN3WTF17NonNullPassRefPtrINS_9StructureEEE +__ZN3JSC16BooleanPrototypeC1EPNS_9ExecStateEN3WTF17NonNullPassRefPtrINS_9StructureEEEPS5_ +__ZN3JSC16BooleanPrototypeC2EPNS_9ExecStateEN3WTF17NonNullPassRefPtrINS_9StructureEEEPS5_ +__ZN3JSC13BooleanObjectC2EN3WTF17NonNullPassRefPtrINS_9StructureEEE +__ZN3JSC15NumberPrototypeC1EPNS_9ExecStateEN3WTF17NonNullPassRefPtrINS_9StructureEEEPS5_ +__ZN3JSC15NumberPrototypeC2EPNS_9ExecStateEN3WTF17NonNullPassRefPtrINS_9StructureEEEPS5_ +__ZN3JSC12NumberObjectC2EN3WTF17NonNullPassRefPtrINS_9StructureEEE +__ZN3JSC13DatePrototypeC1EPNS_9ExecStateEN3WTF17NonNullPassRefPtrINS_9StructureEEE +__ZN3JSC12DateInstanceC2EPNS_9ExecStateEN3WTF17NonNullPassRefPtrINS_9StructureEEE +__ZN3JSC15RegExpPrototypeC1EPNS_9ExecStateEN3WTF17NonNullPassRefPtrINS_9StructureEEEPS5_ +__ZN3JSC15RegExpPrototypeC2EPNS_9ExecStateEN3WTF17NonNullPassRefPtrINS_9StructureEEEPS5_ +__ZN3JSC14ErrorPrototypeC1EPNS_9ExecStateEN3WTF17NonNullPassRefPtrINS_9StructureEEEPS5_ +__ZN3JSC14ErrorPrototypeC2EPNS_9ExecStateEN3WTF17NonNullPassRefPtrINS_9StructureEEEPS5_ +__ZN3JSC13ErrorInstanceC2EN3WTF17NonNullPassRefPtrINS_9StructureEEE +__ZN3JSC20NativeErrorPrototypeC1EPNS_9ExecStateEN3WTF17NonNullPassRefPtrINS_9StructureEEERKNS_7UStringES9_ +__ZN3JSC20NativeErrorPrototypeC2EPNS_9ExecStateEN3WTF17NonNullPassRefPtrINS_9StructureEEERKNS_7UStringES9_ +__ZN3JSC17ObjectConstructorC1EPNS_9ExecStateEN3WTF17NonNullPassRefPtrINS_9StructureEEEPNS_15ObjectPrototypeEPS5_ +__ZN3JSC17ObjectConstructorC2EPNS_9ExecStateEN3WTF17NonNullPassRefPtrINS_9StructureEEEPNS_15ObjectPrototypeEPS5_ +__ZN3JSC10Identifier3addEPNS_9ExecStateEPKc +__ZN3JSC19FunctionConstructorC1EPNS_9ExecStateEN3WTF17NonNullPassRefPtrINS_9StructureEEEPNS_17FunctionPrototypeE +__ZN3JSC19FunctionConstructorC2EPNS_9ExecStateEN3WTF17NonNullPassRefPtrINS_9StructureEEEPNS_17FunctionPrototypeE __ZNK3JSC16InternalFunction9classInfoEv -__ZN3JSC16ArrayConstructorC2EPNS_9ExecStateEN3WTF10PassRefPtrINS_9StructureEEEPNS_14ArrayPrototypeE +__ZN3JSC16ArrayConstructorC1EPNS_9ExecStateEN3WTF17NonNullPassRefPtrINS_9StructureEEEPNS_14ArrayPrototypeEPS5_ +__ZN3JSC16ArrayConstructorC2EPNS_9ExecStateEN3WTF17NonNullPassRefPtrINS_9StructureEEEPNS_14ArrayPrototypeEPS5_ __ZNK3JSC14ArrayPrototype9classInfoEv -__ZN3JSC17StringConstructorC2EPNS_9ExecStateEN3WTF10PassRefPtrINS_9StructureEEEPS5_PNS_15StringPrototypeE +__ZN3JSC17StringConstructorC1EPNS_9ExecStateEN3WTF17NonNullPassRefPtrINS_9StructureEEEPS5_PNS_15StringPrototypeE +__ZN3JSC17StringConstructorC2EPNS_9ExecStateEN3WTF17NonNullPassRefPtrINS_9StructureEEEPS5_PNS_15StringPrototypeE __ZNK3JSC15StringPrototype9classInfoEv -__ZN3JSC18BooleanConstructorC2EPNS_9ExecStateEN3WTF10PassRefPtrINS_9StructureEEEPNS_16BooleanPrototypeE +__ZN3JSC9JITThunks16specializedThunkEPNS_12JSGlobalDataEPFN3WTF10PassRefPtrINS_16NativeExecutableEEES2_PNS_14ExecutablePoolEE +__ZN3JSC26fromCharCodeThunkGeneratorEPNS_12JSGlobalDataEPNS_14ExecutablePoolE +__ZN3JSC22AbstractMacroAssemblerINS_12X86AssemblerEE8JumpList6appendENS2_4JumpE +__ZN3JSCL12charToStringERNS_19SpecializedThunkJITEPNS_12JSGlobalDataENS_12X86Registers10RegisterIDES5_S5_ +__ZN3JSC19SpecializedThunkJIT8finalizeEv +__ZN3JSC10JSFunctionC1EPNS_9ExecStateEN3WTF17NonNullPassRefPtrINS_9StructureEEEiRKNS_10IdentifierEPNS_16NativeExecutableEPFNS_7 +__ZN3JSC10JSFunctionC2EPNS_9ExecStateEN3WTF17NonNullPassRefPtrINS_9StructureEEEiRKNS_10IdentifierEPNS_16NativeExecutableEPFNS_7 +__ZN3JSC8JSObject23allocatePropertyStorageEmm +__ZN3JSC18BooleanConstructorC1EPNS_9ExecStateEN3WTF17NonNullPassRefPtrINS_9StructureEEEPNS_16BooleanPrototypeE +__ZN3JSC18BooleanConstructorC2EPNS_9ExecStateEN3WTF17NonNullPassRefPtrINS_9StructureEEEPNS_16BooleanPrototypeE __ZNK3JSC13BooleanObject9classInfoEv -__ZN3JSC17NumberConstructorC2EPNS_9ExecStateEN3WTF10PassRefPtrINS_9StructureEEEPNS_15NumberPrototypeE -__ZN3JSC15DateConstructorC2EPNS_9ExecStateEN3WTF10PassRefPtrINS_9StructureEEEPS5_PNS_13DatePrototypeE +__ZN3JSC17NumberConstructorC1EPNS_9ExecStateEN3WTF17NonNullPassRefPtrINS_9StructureEEEPNS_15NumberPrototypeE +__ZN3JSC17NumberConstructorC2EPNS_9ExecStateEN3WTF17NonNullPassRefPtrINS_9StructureEEEPNS_15NumberPrototypeE +__ZN3JSC15DateConstructorC1EPNS_9ExecStateEN3WTF17NonNullPassRefPtrINS_9StructureEEEPS5_PNS_13DatePrototypeE +__ZN3JSC15DateConstructorC2EPNS_9ExecStateEN3WTF17NonNullPassRefPtrINS_9StructureEEEPS5_PNS_13DatePrototypeE __ZNK3JSC13DatePrototype9classInfoEv -__ZN3JSC17RegExpConstructorC2EPNS_9ExecStateEN3WTF10PassRefPtrINS_9StructureEEEPNS_15RegExpPrototypeE -__ZN3JSC16ErrorConstructorC2EPNS_9ExecStateEN3WTF10PassRefPtrINS_9StructureEEEPNS_14ErrorPrototypeE +__ZN3JSC17RegExpConstructorC1EPNS_9ExecStateEN3WTF17NonNullPassRefPtrINS_9StructureEEEPNS_15RegExpPrototypeE +__ZN3JSC17RegExpConstructorC2EPNS_9ExecStateEN3WTF17NonNullPassRefPtrINS_9StructureEEEPNS_15RegExpPrototypeE +__ZN3JSC16ErrorConstructorC1EPNS_9ExecStateEN3WTF17NonNullPassRefPtrINS_9StructureEEEPNS_14ErrorPrototypeE +__ZN3JSC16ErrorConstructorC2EPNS_9ExecStateEN3WTF17NonNullPassRefPtrINS_9StructureEEEPNS_14ErrorPrototypeE __ZNK3JSC13ErrorInstance9classInfoEv -__ZN3JSC22NativeErrorConstructorC2EPNS_9ExecStateEN3WTF10PassRefPtrINS_9StructureEEEPNS_20NativeErrorPrototypeE -__ZN3JSC10Identifier11addSlowCaseEPNS_12JSGlobalDataEPNS_7UString3RepE -__ZN3WTF7HashSetIPN3JSC7UString3RepENS_7StrHashIS4_EENS_10HashTraitsIS4_EEE3addERKS4_ -__ZN3JSC10MathObjectC2EPNS_9ExecStateEN3WTF10PassRefPtrINS_9StructureEEE +__ZN3JSC22NativeErrorConstructorC1EPNS_9ExecStateEN3WTF17NonNullPassRefPtrINS_9StructureEEEPNS_20NativeErrorPrototypeE +__ZN3JSC22NativeErrorConstructorC2EPNS_9ExecStateEN3WTF17NonNullPassRefPtrINS_9StructureEEEPNS_20NativeErrorPrototypeE +__ZNK3JSC6JSCell9getStringEPNS_9ExecStateE +__ZN3JSC10Identifier11addSlowCaseEPNS_9ExecStateEPN7WebCore10StringImplE +__ZN3WTF7HashSetIPN7WebCore10StringImplENS1_10StringHashENS_10HashTraitsIS3_EEE3addERKS3_ +__ZN3JSC10MathObjectC1EPNS_9ExecStateEN3WTF17NonNullPassRefPtrINS_9StructureEEE +__ZN3JSC10MathObjectC2EPNS_9ExecStateEN3WTF17NonNullPassRefPtrINS_9StructureEEE __ZN3JSC12SmallStrings24singleCharacterStringRepEh -__ZN3WTF7HashMapINS_6RefPtrIN3JSC7UString3RepEEENS2_16SymbolTableEntryENS2_17IdentifierRepHashENS_10HashTraitsIS5_EENS2_26Symbo -__ZN3WTF9HashTableINS_6RefPtrIN3JSC7UString3RepEEESt4pairIS5_NS2_16SymbolTableEntryEENS_18PairFirstExtractorIS8_EENS2_17Identif -__ZN3JSC17PrototypeFunctionC2EPNS_9ExecStateEN3WTF10PassRefPtrINS_9StructureEEEiRKNS_10IdentifierEPFNS_7JSValueES2_PNS_8JSObjec +__ZN3JSC19SmallStringsStorageC2Ev +__ZN3JSC18GlobalEvalFunctionC1EPNS_9ExecStateEN3WTF17NonNullPassRefPtrINS_9StructureEEEiRKNS_10IdentifierEPFNS_7JSValueES2_PNS_ +__ZN3JSC17PrototypeFunctionC2EPNS_9ExecStateEN3WTF17NonNullPassRefPtrINS_9StructureEEEiRKNS_10IdentifierEPFNS_7JSValueES2_PNS_8 __ZN3JSC9Structure25changePrototypeTransitionEPS0_NS_7JSValueE __ZN3JSC9Structure17copyPropertyTableEv +__ZN3WTF10RefCountedIN3JSC9StructureEE5derefEv __ZN3JSC14JSGlobalObject10globalExecEv -__ZN3JSC10Identifier3addEPNS_9ExecStateEPKc __ZN3JSC4Heap9unprotectENS_7JSValueE -__ZN3JSC6JSCellnwEmPNS_9ExecStateE __ZN3JSC14TimeoutChecker5resetEv __ZN3JSC8evaluateEPNS_9ExecStateERNS_10ScopeChainERKNS_10SourceCodeENS_7JSValueE -__ZN3JSC6JSLock4lockEb -__ZN3JSC6Parser5parseINS_11ProgramNodeEEEN3WTF10PassRefPtrIT_EEPNS_9ExecStateEPNS_8DebuggerERKNS_10SourceCodeEPiPNS_7UStringE +__ZN3JSC6JSLockC1EPNS_9ExecStateE +__ZN3JSC6JSLock4lockENS_14JSLockBehaviorE +__ZN3JSC17ProgramExecutable7compileEPNS_9ExecStateEPNS_14ScopeChainNodeE +__ZN3JSC6Parser5parseINS_11ProgramNodeEEEN3WTF10PassRefPtrIT_EEPNS_12JSGlobalDataEPNS_8DebuggerEPNS_9ExecStateERKNS_10SourceCod __ZN3JSC6Parser5parseEPNS_12JSGlobalDataEPiPNS_7UStringE -__ZN3JSC7UStringaSEPKc +__ZN3JSC5Lexer7setCodeERKNS_10SourceCodeERNS_11ParserArenaE __Z10jscyyparsePv __ZN3JSC5Lexer3lexEPvS1_ __ZN3JSC10Identifier3addEPNS_12JSGlobalDataEPKti -__ZN3WTF7HashSetIPN3JSC7UString3RepENS_7StrHashIS4_EENS_10HashTraitsIS4_EEE3addINS1_11UCharBufferENS1_21UCharBufferTranslatorEE -__ZN3WTF15SegmentedVectorINS_10IdentifierELm64EE6appendIS1_EEvRKT_ +__ZN3WTF7HashSetIPN7WebCore10StringImplENS1_10StringHashENS_10HashTraitsIS3_EEE3addIN3JSC11UCharBufferENS9_31IdentifierUCharBuf __ZNK3JSC9HashTable11createTableEPNS_12JSGlobalDataE -__ZN3JSC20ParserArenaDeletablenwEmPNS_12JSGlobalDataE -__ZN3WTF6VectorIPN3JSC20ParserArenaDeletableELm0EE15reserveCapacityEm -__ZN3JSC5Lexer10sourceCodeEiii -__ZN3JSC16FunctionBodyNode13finishParsingERKNS_10SourceCodeEPNS_13ParameterNodeE -__ZN3WTF6VectorIN3JSC10IdentifierELm0EE14expandCapacityEm -__ZN3WTF6VectorIPN3JSC12FuncDeclNodeELm0EE14expandCapacityEm +__ZN3JSC11ParserArena20allocateFreeablePoolEv +__ZL20makeFunctionCallNodePN3JSC12JSGlobalDataENS_8NodeInfoIPNS_14ExpressionNodeEEENS2_IPNS_13ArgumentsNodeEEEiii +__ZNK3JSC15DotAccessorNode10isLocationEv +__ZNK3JSC14ExpressionNode13isResolveNodeEv +__ZNK3JSC14ExpressionNode21isBracketAccessorNodeEv +__ZL14makeAssignNodePN3JSC12JSGlobalDataEPNS_14ExpressionNodeENS_8OperatorES3_bbiii +__ZNK3JSC11ResolveNode10isLocationEv +__ZNK3JSC11ResolveNode13isResolveNodeEv +__ZN3JSC13StatementNode6setLocEii +__ZN3WTF6VectorIPN3JSC20ParserArenaDeletableELm0EE14expandCapacityEm __ZN3JSC14SourceElements6appendEPNS_13StatementNodeE __ZNK3JSC13StatementNode16isEmptyStatementEv __ZN3WTF6VectorIPN3JSC13StatementNodeELm0EE14expandCapacityEm -__ZL20makeFunctionCallNodePvN3JSC8NodeInfoIPNS0_14ExpressionNodeEEENS1_IPNS0_13ArgumentsNodeEEEiii -__ZNK3JSC11ResolveNode10isLocationEv -__ZNK3JSC11ResolveNode13isResolveNodeEv -__ZN3JSC5Lexer7record8Ei -__ZN3JSC5Lexer10scanRegExpEv -__ZN3JSC7UStringC2ERKN3WTF6VectorItLm0EEE -__ZN3JSC7UString3Rep7destroyEv +__ZN3JSC6Parser16didFinishParsingEPNS_14SourceElementsEPNS_15ParserArenaDataIN3WTF6VectorISt4pairIPKNS_10IdentifierEjELm0EEEEEP __ZN3JSC5Lexer5clearEv -__ZN3JSC10Identifier6removeEPNS_7UString3RepE -__ZN3WTF6VectorIN3JSC10IdentifierELm64EE14shrinkCapacityEm -__ZN3JSC9ScopeNodeC2EPNS_12JSGlobalDataERKNS_10SourceCodeEPNS_14SourceElementsEPN3WTF6VectorISt4pairINS_10IdentifierEjELm0EEEPN -__ZN3WTF6VectorIPN3JSC13StatementNodeELm0EE14shrinkCapacityEm +__ZN3JSC11ProgramNode6createEPNS_12JSGlobalDataEPNS_14SourceElementsEPN3WTF6VectorISt4pairIPKNS_10IdentifierEjELm0EEEPNS6_IPNS_ +__ZN3JSC9ScopeNodeC2EPNS_12JSGlobalDataERKNS_10SourceCodeEPNS_14SourceElementsEPN3WTF6VectorISt4pairIPKNS_10IdentifierEjELm0EEE +__ZN3JSC11ParserArena14derefWithArenaEN3WTF10PassRefPtrINS_21ParserArenaRefCountedEEE __ZN3JSC11ParserArena10removeLastEv -__ZNK3JSC8JSObject8toObjectEPNS_9ExecStateE -__ZN3JSC11Interpreter7executeEPNS_11ProgramNodeEPNS_9ExecStateEPNS_14ScopeChainNodeEPNS_8JSObjectEPNS_7JSValueE -__ZN3JSC11ProgramNode16generateBytecodeEPNS_14ScopeChainNodeE -__ZN3JSC9CodeBlockC2EPNS_9ScopeNodeENS_8CodeTypeEN3WTF10PassRefPtrINS_14SourceProviderEEEj -__ZN3WTF7HashSetIPN3JSC16ProgramCodeBlockENS_7PtrHashIS3_EENS_10HashTraitsIS3_EEE3addERKS3_ -__ZN3WTF9HashTableIPN3JSC16ProgramCodeBlockES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E6rehashEi -__ZN3JSC17BytecodeGeneratorC2EPNS_11ProgramNodeEPKNS_8DebuggerERKNS_10ScopeChainEPN3WTF7HashMapINS9_6RefPtrINS_7UString3RepEEEN -__ZN3WTF6VectorIN3JSC11InstructionELm0EE14expandCapacityEm -__ZN3JSC9Structure22toDictionaryTransitionEPS0_ -__ZN3JSC8JSObject12removeDirectERKNS_10IdentifierE -__ZN3JSC9Structure31removePropertyWithoutTransitionERKNS_10IdentifierE -__ZN3JSC9Structure6removeERKNS_10IdentifierE -__ZN3JSC17BytecodeGenerator12addGlobalVarERKNS_10IdentifierEbRPNS_10RegisterIDE -__ZN3JSC17BytecodeGenerator15emitNewFunctionEPNS_10RegisterIDEPNS_12FuncDeclNodeE -__ZN3JSC9CodeBlock25createRareDataIfNecessaryEv -__ZN3JSC17BytecodeGenerator11newRegisterEv -__ZN3JSC9Structure24fromDictionaryTransitionEPS0_ +__ZN3JSC11ParserArena5resetEv +__ZN3WTF6VectorIN3JSC10IdentifierELm64EE14shrinkCapacityEm +__ZN3JSC9CodeBlockC2EPNS_16ScriptExecutableENS_8CodeTypeEN3WTF10PassRefPtrINS_14SourceProviderEEEjPNS4_7HashMapINS4_6RefPtrIN7W +__ZN3WTF7HashSetIPN3JSC15GlobalCodeBlockENS_7PtrHashIS3_EENS_10HashTraitsIS3_EEE3addERKS3_ +__ZN3WTF9HashTableIPN3JSC15GlobalCodeBlockES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E6rehashEi +__ZN3JSC17BytecodeGeneratorC1EPNS_11ProgramNodeEPKNS_8DebuggerERKNS_10ScopeChainEPN3WTF7HashMapINS9_6RefPtrIN7WebCore10StringIm +__ZN3JSC17BytecodeGeneratorC2EPNS_11ProgramNodeEPKNS_8DebuggerERKNS_10ScopeChainEPN3WTF7HashMapINS9_6RefPtrIN7WebCore10StringIm +__ZN3WTF6VectorIN3JSC11InstructionELm0EE15reserveCapacityEm +__ZN3JSC9Structure31toCacheableDictionaryTransitionEPS0_ +__ZN3JSC9Structure22toDictionaryTransitionEPS0_NS0_14DictionaryKindE +__ZN3JSC9Structure26flattenDictionaryStructureEPNS_8JSObjectE __ZN3JSC17BytecodeGenerator8generateEv __ZN3JSC11ProgramNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE __ZN3JSC17BytecodeGenerator13emitDebugHookENS_11DebugHookIDEii -__ZN3JSC17BytecodeGenerator11addConstantENS_7JSValueE -__ZN3WTF9HashTableIPvSt4pairIS1_jENS_18PairFirstExtractorIS3_EENS_7PtrHashIS1_EENS_14PairHashTraitsIN3JSC17JSValueHashTraitsENS -__ZN3WTF6VectorIN3JSC8RegisterELm0EE14expandCapacityEm -__ZN3JSC17BytecodeGenerator8emitMoveEPNS_10RegisterIDES2_ -__ZN3JSC17BytecodeGenerator8emitNodeEPNS_10RegisterIDEPNS_4NodeE +__ZN3JSC17BytecodeGenerator12newTemporaryEv +__ZN3JSC17BytecodeGenerator11newRegisterEv +__ZN3JSC17BytecodeGenerator8emitLoadEPNS_10RegisterIDENS_7JSValueE +__ZN3JSC17BytecodeGenerator16addConstantValueENS_7JSValueE +__ZN3WTF9HashTableIPvSt4pairIS1_jENS_18PairFirstExtractorIS3_EENS_7PtrHashIS1_EENS_14PairHashTraitsIN3JSC24EncodedJSValueHashTr +__ZN3WTF6VectorIN3JSC8RegisterELm0EE15reserveCapacityEm __ZN3WTF6VectorIN3JSC8LineInfoELm0EE14expandCapacityEm -__ZN3JSC12FuncDeclNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE __ZN3JSC17ExprStatementNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE -__ZN3JSC23FunctionCallResolveNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE +__ZN3JSC17AssignResolveNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE __ZN3JSC17BytecodeGenerator11registerForERKNS_10IdentifierE -__ZN3JSC17BytecodeGenerator8emitCallENS_8OpcodeIDEPNS_10RegisterIDES3_S3_PNS_13ArgumentsNodeEjjj -__ZN3JSC16ArgumentListNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE -__ZN3JSC12FuncExprNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE -__ZN3JSC17BytecodeGenerator25emitNewFunctionExpressionEPNS_10RegisterIDEPNS_12FuncExprNodeE -__ZN3WTF6VectorIN3JSC19ExpressionRangeInfoELm0EE14expandCapacityEm -__ZN3WTF6VectorIN3JSC12CallLinkInfoELm0EE14expandCapacityEm +__ZN3JSC17BytecodeGenerator18findScopedPropertyERKNS_10IdentifierERiRmbRbRPNS_8JSObjectE +__ZN3JSC17BytecodeGenerator15emitResolveBaseEPNS_10RegisterIDERKNS_10IdentifierE +__ZN3JSC19FunctionCallDotNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE +__ZN3JSC11NewExprNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE __ZN3JSC11ResolveNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE +__ZN3WTF6VectorIN3JSC19ExpressionRangeInfoELm0EE14expandCapacityEm +__ZN3JSC17BytecodeGenerator11emitResolveEPNS_10RegisterIDERKNS_10IdentifierE +__ZN3WTF6VectorIN3JSC17GlobalResolveInfoELm0EE14expandCapacityEm +__ZN3JSC17BytecodeGenerator11addConstantERKNS_10IdentifierE +__ZN3WTF9HashTableINS_6RefPtrIN7WebCore10StringImplEEESt4pairIS4_iENS_18PairFirstExtractorIS6_EEN3JSC17IdentifierRepHashENS_14P +__ZN3WTF6VectorIN3JSC10IdentifierELm0EE14expandCapacityEmPKS2_ +__ZN3WTF6VectorIN3JSC10IdentifierELm0EE15reserveCapacityEm +__ZN3JSC17BytecodeGenerator13emitConstructEPNS_10RegisterIDES2_PNS_13ArgumentsNodeEjjj +__ZN3WTF6VectorIN3JSC20GetByIdExceptionInfoELm0EE14expandCapacityEm +__ZN3JSC17BytecodeGenerator11emitGetByIdEPNS_10RegisterIDES2_RKNS_10IdentifierE +__ZN3WTF6VectorIN3JSC17StructureStubInfoELm0EE14expandCapacityEm +__ZN3WTF6VectorIN3JSC12CallLinkInfoELm0EE15reserveCapacityEm +__ZN3JSC17BytecodeGenerator15emitMethodCheckEv +__ZN3JSC17BytecodeGenerator8emitCallEPNS_10RegisterIDES2_S2_PNS_13ArgumentsNodeEjjj +__ZN3JSC17BytecodeGenerator8emitCallENS_8OpcodeIDEPNS_10RegisterIDES3_S3_PNS_13ArgumentsNodeEjjj +__ZN3JSC17BytecodeGenerator11emitPutByIdEPNS_10RegisterIDERKNS_10IdentifierES2_ +__ZN3JSC17BytecodeGenerator16emitUnaryNoDstOpENS_8OpcodeIDEPNS_10RegisterIDE __ZN3JSC12JSGlobalData22numericCompareFunctionEPNS_9ExecStateE __ZNK3JSC21UStringSourceProvider6lengthEv +__ZN3JSC18FunctionExecutable14fromGlobalCodeERKNS_10IdentifierEPNS_9ExecStateEPNS_8DebuggerERKNS_10SourceCodeEPiPNS_7UStringE __ZNK3JSC21UStringSourceProvider4dataEv -__ZN3JSC19extractFunctionBodyEPNS_11ProgramNodeE +__ZN3JSC16FunctionBodyNode6createEPNS_12JSGlobalDataE +__ZN3JSC5Lexer10sourceCodeEiii +__ZN3JSC16FunctionBodyNode13finishParsingERKNS_10SourceCodeEPNS_13ParameterNodeERKNS_10IdentifierE +__ZN3WTF6VectorIN3JSC10IdentifierELm0EE14expandCapacityEm +__ZN3JSC16FunctionBodyNode13finishParsingEN3WTF10PassRefPtrINS_18FunctionParametersEEERKNS_10IdentifierE +__ZNK3JSC9ScopeNode15singleStatementEv __ZNK3JSC17ExprStatementNode15isExprStatementEv __ZNK3JSC12FuncExprNode14isFuncExprNodeEv -__ZN3JSC16FunctionBodyNode16generateBytecodeEPNS_14ScopeChainNodeE -__ZN3JSC6Parser14reparseInPlaceEPNS_12JSGlobalDataEPNS_16FunctionBodyNodeE -__ZL11makeSubNodePvPN3JSC14ExpressionNodeES2_b +__ZThn16_N3JSC11ProgramNodeD0Ev +__ZN3JSC11ProgramNodeD0Ev +__ZN3JSC11ParserArenaD1Ev +__ZN3JSC14SourceElementsD1Ev +__ZThn16_N3JSC16FunctionBodyNodeD0Ev +__ZN3JSC16FunctionBodyNodeD0Ev +__ZN3JSC18FunctionExecutable7compileEPNS_9ExecStateEPNS_14ScopeChainNodeE +__ZN3JSC6Parser5parseINS_16FunctionBodyNodeEEEN3WTF10PassRefPtrIT_EEPNS_12JSGlobalDataEPNS_8DebuggerEPNS_9ExecStateERKNS_10Sour +__ZL11makeSubNodePN3JSC12JSGlobalDataEPNS_14ExpressionNodeES3_b __ZN3JSC14ExpressionNode14stripUnaryPlusEv __ZNK3JSC14ExpressionNode8isNumberEv -__ZN3JSC9CodeBlockC1EPNS_9ScopeNodeENS_8CodeTypeEN3WTF10PassRefPtrINS_14SourceProviderEEEj -__ZN3JSC17BytecodeGeneratorC2EPNS_16FunctionBodyNodeEPKNS_8DebuggerERKNS_10ScopeChainEPN3WTF7HashMapINS9_6RefPtrINS_7UString3Re +__ZN3JSC16FunctionBodyNode6createEPNS_12JSGlobalDataEPNS_14SourceElementsEPN3WTF6VectorISt4pairIPKNS_10IdentifierEjELm0EEEPNS6_ +__ZN3JSC17BytecodeGeneratorC1EPNS_16FunctionBodyNodeEPKNS_8DebuggerERKNS_10ScopeChainEPN3WTF7HashMapINS9_6RefPtrIN7WebCore10Str +__ZN3JSC17BytecodeGeneratorC2EPNS_16FunctionBodyNodeEPKNS_8DebuggerERKNS_10ScopeChainEPN3WTF7HashMapINS9_6RefPtrIN7WebCore10Str __ZN3JSC17BytecodeGenerator12addParameterERKNS_10IdentifierE __ZN3JSC16FunctionBodyNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE __ZN3JSC9BlockNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE __ZN3JSC10ReturnNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE __ZN3JSC12BinaryOpNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE __ZNK3JSC11ResolveNode6isPureERNS_17BytecodeGeneratorE -__ZN3JSC17BytecodeGenerator12newTemporaryEv +__ZN3JSC17BytecodeGenerator7isLocalERKNS_10IdentifierE __ZN3JSC17BytecodeGenerator12emitBinaryOpENS_8OpcodeIDEPNS_10RegisterIDES3_S3_NS_12OperandTypesE __ZN3JSC17BytecodeGenerator10emitReturnEPNS_10RegisterIDE __ZNK3JSC9BlockNode7isBlockEv __ZNK3JSC10ReturnNode12isReturnNodeEv __ZN3JSC9CodeBlock11shrinkToFitEv __ZN3WTF6VectorIN3JSC11InstructionELm0EE14shrinkCapacityEm -__ZN3WTF6VectorIN3JSC17StructureStubInfoELm0EE14shrinkCapacityEm __ZN3WTF6VectorIPN3JSC12CallLinkInfoELm0EE14shrinkCapacityEm __ZN3WTF6VectorIN3JSC10IdentifierELm0EE14shrinkCapacityEm -__ZN3JSC11ParserArenaD1Ev -__ZN3JSC11ResolveNodeD0Ev -__ZN3JSC7SubNodeD0Ev -__ZN3JSC10ReturnNodeD0Ev -__ZN3JSC14SourceElementsD0Ev -__ZN3JSC9BlockNodeD0Ev __ZN3JSC17BytecodeGeneratorD2Ev __ZN3WTF6VectorIN3JSC11InstructionELm0EEaSERKS3_ -__ZThn16_N3JSC11ProgramNodeD0Ev -__ZN3JSC11ProgramNodeD0Ev -__ZN3JSC13ParameterNodeD0Ev -__ZN3JSC17ExprStatementNodeD0Ev -__ZThn16_N3JSC12FuncExprNodeD0Ev -__ZN3JSC12FuncExprNodeD0Ev -__ZThn16_N3JSC16FunctionBodyNodeD0Ev -__ZN3JSC16FunctionBodyNodeD0Ev -__ZN3JSC9CodeBlockD1Ev +__ZN3JSC18FunctionExecutableD0Ev +__ZN3JSC17FunctionCodeBlockD0Ev __ZN3JSC9CodeBlockD2Ev __ZN3JSC21UStringSourceProviderD0Ev -__ZN3WTF6VectorIN3JSC19ExpressionRangeInfoELm0EE14shrinkCapacityEm -__ZN3WTF6VectorIN3JSC8LineInfoELm0EE14shrinkCapacityEm -__ZN3WTF6VectorINS_6RefPtrIN3JSC12FuncDeclNodeEEELm0EE14shrinkCapacityEm -__ZN3WTF6VectorIN3JSC15SimpleJumpTableELm0EE14shrinkCapacityEm -__ZN3WTF6VectorIN3JSC15StringJumpTableELm0EE14shrinkCapacityEm -__ZN3JSC15ParserArenaDataIN3WTF6VectorIPNS_12FuncDeclNodeELm0EEEED0Ev -__ZN3JSC16ArgumentListNodeD0Ev -__ZN3JSC13ArgumentsNodeD0Ev -__ZN3JSC23FunctionCallResolveNodeD0Ev +__ZNK3JSC8JSObject8toObjectEPNS_9ExecStateE +__ZN3JSC11Interpreter7executeEPNS_17ProgramExecutableEPNS_9ExecStateEPNS_14ScopeChainNodeEPNS_8JSObjectEPNS_7JSValueE +__ZN3JSC12JSGlobalData14resetDateCacheEv +__ZN3JSC12RegisterFile12globalObjectEv __ZN3JSC14JSGlobalObject13copyGlobalsToERNS_12RegisterFileE +__ZN3JSC12RegisterFile15setGlobalObjectEPNS_14JSGlobalObjectE +__ZN3JSC17ProgramExecutable15generateJITCodeEPNS_9ExecStateEPNS_14ScopeChainNodeE __ZN3JSC3JIT14privateCompileEv __ZN3JSC3JIT22privateCompileMainPassEv __ZN3JSC3JIT13emit_op_enterEPNS_11InstructionE -__ZN3JSC3JIT16emit_op_new_funcEPNS_11InstructionE -__ZN3JSC20MacroAssemblerX86_648storePtrENS_22AbstractMacroAssemblerINS_12X86AssemblerEE6ImmPtrENS3_15ImplicitAddressE -__ZN3JSC11JITStubCall4callEj -__ZN3WTF6VectorIN3JSC10CallRecordELm0EE14expandCapacityEm __ZN3JSC3JIT11emit_op_movEPNS_11InstructionE -__ZN3JSC3JIT20emit_op_new_func_expEPNS_11InstructionE -__ZN3JSC3JIT12emit_op_callEPNS_11InstructionE -__ZN3JSC3JIT13compileOpCallENS_8OpcodeIDEPNS_11InstructionEj +__ZN3JSC3JIT22emit_op_resolve_globalEPNS_11InstructionEb +__ZN3JSC23MacroAssemblerX86Common4moveENS_12X86Registers10RegisterIDES2_ +__ZN3WTF6VectorIN3JSC13SlowCaseEntryELm0EE14expandCapacityEmPKS2_ __ZN3WTF6VectorIN3JSC13SlowCaseEntryELm0EE14expandCapacityEm -__ZN3JSC3JIT11emit_op_endEPNS_11InstructionE +__ZN3JSC3JIT17emit_op_get_by_idEPNS_11InstructionE +__ZN3JSC3JIT21compileGetByIdHotPathEiiPNS_10IdentifierEj +__ZN3JSC3JIT17emit_op_constructEPNS_11InstructionE +__ZN3JSC3JIT13compileOpCallENS_8OpcodeIDEPNS_11InstructionEj __ZN3JSC11JITStubCall4callEv +__ZN3WTF6VectorIN3JSC10CallRecordELm0EE14expandCapacityEm +__ZN3JSC3JIT24emit_op_construct_verifyEPNS_11InstructionE +__ZN3JSC3JIT20emit_op_method_checkEPNS_11InstructionE +__ZN3WTF6VectorIN3JSC25MethodCallCompilationInfoELm0EE14expandCapacityEm +__ZN3JSC3JIT12emit_op_callEPNS_11InstructionE +__ZN3JSC3JIT17emit_op_put_by_idEPNS_11InstructionE +__ZN3JSC3JIT11emit_op_endEPNS_11InstructionE __ZN3WTF6VectorIN3JSC9JumpTableELm0EE14shrinkCapacityEm __ZN3JSC3JIT23privateCompileSlowCasesEv -__ZN3JSC3JIT16emitSlow_op_callEPNS_11InstructionERPNS_13SlowCaseEntryE +__ZN3JSC3JIT26emitSlow_op_resolve_globalEPNS_11InstructionERPNS_13SlowCaseEntryE +__ZN3JSC20MacroAssemblerX86_648storePtrENS_22AbstractMacroAssemblerINS_12X86AssemblerEE6ImmPtrENS3_15ImplicitAddressE +__ZN3JSC11JITStubCall4callEj +__ZN3JSC3JIT21emitSlow_op_get_by_idEPNS_11InstructionERPNS_13SlowCaseEntryE +__ZN3JSC3JIT22compileGetByIdSlowCaseEiiPNS_10IdentifierERPNS_13SlowCaseEntryEb +__ZN3JSC3JIT21emitSlow_op_constructEPNS_11InstructionERPNS_13SlowCaseEntryE __ZN3JSC3JIT21compileOpCallSlowCaseEPNS_11InstructionERPNS_13SlowCaseEntryEjNS_8OpcodeIDE +__ZN3JSC3JIT27compileOpConstructSetupArgsEPNS_11InstructionE +__ZN3JSC3JIT28emitSlow_op_construct_verifyEPNS_11InstructionERPNS_13SlowCaseEntryE +__ZN3JSC3JIT24emitSlow_op_method_checkEPNS_11InstructionERPNS_13SlowCaseEntryE +__ZN3JSC3JIT16emitSlow_op_callEPNS_11InstructionERPNS_13SlowCaseEntryE __ZN3JSC3JIT22compileOpCallSetupArgsEPNS_11InstructionE -__ZN3JSC9CodeBlock10setJITCodeERNS_10JITCodeRefE +__ZN3JSC3JIT21emitSlow_op_put_by_idEPNS_11InstructionERPNS_13SlowCaseEntryE +__ZN3WTF6VectorIN3JSC18MethodCallLinkInfoELm0EE14expandCapacityEm __ZN3JSC17BytecodeGenerator18dumpsGeneratedCodeEv -__ZN3WTF10RefCountedIN3JSC14ExecutablePoolEE5derefEv _ctiTrampoline -__ZN3JSC8JITStubs15cti_op_new_funcEPPv -__ZN3JSC12FuncDeclNode12makeFunctionEPNS_9ExecStateEPNS_14ScopeChainNodeE -__ZN3JSC8JITStubs19cti_op_new_func_expEPPv -__ZN3JSC12FuncExprNode12makeFunctionEPNS_9ExecStateEPNS_14ScopeChainNodeE -__ZN3JSC8JITStubs22cti_op_call_JSFunctionEPPv -__ZN3JSC16FunctionBodyNode15generateJITCodeEPNS_14ScopeChainNodeE -__ZN3JSC10IfElseNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE -__ZN3JSC17BytecodeGenerator8newLabelEv +_cti_op_resolve_global +_cti_op_get_by_id +__ZNK3JSC7JSValue3getEPNS_9ExecStateERKNS_10IdentifierERNS_12PropertySlotE +_cti_op_construct_NotJSConstruct +__ZN3JSC15DateConstructor16getConstructDataERNS_13ConstructDataE +__ZN3JSCL28constructWithDateConstructorEPNS_9ExecStateEPNS_8JSObjectERKNS_7ArgListE +__ZN3JSC13constructDateEPNS_9ExecStateERKNS_7ArgListE +__ZN3JSC12DateInstanceC1EPNS_9ExecStateEd +__ZN3JSC12DateInstanceC2EPNS_9ExecStateEd +__ZN3WTF8timeClipEd +_cti_op_get_by_id_method_check +__ZN3JSC13DatePrototype18getOwnPropertySlotEPNS_9ExecStateERKNS_10IdentifierERNS_12PropertySlotE +__ZN3JSC23setUpStaticFunctionSlotEPNS_9ExecStateEPKNS_9HashEntryEPNS_8JSObjectERKNS_10IdentifierERNS_12PropertySlotE +__ZN3JSC9Structure13hasTransitionEPN7WebCore10StringImplEj +_cti_vm_lazyLinkCall +__ZN3JSCL20dateProtoFuncGetTimeEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZNK3JSC12DateInstance9classInfoEv +_cti_op_put_by_id +__ZN3JSC14JSGlobalObject3putEPNS_9ExecStateERKNS_10IdentifierENS_7JSValueERNS_15PutPropertySlotE +__ZN3JSC8JSObject3putEPNS_9ExecStateERKNS_10IdentifierENS_7JSValueERNS_15PutPropertySlotE +__ZN3JSC17ProgramExecutableD0Ev +__ZN3JSC16ProgramCodeBlockD0Ev +__ZN3WTF9HashTableIPN3JSC15GlobalCodeBlockES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E4findIS3_NS +__ZN3JSC17StructureStubInfo5derefEv +__ZN7WebCore6String8truncateEj +__ZN3JSC5Lexer10skipRegExpEv +__ZNK3JSC14ExpressionNode10isLocationEv +__ZN3WTF6VectorIPN3JSC16FunctionBodyNodeELm0EE14expandCapacityEm +__ZNK3JSC18EmptyStatementNode16isEmptyStatementEv +__ZN3WTF6VectorISt4pairIPKN3JSC10IdentifierEjELm0EE14expandCapacityEm +__ZN3JSC8JSObject12removeDirectERKNS_10IdentifierE +__ZN3JSC9Structure24removePropertyTransitionEPS0_RKNS_10IdentifierERm +__ZN3JSC9Structure6removeERKNS_10IdentifierE +__ZN3JSC17BytecodeGenerator12addGlobalVarERKNS_10IdentifierEbRPNS_10RegisterIDE +__ZN3JSC17BytecodeGenerator15emitNewFunctionEPNS_10RegisterIDEPNS_16FunctionBodyNodeE +__ZN3WTF6VectorINS_6RefPtrIN3JSC18FunctionExecutableEEELm0EE14expandCapacityEm +__ZN3JSC9Structure31removePropertyWithoutTransitionERKNS_10IdentifierE +__ZNK3JSC8JSObject11hasPropertyEPNS_9ExecStateERKNS_10IdentifierE +__ZNK3JSC7UString14toStrictUInt32EPb +__ZN7WebCore12AtomicString4findEPKtjj +__ZN3WTF9HashTableINS_6RefPtrIN7WebCore10StringImplEEESt4pairIS4_N3JSC16SymbolTableEntryEENS_18PairFirstExtractorIS8_EENS6_17Id +__ZN3JSCL30comparePropertyMapEntryIndicesEPKvS1_ +__ZN3JSC13AssignDotNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE +__ZNK3JSC14ExpressionNode6isPureERNS_17BytecodeGeneratorE +__ZN3JSC17BytecodeGenerator8emitMoveEPNS_10RegisterIDES2_ +__ZN3JSC17ObjectLiteralNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE +__ZN3JSC17BytecodeGenerator13emitNewObjectEPNS_10RegisterIDE +__ZN3JSC21FunctionCallValueNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE +__ZN3JSC12FuncExprNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE +__ZN3JSC17BytecodeGenerator25emitNewFunctionExpressionEPNS_10RegisterIDEPNS_12FuncExprNodeE +__ZN3JSC12FuncDeclNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE __ZN3JSC15DotAccessorNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE -__ZN3JSC17BytecodeGenerator11emitResolveEPNS_10RegisterIDERKNS_10IdentifierE -__ZN3JSC17BytecodeGenerator18findScopedPropertyERKNS_10IdentifierERiRmbRPNS_8JSObjectE +__ZN3JSC16VarStatementNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE +__ZN3JSC17BytecodeGenerator15isLocalConstantERKNS_10IdentifierE +__ZN3JSC16ArgumentListNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE +__ZN3JSC11BooleanNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE +__ZN3JSC17BytecodeGenerator8emitLoadEPNS_10RegisterIDEb +__ZN3JSC9ArrayNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE +__ZN3JSC17BytecodeGenerator12emitNewArrayEPNS_10RegisterIDEPNS_11ElementNodeE +__ZN3JSC23FunctionCallResolveNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE +__ZN3JSC17BytecodeGenerator19emitResolveWithBaseEPNS_10RegisterIDES2_RKNS_10IdentifierE +__ZN3JSC10NumberNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE +__ZN3JSC17BytecodeGenerator8emitLoadEPNS_10RegisterIDEd +__ZN3WTF9HashTableIdSt4pairIdN3JSC7JSValueEENS_18PairFirstExtractorIS4_EENS_9FloatHashIdEENS_14PairHashTraitsINS_10HashTraitsId +__ZN3JSC10StringNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE +__ZN3JSC17BytecodeGenerator8emitLoadEPNS_10RegisterIDERKNS_10IdentifierE +__ZN3WTF9HashTableIPN7WebCore10StringImplESt4pairIS3_PN3JSC8JSStringEENS_18PairFirstExtractorIS8_EENS5_17IdentifierRepHashENS_1 +__ZN3JSC12SmallStrings27createSingleCharacterStringEPNS_12JSGlobalDataEh +__ZN3JSC8NullNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE +__ZN3JSC15ParserArenaDataIN3WTF6VectorIPNS_16FunctionBodyNodeELm0EEEED1Ev +__ZN3JSC15ParserArenaDataIN3WTF6VectorISt4pairIPKNS_10IdentifierEjELm0EEEED1Ev +__ZN3JSC3JIT16emit_op_new_funcEPNS_11InstructionE +__ZN3JSC3JIT18emit_op_new_objectEPNS_11InstructionE +__ZN3JSC3JIT20emit_op_new_func_expEPNS_11InstructionE +__ZN3JSC3JIT17emit_op_new_arrayEPNS_11InstructionE +__ZN3JSC3JIT25emit_op_resolve_with_baseEPNS_11InstructionE +_cti_op_new_func +__ZN3JSC10JSFunctionC1EPNS_9ExecStateEN3WTF17NonNullPassRefPtrINS_18FunctionExecutableEEEPNS_14ScopeChainNodeE +_cti_op_new_object +_cti_op_new_func_exp +_cti_op_call_JSFunction +__ZN3JSC18FunctionExecutable15generateJITCodeEPNS_9ExecStateEPNS_14ScopeChainNodeE +__ZN3WTF7HashSetINS_6RefPtrIN7WebCore10StringImplEEEN3JSC17IdentifierRepHashENS_10HashTraitsIS4_EEE3addERKS4_ +__ZN3WTF9HashTableINS_6RefPtrIN7WebCore10StringImplEEES4_NS_17IdentityExtractorIS4_EEN3JSC17IdentifierRepHashENS_10HashTraitsIS +__ZN3JSC17BytecodeGenerator6addVarERKNS_10IdentifierEbRPNS_10RegisterIDE __ZNK3JSC16JSVariableObject16isVariableObjectEv __ZN3JSC17BytecodeGenerator16emitGetScopedVarEPNS_10RegisterIDEmiNS_7JSValueE -__ZN3JSC17BytecodeGenerator11emitGetByIdEPNS_10RegisterIDES2_RKNS_10IdentifierE -__ZN3WTF6VectorIN3JSC17StructureStubInfoELm0EE14expandCapacityEm -__ZN3JSC17BytecodeGenerator11addConstantERKNS_10IdentifierE -__ZN3WTF7HashMapINS_6RefPtrIN3JSC7UString3RepEEEiNS2_17IdentifierRepHashENS_10HashTraitsIS5_EENS2_17BytecodeGenerator28Identifi -__ZN3WTF9HashTableINS_6RefPtrIN3JSC7UString3RepEEESt4pairIS5_iENS_18PairFirstExtractorIS7_EENS2_17IdentifierRepHashENS_14PairHa +__ZNK3JSC13StatementNode12isReturnNodeEv +__ZN3JSC3JIT29emit_op_enter_with_activationEPNS_11InstructionE +__ZN3JSC3JIT22emit_op_get_global_varEPNS_11InstructionE +__ZN3JSC3JIT29emitGetVariableObjectRegisterENS_12X86Registers10RegisterIDEiS2_ +__ZN3JSC3JIT27emit_op_tear_off_activationEPNS_11InstructionE +__ZN3JSC11JITStubCall11addArgumentEjNS_12X86Registers10RegisterIDE +__ZN3JSC3JIT11emit_op_retEPNS_11InstructionE +_cti_register_file_check +_cti_op_push_activation +__ZN3JSC12JSActivationC1EPNS_9ExecStateEN3WTF17NonNullPassRefPtrINS_18FunctionExecutableEEE +__ZN3JSC12JSActivationC2EPNS_9ExecStateEN3WTF17NonNullPassRefPtrINS_18FunctionExecutableEEE +_cti_op_tear_off_activation +_cti_op_ret_scopeChain +__ZN3JSC10JSFunction18getOwnPropertySlotEPNS_9ExecStateERKNS_10IdentifierERNS_12PropertySlotE +__ZN3JSC9Structure18transitionTableAddERKSt4pairIN3WTF6RefPtrIN7WebCore10StringImplEEEjEPS0_PNS_6JSCellE +__ZN3WTF7HashMapISt4pairINS_6RefPtrIN7WebCore10StringImplEEEjES1_IPN3JSC9StructureES9_ENS7_28StructureTransitionTableHashENS7_3 +__ZN3WTF9HashTableISt4pairINS_6RefPtrIN7WebCore10StringImplEEEjES1_IS6_S1_IPN3JSC9StructureES9_EENS_18PairFirstExtractorISB_EEN +_cti_op_new_array +__ZN3JSC7JSArrayC1EN3WTF17NonNullPassRefPtrINS_9StructureEEERKNS_7ArgListE +_cti_op_construct_JSConstruct +__ZNK3JSC10NumberNode6isPureERNS_17BytecodeGeneratorE +__ZN3JSC8ThisNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE +__ZN3JSC3JIT20emit_op_convert_thisEPNS_11InstructionE +__ZN3JSC3JIT24emitSlow_op_convert_thisEPNS_11InstructionERPNS_13SlowCaseEntryE +_cti_op_resolve_with_base +__ZN3JSC10JSFunction11getCallDataERNS_8CallDataE +__ZNK3JSC7ArgList8getSliceEiRS0_ +__ZN3JSC9Structure22materializePropertyMapEv +_cti_op_end +__ZNK7WebCore6String7toFloatEPb +__ZN7WebCore10StringImpl7toFloatEPb +__ZN7WebCore17charactersToFloatEPKtmPb +__ZN7WebCoreeqERKNS_12AtomicStringEPKc +__ZNK7WebCore6String5toIntEPb +__ZN7WebCore10StringImpl5toIntEPb +__ZN7WebCore15charactersToIntEPKtmPb +__ZN7WebCore6String6numberEi +__ZNK7WebCore6String11toIntStrictEPbi +__ZN7WebCore10StringImpl11toIntStrictEPbi +__ZN7WebCore21charactersToIntStrictEPKtmPbi +__ZN7WebCore10StringImpl7replaceEPS0_S1_ +__ZN7WebCore6String6numberEt +__ZL11makeDivNodePN3JSC12JSGlobalDataEPNS_14ExpressionNodeES3_b +__ZNK3JSC10NumberNode8isNumberEv +__ZN3WTF6VectorIPvLm0EE14expandCapacityEm +__ZN3WTF6VectorIjLm16EE6resizeEm +__ZN3WTFL7multaddERNS_6BigIntEii +__ZN3WTF6VectorIjLm16EEaSERKS1_ +__ZN3WTFL4multERNS_6BigIntERKS0_ +__ZL11makeAddNodePN3JSC12JSGlobalDataEPNS_14ExpressionNodeES3_b +__ZN3WTF6VectorIPNS0_IN3JSC10IdentifierELm64EEELm32EE15reserveCapacityEm +__ZL14makePrefixNodePN3JSC12JSGlobalDataEPNS_14ExpressionNodeENS_8OperatorEiii +__ZN3WTF6VectorIPN3JSC10RegisterIDELm32EE15reserveCapacityEm +__ZN3JSC16PropertyListNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE +__ZN3JSC15ConditionalNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE +__ZN3JSC17BytecodeGenerator8newLabelEv +__ZNK3JSC14ExpressionNode26hasConditionContextCodegenEv __ZN3JSC17BytecodeGenerator15emitJumpIfFalseEPNS_10RegisterIDEPNS_5LabelE -__ZNK3JSC14JSGlobalObject14isDynamicScopeEv -__ZN3JSC17BytecodeGenerator19emitResolveFunctionEPNS_10RegisterIDES2_RKNS_10IdentifierE -__ZN3JSC10StringNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE -__ZN3JSC17BytecodeGenerator8emitLoadEPNS_10RegisterIDERKNS_10IdentifierE -__ZN3WTF9HashTableIPN3JSC7UString3RepESt4pairIS4_PNS1_8JSStringEENS_18PairFirstExtractorIS8_EENS1_17IdentifierRepHashENS_14Pair -__ZN3JSC11BooleanNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE __ZN3JSC17BytecodeGenerator8emitJumpEPNS_5LabelE __ZN3JSC17BytecodeGenerator9emitLabelEPNS_5LabelE -__ZN3WTF6VectorIjLm0EE15reserveCapacityEm +__ZN3WTF6VectorIjLm0EE14expandCapacityEm +__ZN3JSC17BytecodeGenerator14emitPutByIndexEPNS_10RegisterIDEjS2_ __ZN3JSC6IfNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE -__ZNK3JSC13StatementNode12isReturnNodeEv -__ZN3JSC15DotAccessorNodeD0Ev -__ZN3JSC10StringNodeD0Ev -__ZN3JSC11BooleanNodeD0Ev -__ZN3JSC6IfNodeD0Ev -__ZN3JSC10IfElseNodeD0Ev -__ZN3JSC3JIT22emit_op_get_global_varEPNS_11InstructionE -__ZN3JSC3JIT29emitGetVariableObjectRegisterENS_3X8610RegisterIDEiS2_ -__ZN3JSC3JIT17emit_op_get_by_idEPNS_11InstructionE -__ZN3JSC3JIT21compileGetByIdHotPathEiiPNS_10IdentifierEj -__ZN3WTF6VectorIN3JSC13SlowCaseEntryELm0EE14expandCapacityEmPKS2_ +__ZNK3JSC14LogicalNotNode26hasConditionContextCodegenEv +__ZN3JSC11UnaryOpNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE +__ZN3JSC17BytecodeGenerator11emitUnaryOpENS_8OpcodeIDEPNS_10RegisterIDES3_ +__ZNK3JSC10StringNode6isPureERNS_17BytecodeGeneratorE +__ZNK3JSC14ExpressionNode5isAddEv +__ZN3JSC7ForNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE +__ZN3JSC17BytecodeGenerator13newLabelScopeENS_10LabelScope4TypeEPKNS_10IdentifierE +__ZN3JSC19BracketAccessorNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE +__ZN3JSC17BytecodeGenerator12emitGetByValEPNS_10RegisterIDES2_S2_ +__ZN3JSC17PrefixResolveNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE +__ZN3JSC17BytecodeGenerator10emitPreIncEPNS_10RegisterIDE +__ZN3JSC17BytecodeGenerator14emitJumpIfTrueEPNS_10RegisterIDEPNS_5LabelE +__ZN3JSC3JIT11emit_op_divEPNS_11InstructionE +__ZN3JSC20MacroAssemblerX86_649branchPtrENS_23MacroAssemblerX86Common9ConditionENS_12X86Registers10RegisterIDES4_ +__ZN3JSC12X86Assembler11cvtsi2sd_rrENS_12X86Registers10RegisterIDENS1_13XMMRegisterIDE +__ZN3JSC12X86Assembler23X86InstructionFormatter9twoByteOpENS0_15TwoByteOpcodeIDEiNS_12X86Registers10RegisterIDE +__ZN3JSC12X86Assembler7movq_rrENS_12X86Registers10RegisterIDENS1_13XMMRegisterIDE +__ZN3JSC23MacroAssemblerX86Common4moveENS_22AbstractMacroAssemblerINS_12X86AssemblerEE5Imm32ENS_12X86Registers10RegisterIDE +__ZN3JSC15AssemblerBuffer7putByteEi __ZN3JSC3JIT14emit_op_jfalseEPNS_11InstructionE -__ZN3JSC20MacroAssemblerX86_649branchPtrENS_23MacroAssemblerX86Common9ConditionENS_3X8610RegisterIDENS_22AbstractMacroAssembler -__ZN3JSC20MacroAssemblerX86_649branchPtrENS_23MacroAssemblerX86Common9ConditionENS_3X8610RegisterIDES4_ +__ZN3JSC20MacroAssemblerX86_649branchPtrENS_23MacroAssemblerX86Common9ConditionENS_12X86Registers10RegisterIDENS_22AbstractMacr __ZN3WTF6VectorIN3JSC9JumpTableELm0EE14expandCapacityEmPKS2_ __ZN3WTF6VectorIN3JSC9JumpTableELm0EE14expandCapacityEm -__ZN3JSC3JIT20emit_op_resolve_funcEPNS_11InstructionE __ZN3JSC3JIT11emit_op_jmpEPNS_11InstructionE -__ZN3JSC3JIT11emit_op_retEPNS_11InstructionE -__ZN3JSC3JIT21emitSlow_op_get_by_idEPNS_11InstructionERPNS_13SlowCaseEntryE -__ZN3JSC3JIT22compileGetByIdSlowCaseEiiPNS_10IdentifierERPNS_13SlowCaseEntryEj -__ZN3JSC3JIT18emitSlow_op_jfalseEPNS_11InstructionERPNS_13SlowCaseEntryE -__ZN3JSC23MacroAssemblerX86Common12branchTest32ENS0_9ConditionENS_3X8610RegisterIDENS_22AbstractMacroAssemblerINS_12X86Assemble -__ZN3JSC8JITStubs23cti_vm_dontLazyLinkCallEPPv -__ZN3JSC31ctiPatchNearCallByReturnAddressENS_22AbstractMacroAssemblerINS_12X86AssemblerEE22ProcessorReturnAddressEPv -__ZN3JSC8JITStubs23cti_register_file_checkEPPv -__ZN3JSC8JITStubs16cti_op_get_by_idEPPv -__ZNK3JSC7JSValue3getEPNS_9ExecStateERKNS_10IdentifierERNS_12PropertySlotE -__ZN3JSC23setUpStaticFunctionSlotEPNS_9ExecStateEPKNS_9HashEntryEPNS_8JSObjectERKNS_10IdentifierERNS_12PropertySlotE -__ZN3JSC27ctiPatchCallByReturnAddressENS_22AbstractMacroAssemblerINS_12X86AssemblerEE22ProcessorReturnAddressEPv -__ZN3JSC8JITStubs12cti_op_jtrueEPPv -__ZNK3JSC8JSObject9toBooleanEPNS_9ExecStateE -__ZN3JSC8JITStubs19cti_op_resolve_funcEPPv +__ZN3JSC3JIT20emit_op_put_by_indexEPNS_11InstructionE +__ZN3JSC3JIT13emit_op_jtrueEPNS_11InstructionE +__ZN3JSC3JIT11emit_op_addEPNS_11InstructionE +__ZN3JSC3JIT18emit_op_get_by_valEPNS_11InstructionE +__ZN3JSC20MacroAssemblerX86_649branchPtrENS_23MacroAssemblerX86Common9ConditionENS_22AbstractMacroAssemblerINS_12X86AssemblerEE +__ZN3JSC12X86Assembler23X86InstructionFormatter11oneByteOp64ENS0_15OneByteOpcodeIDEiNS_12X86Registers10RegisterIDES4_ii +__ZN3JSC3JIT15emit_op_pre_incEPNS_11InstructionE +__ZN3JSC3JIT16emitTimeoutCheckEv +__ZN3JSC3JIT13emit_op_jlessEPNS_11InstructionE +__ZN3JSC3JIT15emitSlow_op_divEPNS_11InstructionERPNS_13SlowCaseEntryE +__ZN3JSC3JIT18emitSlow_op_jfalseEPNS_11InstructionERPNS_13SlowCaseEntryE +__ZN3JSC23MacroAssemblerX86Common12branchTest32ENS0_9ConditionENS_12X86Registers10RegisterIDENS_22AbstractMacroAssemblerINS_12X +__ZN3JSC3JIT17emitSlow_op_jtrueEPNS_11InstructionERPNS_13SlowCaseEntryE +__ZN3JSC3JIT22emitSlow_op_get_by_valEPNS_11InstructionERPNS_13SlowCaseEntryE +__ZN3JSC3JIT27stringGetByValStubGeneratorEPNS_12JSGlobalDataEPNS_14ExecutablePoolE +__ZN3JSC15AssemblerBuffer14executableCopyEPNS_14ExecutablePoolE +__ZN3JSC3JIT19emitSlow_op_pre_incEPNS_11InstructionERPNS_13SlowCaseEntryE +__ZN3JSC11JITStubCall11addArgumentENS_12X86Registers10RegisterIDE +__ZN3JSC3JIT17emitSlow_op_jlessEPNS_11InstructionERPNS_13SlowCaseEntryE +__ZN3JSC23MacroAssemblerX86Common12branchDoubleENS0_15DoubleConditionENS_12X86Registers13XMMRegisterIDES3_ +__ZNK3JSC13LogicalOpNode26hasConditionContextCodegenEv +__ZN3JSC13LogicalOpNode30emitBytecodeInConditionContextERNS_17BytecodeGeneratorEPNS_5LabelES4_b +__ZN3JSC21ReadModifyResolveNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE +__ZN3JSC3JIT11emit_op_subEPNS_11InstructionE +__ZN3JSC3JIT20compileBinaryArithOpENS_8OpcodeIDEjjjNS_12OperandTypesE +__ZN3JSC3JIT15emitSlow_op_subEPNS_11InstructionERPNS_13SlowCaseEntryE +__ZN3JSC3JIT28compileBinaryArithOpSlowCaseENS_8OpcodeIDERPNS_13SlowCaseEntryEjjjNS_12OperandTypesEbb +__ZN3JSC3JIT15emitSlow_op_addEPNS_11InstructionERPNS_13SlowCaseEntryE +__ZNK3JSC14JSGlobalObject14isDynamicScopeERb +_cti_op_jtrue +__ZNK3JSC8JSObject9toBooleanEPNS_9ExecStateE +__ZNK3JSC8JSObject24getPropertySpecificValueEPNS_9ExecStateERKNS_10IdentifierERPNS_6JSCellE +__ZN3JSC27ctiPatchCallByReturnAddressEPNS_9CodeBlockENS_16ReturnAddressPtrENS_11FunctionPtrE +__ZN3JSC3JIT8linkCallEPNS_10JSFunctionEPNS_9CodeBlockES4_RNS_7JITCodeEPNS_12CallLinkInfoEiPNS_12JSGlobalDataE +_cti_op_add +__ZN3JSC13jsAddSlowCaseEPNS_9ExecStateENS_7JSValueES2_ +__ZNK3JSC8JSString11toPrimitiveEPNS_9ExecStateENS_22PreferredPrimitiveTypeE +__ZNK3JSC7JSValue8toStringEPNS_9ExecStateE +__ZN3JSC7UString4fromEi +__ZNK3JSC8JSString11resolveRopeEPNS_9ExecStateE +__ZN3WTF13tryFastMallocEm +__ZN7WebCore10StringImpl4findEPKcib +__ZN3JSC13LogicalOpNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE +__ZNK3JSC14ExpressionNode6isNullEv +__ZN3JSC3JIT11emit_op_neqEPNS_11InstructionE +__ZN3JSC12X86Assembler8shll_i8rEiNS_12X86Registers10RegisterIDE +__ZN3JSC12X86Assembler6orl_irEiNS_12X86Registers10RegisterIDE +__ZN3JSC3JIT15emitSlow_op_neqEPNS_11InstructionERPNS_13SlowCaseEntryE +_cti_op_call_arityCheck +_cti_op_eq +__ZN3JSC9JITThunks15tryCacheGetByIDEPNS_9ExecStateEPNS_9CodeBlockENS_16ReturnAddressPtrENS_7JSValueERKNS_10IdentifierERKNS_12Pr +__ZN3JSC14StructureChainC1EPNS_9StructureE +__ZN3JSC14StructureChainC2EPNS_9StructureE +__ZN3JSC3JIT26privateCompileGetByIdChainEPNS_17StructureStubInfoEPNS_9StructureEPNS_14StructureChainEmRKNS_10IdentifierERKNS_12 +__ZN3JSC3JIT22compileGetDirectOffsetEPNS_8JSObjectENS_12X86Registers10RegisterIDES4_m +_cti_op_get_by_id_self_fail +__ZN3JSC3JIT29privateCompileGetByIdSelfListEPNS_17StructureStubInfoEPNS_30PolymorphicAccessStructureListEiPNS_9StructureERKNS_1 +_cti_op_get_by_id_custom_stub +__ZN3JSC10MathObject18getOwnPropertySlotEPNS_9ExecStateERKNS_10IdentifierERNS_12PropertySlotE +__ZN3JSCL16mathProtoFuncMaxEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZL17combineCommaNodesPN3JSC12JSGlobalDataEPNS_14ExpressionNodeES3_ +__ZNK3JSC14ExpressionNode11isCommaNodeEv +__ZNK3JSC9CommaNode11isCommaNodeEv +__ZN3JSC9CommaNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE +__ZN3JSC19ReverseBinaryOpNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE +__ZN3JSC9BreakNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE +__ZN3JSC17BytecodeGenerator11breakTargetERKNS_10IdentifierE +__ZN3JSC17BytecodeGenerator14emitJumpScopesEPNS_5LabelEi +__ZN3JSC9CommaNodeD1Ev +__ZN3JSC3JIT14emit_op_jnlessEPNS_11InstructionE +__ZN3JSC3JIT18emitSlow_op_jnlessEPNS_11InstructionERPNS_13SlowCaseEntryE +__ZN3JSC7JSArray18getOwnPropertySlotEPNS_9ExecStateERKNS_10IdentifierERNS_12PropertySlotE +_cti_op_jless +__ZN3JSC3JIT33privateCompilePatchGetArrayLengthENS_16ReturnAddressPtrE +__ZN3JSC3JIT16patchGetByIdSelfEPNS_9CodeBlockEPNS_17StructureStubInfoEPNS_9StructureEmNS_16ReturnAddressPtrE +__ZNK3JSC7AddNode5isAddEv +__ZN3JSC9JITThunks15tryCachePutByIDEPNS_9ExecStateEPNS_9CodeBlockENS_16ReturnAddressPtrENS_7JSValueERKNS_15PutPropertySlotEPNS_ +_cti_op_negate +__ZN3JSC7UString4fromEj +__ZL12makeMultNodePN3JSC12JSGlobalDataEPNS_14ExpressionNodeES3_b +__ZN3JSC9EqualNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE +__ZN3JSC17BytecodeGenerator14emitEqualityOpENS_8OpcodeIDEPNS_10RegisterIDES3_S3_ +__ZN3JSC3JIT11emit_op_notEPNS_11InstructionE +__ZN3JSC3JIT11emit_op_mulEPNS_11InstructionE +__ZN3JSC3JIT10emit_op_eqEPNS_11InstructionE +__ZN3JSC3JIT15emitSlow_op_notEPNS_11InstructionERPNS_13SlowCaseEntryE +__ZN3JSC3JIT15emitSlow_op_mulEPNS_11InstructionERPNS_13SlowCaseEntryE +__ZN3JSC3JIT14emitSlow_op_eqEPNS_11InstructionERPNS_13SlowCaseEntryE +_cti_op_not +__ZN3JSC17ReadModifyDotNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE +__ZN3JSC17BytecodeGenerator10emitPreDecEPNS_10RegisterIDE +__ZN3JSC3JIT16emit_op_jnlesseqEPNS_11InstructionE +__ZN3JSC3JIT15emit_op_jlesseqEPNS_11InstructionEb +__ZN3JSC3JIT15emit_op_pre_decEPNS_11InstructionE +__ZN3JSC3JIT22emit_op_loop_if_lesseqEPNS_11InstructionE +__ZN3JSC3JIT20emitSlow_op_jnlesseqEPNS_11InstructionERPNS_13SlowCaseEntryE +__ZN3JSC3JIT19emitSlow_op_jlesseqEPNS_11InstructionERPNS_13SlowCaseEntryEb +__ZN3JSC3JIT19emitSlow_op_pre_decEPNS_11InstructionERPNS_13SlowCaseEntryE +__ZN3JSC3JIT26emitSlow_op_loop_if_lesseqEPNS_11InstructionERPNS_13SlowCaseEntryE +__ZN3JSC17powThunkGeneratorEPNS_12JSGlobalDataEPNS_14ExecutablePoolE +__ZN3JSC19SpecializedThunkJIT12returnDoubleENS_12X86Registers13XMMRegisterIDE +__ZN3JSC19SpecializedThunkJITD1Ev +__ZN3JSCL16mathProtoFuncSinEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZN3JSCL16mathProtoFuncMinEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZN3JSCL18mathProtoFuncRoundEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZN3JSCL16mathProtoFuncLogEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZN3JSC3JIT20patchMethodCallProtoEPNS_9CodeBlockERNS_18MethodCallLinkInfoEPNS_10JSFunctionEPNS_9StructureEPNS_8JSObjectENS_16R +__ZN3JSC3JIT31privateCompilePutByIdTransitionEPNS_17StructureStubInfoEPNS_9StructureES4_mPNS_14StructureChainENS_16ReturnAddres +__ZN3JSC3JIT13testPrototypeEPNS_9StructureERNS_22AbstractMacroAssemblerINS_12X86AssemblerEE8JumpListE +__ZN3JSCL16mathProtoFuncAbsEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +_cti_op_jlesseq +__ZN3WTF6VectorIPN3JSC12CallLinkInfoELm0EE15reserveCapacityEm +__ZN3JSC10IfElseNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE +__ZN3JSC17TypeOfResolveNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE +__ZN3JSC7TryNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE +__ZN3JSC17BytecodeGenerator9emitCatchEPNS_10RegisterIDEPNS_5LabelES4_ +__ZN3JSC9CodeBlock25createRareDataIfNecessaryEv +__ZN3WTF6VectorIN3JSC11HandlerInfoELm0EE14expandCapacityEm +__ZN3JSC17BytecodeGenerator16emitPushNewScopeEPNS_10RegisterIDERKNS_10IdentifierES2_ +__ZN3WTF6VectorIN3JSC18ControlFlowContextELm0EE14expandCapacityEm +__ZN3JSC15TypeOfValueNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE +__ZN3JSCeqERKNS_7UStringEPKc +__ZN3JSC17BytecodeGenerator12emitPopScopeEv +__ZN3WTF6VectorIN3JSC15SimpleJumpTableELm0EE14shrinkCapacityEm +__ZN3WTF6VectorIN3JSC15StringJumpTableELm0EE14shrinkCapacityEm +__ZN3JSC3JIT13emit_op_catchEPNS_11InstructionE +__ZN3JSC3JIT22emit_op_push_new_scopeEPNS_11InstructionE +__ZN3JSC3JIT15emit_op_resolveEPNS_11InstructionE +__ZN3JSC3JIT20emit_op_resolve_baseEPNS_11InstructionE +__ZN3JSC3JIT17emit_op_pop_scopeEPNS_11InstructionE +__ZL15makePostfixNodePN3JSC12JSGlobalDataEPNS_14ExpressionNodeENS_8OperatorEiii +__ZN3JSC12BinaryOpNode10emitStrcatERNS_17BytecodeGeneratorEPNS_10RegisterIDES4_PNS_21ReadModifyResolveNodeE +__ZNK3JSC10StringNode8isStringEv +__ZNK3JSC14ExpressionNode8isStringEv +__ZN3JSC17BytecodeGenerator15emitToPrimitiveEPNS_10RegisterIDES2_ +__ZN3JSC17BytecodeGenerator10emitStrcatEPNS_10RegisterIDES2_i +__ZN3JSC18PostfixResolveNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE +__ZN3JSC3JIT11emit_op_modEPNS_11InstructionE +__ZN3JSC23MacroAssemblerX86Common8branch32ENS0_9ConditionENS_12X86Registers10RegisterIDENS_22AbstractMacroAssemblerINS_12X86Ass +__ZN3JSC3JIT20emit_op_to_primitiveEPNS_11InstructionE +__ZN3JSC23MacroAssemblerX86Common4moveENS_22AbstractMacroAssemblerINS_12X86AssemblerEE6ImmPtrENS_12X86Registers10RegisterIDE +__ZN3JSC3JIT14emit_op_strcatEPNS_11InstructionE +__ZN3JSC3JIT15emitSlow_op_modEPNS_11InstructionERPNS_13SlowCaseEntryE +__ZN3JSC3JIT24emitSlow_op_to_primitiveEPNS_11InstructionERPNS_13SlowCaseEntryE +__ZN3JSCL18mathProtoFuncFloorEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZN3JSCL17mathProtoFuncCeilEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +_cti_op_strcat +__ZNK3JSC19BracketAccessorNode10isLocationEv +__ZNK3JSC19BracketAccessorNode21isBracketAccessorNodeEv +__ZN3JSC17AssignBracketNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE +__ZN3JSC17BytecodeGenerator12emitPutByValEPNS_10RegisterIDES2_S2_ +__ZN3JSC3JIT18emit_op_put_by_valEPNS_11InstructionE +__ZN3JSC3JIT22emitSlow_op_put_by_valEPNS_11InstructionERPNS_13SlowCaseEntryE +__ZN3JSC14ArrayPrototype18getOwnPropertySlotEPNS_9ExecStateERKNS_10IdentifierERNS_12PropertySlotE +__ZN3JSC14LogicalNotNode30emitBytecodeInConditionContextERNS_17BytecodeGeneratorEPNS_5LabelES4_b +__ZN3JSC8JSString18getOwnPropertySlotEPNS_9ExecStateERKNS_10IdentifierERNS_12PropertySlotE +__ZN3JSC15StringPrototype18getOwnPropertySlotEPNS_9ExecStateERKNS_10IdentifierERNS_12PropertySlotE +__ZN3JSC12StringObject18getOwnPropertySlotEPNS_9ExecStateERKNS_10IdentifierERNS_12PropertySlotE +__ZN3JSCL21stringProtoFuncSubstrEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZNK3JSC7JSValue9toIntegerEPNS_9ExecStateE +__ZN7WebCore10StringImpl6createEN3WTF10PassRefPtrIS0_EEjj +__ZN3WTF6RefPtrIN7WebCore10StringImplEED1Ev +__ZN3JSCL18arrayProtoFuncJoinEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE __ZNK3JSC8JSObject12toThisObjectEPNS_9ExecStateE -__ZNK3JSC8JSString8toStringEPNS_9ExecStateE -__ZN3JSC8JITStubs23cti_op_get_by_id_secondEPPv -__ZN3JSC8JITStubs15tryCacheGetByIDEPNS_9ExecStateEPNS_9CodeBlockEPvNS_7JSValueERKNS_10IdentifierERKNS_12PropertySlotE -__ZN3JSC3JIT26privateCompileGetByIdProtoEPNS_17StructureStubInfoEPNS_9StructureES4_mNS_22AbstractMacroAssemblerINS_12X86Assembl -__ZN3JSC3JIT22compileGetDirectOffsetEPNS_8JSObjectENS_3X8610RegisterIDES4_m -__ZN3JSC8JITStubs19cti_vm_lazyLinkCallEPPv -__ZN3JSC3JIT8linkCallEPNS_10JSFunctionEPNS_9CodeBlockENS_7JITCodeEPNS_12CallLinkInfoEi -__ZN3JSC8JITStubs10cti_op_endEPPv -__ZThn16_N3JSC12FuncDeclNodeD0Ev -__ZN3JSC12FuncDeclNodeD0Ev -__ZN3WTF25TCMalloc_Central_FreeList11ShrinkCacheEib -__ZN3JSC10JSFunction18getOwnPropertySlotEPNS_9ExecStateERKNS_10IdentifierERNS_12PropertySlotE -__ZN3JSC10JSFunction11getCallDataERNS_8CallDataE -__ZN3JSC4callEPNS_9ExecStateENS_7JSValueENS_8CallTypeERKNS_8CallDataES2_RKNS_7ArgListE -__ZN3JSC11Interpreter7executeEPNS_16FunctionBodyNodeEPNS_9ExecStateEPNS_10JSFunctionEPNS_8JSObjectERKNS_7ArgListEPNS_14ScopeCha -__ZNK3JSC15DotAccessorNode10isLocationEv -__ZNK3JSC14ExpressionNode13isResolveNodeEv -__ZNK3JSC14ExpressionNode21isBracketAccessorNodeEv -__ZN3JSC19FunctionCallDotNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE -__ZN3JSC19FunctionCallDotNodeD0Ev -__ZL26appendToVarDeclarationListPvRPN3JSC15ParserArenaDataIN3WTF6VectorISt4pairINS0_10IdentifierEjELm0EEEEERKS5_j -__ZN3WTF6VectorISt4pairIN3JSC10IdentifierEjELm0EE14expandCapacityEm -__ZL14makeAssignNodePvPN3JSC14ExpressionNodeENS0_8OperatorES2_bbiii -__ZL11makeAddNodePvPN3JSC14ExpressionNodeES2_b -__ZN3JSC16VarStatementNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE -__ZN3JSC17AssignResolveNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE -__ZN3JSC11UnaryOpNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE +__ZN3WTF7HashSetIPN3JSC8JSObjectENS_7PtrHashIS3_EENS_10HashTraitsIS3_EEE3addERKS3_ +__ZN3WTF9HashTableIPN3JSC8JSObjectES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E6rehashEi +__ZNK3JSC8JSObject3getEPNS_9ExecStateERKNS_10IdentifierE +__ZN3JSC15JSStringBuilder5buildEPNS_9ExecStateE +__ZN3WTF6VectorItLm64EE17tryExpandCapacityEm +__ZN3JSCL18arrayProtoFuncPushEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZN3JSC7JSArray4pushEPNS_9ExecStateENS_7JSValueE +__ZN3WTF14tryFastReallocEPvm +__ZN3JSC4Heap15recordExtraCostEm +__ZN3JSC17BytecodeGenerator16emitPutScopedVarEmiPNS_10RegisterIDENS_7JSValueE +__ZN3JSC3JIT22emit_op_put_scoped_varEPNS_11InstructionE +__ZN3JSC3JIT29emitPutVariableObjectRegisterENS_12X86Registers10RegisterIDES2_i +__ZN3JSC3JIT22emit_op_put_global_varEPNS_11InstructionE +_cti_op_put_by_index +__ZN3JSC7JSArray3putEPNS_9ExecStateEjNS_7JSValueE +__ZN3JSC7JSArray11putSlowCaseEPNS_9ExecStateEjNS_7JSValueE +__ZNK3JSC11BooleanNode6isPureERNS_17BytecodeGeneratorE +__ZN3JSC10JSFunction3putEPNS_9ExecStateERKNS_10IdentifierENS_7JSValueERNS_15PutPropertySlotE +__ZNK7WebCore12AtomicString5lowerEv +_cti_op_get_by_id_proto_list +__ZN3JSC3JIT30privateCompileGetByIdChainListEPNS_17StructureStubInfoEPNS_30PolymorphicAccessStructureListEiPNS_9StructureEPNS_1 +__ZN3JSC3JIT22emit_op_get_scoped_varEPNS_11InstructionE +_cti_op_put_by_val +__ZNK3JSC12JSActivation14isDynamicScopeERb +__ZN3JSC24ApplyFunctionCallDotNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE +__ZNK3JSC14ExpressionNode13isSimpleArrayEv +__ZN3JSC17BytecodeGenerator26emitJumpIfNotFunctionApplyEPNS_10RegisterIDEPNS_5LabelE +__ZN3JSC17BytecodeGenerator22willResolveToArgumentsERKNS_10IdentifierE +__ZN3JSC17BytecodeGenerator15emitLoadVarargsEPNS_10RegisterIDES2_ +__ZN3JSC17BytecodeGenerator15emitCallVarargsEPNS_10RegisterIDES2_S2_S2_jjj +__ZN3JSC3JIT16emit_op_jneq_ptrEPNS_11InstructionE +__ZN3JSC3JIT20emit_op_load_varargsEPNS_11InstructionE +__ZN3JSC3JIT20emit_op_call_varargsEPNS_11InstructionE +__ZN3JSC3JIT20compileOpCallVarargsEPNS_11InstructionE +__ZN3JSC3JIT29compileOpCallVarargsSetupArgsEPNS_11InstructionE +__ZN3JSC3JIT24emitSlow_op_call_varargsEPNS_11InstructionERPNS_13SlowCaseEntryE +__ZN3JSC3JIT28compileOpCallVarargsSlowCaseEPNS_11InstructionERPNS_13SlowCaseEntryE +__ZN3JSC14ExecutablePool13systemReleaseERKNS0_10AllocationE +_JSStringCreateWithCFString +_JSStringRetain +_JSStringRelease +_JSEvaluateScript +__ZN3JSC4Heap14registerThreadEv +__ZNK14OpaqueJSString7ustringEv +__ZN3JSC7UStringC1EPKtj +__ZN3JSC5Lexer10scanRegExpERPKNS_10IdentifierES4_t +__ZN3JSC18ConstStatementNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE +__ZN3JSC13ConstDeclNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE +__ZN3JSC13ConstDeclNode14emitCodeSingleERNS_17BytecodeGeneratorE +__ZN3JSC17BytecodeGenerator16constRegisterForERKNS_10IdentifierE __ZN3JSC10RegExpNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE __ZN3JSC6RegExp6createEPNS_12JSGlobalDataERKNS_7UStringES5_ +__ZNK3JSC7UString4findEtj __ZN3JSC4Yarr15jitCompileRegexEPNS_12JSGlobalDataERNS0_14RegexCodeBlockERKNS_7UStringERjRPKcbb __ZN3JSC4Yarr12compileRegexERKNS_7UStringERNS0_12RegexPatternE +__ZN3JSC4Yarr6ParserINS0_23RegexPatternConstructorEE5parseEv __ZN3JSC4Yarr18PatternDisjunction17addNewAlternativeEv -__ZN3WTF6VectorIPN3JSC4Yarr18PatternAlternativeELm0EE14expandCapacityEm -__ZN3JSC4Yarr6ParserINS0_23RegexPatternConstructorEE11parseTokensEv +__ZN3WTF6VectorIPN3JSC4Yarr18PatternAlternativeELm0EE15reserveCapacityEm +__ZN3JSC4Yarr23RegexPatternConstructor20atomPatternCharacterEt __ZN3WTF6VectorIN3JSC4Yarr11PatternTermELm0EE14expandCapacityEmPKS3_ __ZN3WTF6VectorIN3JSC4Yarr11PatternTermELm0EE14expandCapacityEm __ZN3JSC4Yarr6ParserINS0_23RegexPatternConstructorEE11parseEscapeILb0ES2_EEbRT0_ -__ZN3JSC4Yarr23RegexPatternConstructor25atomBuiltInCharacterClassENS0_23BuiltInCharacterClassIDEb -__ZN3JSC4Yarr14wordcharCreateEv -__ZN3WTF6VectorItLm0EE14expandCapacityEm -__ZN3WTF6VectorIN3JSC4Yarr14CharacterRangeELm0EE14expandCapacityEmPKS3_ -__ZN3WTF6VectorIN3JSC4Yarr14CharacterRangeELm0EE14expandCapacityEm -__ZN3WTF6VectorIPN3JSC4Yarr14CharacterClassELm0EE14expandCapacityEmPKS4_ -__ZN3WTF6VectorIPN3JSC4Yarr14CharacterClassELm0EE14expandCapacityEm __ZN3JSC4Yarr14RegexGenerator19generateDisjunctionEPNS0_18PatternDisjunctionE -__ZN3JSC12X86Assembler7addl_irEiNS_3X8610RegisterIDE -__ZN3JSC23MacroAssemblerX86Common8branch32ENS0_9ConditionENS_3X8610RegisterIDES3_ -__ZN3JSC22AbstractMacroAssemblerINS_12X86AssemblerEE8JumpList6appendENS2_4JumpE +__ZN3JSC12X86Assembler7addl_irEiNS_12X86Registers10RegisterIDE +__ZN3JSC23MacroAssemblerX86Common8branch32ENS0_9ConditionENS_12X86Registers10RegisterIDES3_ __ZN3JSC4Yarr14RegexGenerator12generateTermERNS1_19TermGenerationStateE -__ZN3JSC23MacroAssemblerX86Common8branch32ENS0_9ConditionENS_3X8610RegisterIDENS_22AbstractMacroAssemblerINS_12X86AssemblerEE5I +__ZN3JSC12X86Assembler23X86InstructionFormatter9oneByteOpENS0_15OneByteOpcodeIDEiNS_12X86Registers10RegisterIDES4_ii __ZN3JSC4Yarr14RegexGenerator19TermGenerationState15jumpToBacktrackENS_22AbstractMacroAssemblerINS_12X86AssemblerEE4JumpEPNS_14 -__ZN3JSC4Yarr14RegexGenerator13readCharacterEiNS_3X8610RegisterIDE -__ZN3JSC4Yarr14RegexGenerator19matchCharacterClassENS_3X8610RegisterIDERNS_22AbstractMacroAssemblerINS_12X86AssemblerEE8JumpLis -__ZN3JSC4Yarr14RegexGenerator24matchCharacterClassRangeENS_3X8610RegisterIDERNS_22AbstractMacroAssemblerINS_12X86AssemblerEE8Ju +__ZN3JSC4Yarr14RegexGenerator19jumpIfCharNotEqualsEti +__ZN3JSC12X86Assembler7subl_irEiNS_12X86Registers10RegisterIDE __ZN3JSC22AbstractMacroAssemblerINS_12X86AssemblerEE8JumpList4linkEPS2_ -__ZN3JSC23MacroAssemblerX86Common4jumpEv -__ZN3WTF6VectorIN3JSC22AbstractMacroAssemblerINS1_12X86AssemblerEE4JumpELm16EED1Ev -__ZN3JSC4Yarr14RegexGenerator28generateCharacterClassGreedyERNS1_19TermGenerationStateE -__ZN3JSC12X86Assembler7subl_irEiNS_3X8610RegisterIDE -__ZN3JSC15AssemblerBuffer4growEv +__ZN3WTF15deleteAllValuesIPN3JSC4Yarr18PatternDisjunctionELm4EEEvRKNS_6VectorIT_XT0_EEE __ZN3WTF15deleteAllValuesIPN3JSC4Yarr14CharacterClassELm0EEEvRKNS_6VectorIT_XT0_EEE -__ZN3JSC17BytecodeGenerator13emitNewRegExpEPNS_10RegisterIDEPNS_6RegExpE -__ZN3JSC15ConditionalNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE -__ZN3JSC9EqualNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE -__ZNK3JSC14ExpressionNode6isNullEv -__ZNK3JSC10StringNode6isPureERNS_17BytecodeGeneratorE -__ZN3JSC19BracketAccessorNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE -__ZNK3JSC10NumberNode6isPureERNS_17BytecodeGeneratorE -__ZN3JSC10NumberNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE -__ZN3JSC17BytecodeGenerator8emitLoadEPNS_10RegisterIDEd -__ZN3JSC17BytecodeGenerator12emitGetByValEPNS_10RegisterIDES2_S2_ -__ZN3JSC17BytecodeGenerator14emitEqualityOpENS_8OpcodeIDEPNS_10RegisterIDES3_S3_ -__ZN3JSC19ReverseBinaryOpNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE -__ZNK3JSC14ExpressionNode5isAddEv -__ZN3JSC12SmallStrings27createSingleCharacterStringEPNS_12JSGlobalDataEh -__ZN3JSC13AssignDotNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE -__ZN3JSC17BytecodeGenerator11emitPutByIdEPNS_10RegisterIDERKNS_10IdentifierES2_ -__ZN3JSC17AssignResolveNodeD0Ev -__ZN3JSC15ParserArenaDataIN3WTF6VectorISt4pairINS_10IdentifierEjELm0EEEED0Ev -__ZN3JSC16VarStatementNodeD0Ev -__ZN3JSC14LogicalNotNodeD0Ev -__ZN3JSC10RegExpNodeD0Ev -__ZN3JSC10NumberNodeD0Ev -__ZN3JSC19BracketAccessorNodeD0Ev -__ZN3JSC9EqualNodeD0Ev -__ZN3JSC15ConditionalNodeD0Ev -__ZN3JSC7AddNodeD0Ev -__ZN3JSC13GreaterEqNodeD0Ev -__ZN3JSC13AssignDotNodeD0Ev -__ZN3JSC3JIT13emit_op_jtrueEPNS_11InstructionE -__ZN3JSC3JIT18emit_op_new_regexpEPNS_11InstructionE -__ZN3JSC3JIT18emit_op_get_by_valEPNS_11InstructionE -__ZN3JSC3JIT10emit_op_eqEPNS_11InstructionE -__ZN3JSC3JIT11emit_op_addEPNS_11InstructionE -__ZN3JSC11JITStubCall11addArgumentEjNS_3X8610RegisterIDE -__ZN3JSC3JIT16emit_op_jnlesseqEPNS_11InstructionE -__ZN3JSC3JIT17emit_op_put_by_idEPNS_11InstructionE -__ZN3JSC3JIT21compilePutByIdHotPathEiPNS_10IdentifierEij -__ZN3JSC3JIT17emitSlow_op_jtrueEPNS_11InstructionERPNS_13SlowCaseEntryE -__ZN3JSC3JIT22emitSlow_op_get_by_valEPNS_11InstructionERPNS_13SlowCaseEntryE -__ZN3JSC3JIT14emitSlow_op_eqEPNS_11InstructionERPNS_13SlowCaseEntryE -__ZN3JSC3JIT20emitSlow_op_jnlesseqEPNS_11InstructionERPNS_13SlowCaseEntryE -__ZN3JSC20MacroAssemblerX86_6413branchTestPtrENS_23MacroAssemblerX86Common9ConditionENS_3X8610RegisterIDES4_ -__ZN3JSC12X86Assembler23X86InstructionFormatter9twoByteOpENS0_15TwoByteOpcodeIDEiNS_3X8610RegisterIDE -__ZN3JSC23MacroAssemblerX86Common12branchDoubleENS0_15DoubleConditionENS_3X8613XMMRegisterIDES3_ -__ZN3JSC3JIT21emitSlow_op_put_by_idEPNS_11InstructionERPNS_13SlowCaseEntryE -__ZN3JSC3JIT22compilePutByIdSlowCaseEiPNS_10IdentifierEiRPNS_13SlowCaseEntryEj -__ZN3JSC13LogicalOpNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE -__ZN3WTF6VectorIN3JSC17GlobalResolveInfoELm0EE14expandCapacityEm -__ZN3JSC17BytecodeGenerator14emitJumpIfTrueEPNS_10RegisterIDEPNS_5LabelE -__ZN3JSC13LogicalOpNodeD0Ev -__ZN3JSC3JIT22emit_op_resolve_globalEPNS_11InstructionE -__ZN3JSC8JITStubs21cti_op_resolve_globalEPPv -__ZNK3JSC8JSString9toBooleanEPNS_9ExecStateE -__ZN3JSC8JSString18getOwnPropertySlotEPNS_9ExecStateERKNS_10IdentifierERNS_12PropertySlotE -__ZN3JSC15StringPrototype18getOwnPropertySlotEPNS_9ExecStateERKNS_10IdentifierERNS_12PropertySlotE -__ZN3JSC12StringObject18getOwnPropertySlotEPNS_9ExecStateERKNS_10IdentifierERNS_12PropertySlotE -__ZN3JSCL20stringProtoFuncMatchEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZNK3JSC8JSString12toThisStringEPNS_9ExecStateE -__ZNK3JSC6JSCell8isObjectEPKNS_9ClassInfoE -__ZNK3JSC6JSCell9classInfoEv -__ZN3JSC4Yarr23RegexPatternConstructor20atomPatternCharacterEt +__ZN3JSC17BytecodeGenerator8emitLoadEPNS_10RegisterIDEPNS_6RegExpE +__ZN3JSC12RegExpObjectC1EN3WTF17NonNullPassRefPtrINS_9StructureEEENS2_INS_6RegExpEEE +__ZN3JSC12RegExpObjectC2EN3WTF17NonNullPassRefPtrINS_9StructureEEENS2_INS_6RegExpEEE +__ZN3JSC4Yarr23RegexPatternConstructor30atomParenthesesSubpatternBeginEb __ZN3JSC4Yarr25CharacterClassConstructor7putCharEt __ZN3JSC4Yarr25CharacterClassConstructor9addSortedERN3WTF6VectorItLm0EEEt +__ZN3WTF6VectorItLm0EE14expandCapacityEm __ZN3JSC4Yarr23RegexPatternConstructor21atomCharacterClassEndEv +__ZN3WTF6VectorIPN3JSC4Yarr14CharacterClassELm0EE14expandCapacityEmPKS4_ +__ZN3WTF6VectorIPN3JSC4Yarr14CharacterClassELm0EE14expandCapacityEm +__ZN3WTF6VectorIPN3JSC4Yarr18PatternDisjunctionELm4EE14expandCapacityEm __ZN3JSC4Yarr23RegexPatternConstructor23setupDisjunctionOffsetsEPNS0_18PatternDisjunctionEjj __ZN3JSC4Yarr14RegexGenerator25generateParenthesesSingleERNS1_19TermGenerationStateE __ZN3JSC4Yarr14RegexGenerator30generateParenthesesDisjunctionERNS0_11PatternTermERNS1_19TermGenerationStateEj __ZN3WTF6VectorIN3JSC4Yarr14RegexGenerator26AlternativeBacktrackRecordELm0EE14expandCapacityEm -__ZN3JSC4Yarr14RegexGenerator19jumpIfCharNotEqualsEti -__ZN3JSC12X86Assembler23X86InstructionFormatter9oneByteOpENS0_15OneByteOpcodeIDEiNS_3X8610RegisterIDES4_ii -__ZN3JSC4Yarr14RegexGenerator19TermGenerationState15jumpToBacktrackERNS_22AbstractMacroAssemblerINS_12X86AssemblerEE8JumpListEP -__ZN3JSC17RegExpConstructor12performMatchEPNS_6RegExpERKNS_7UStringEiRiS6_PPi -__ZN3JSC6RegExp5matchERKNS_7UStringEiPN3WTF11OwnArrayPtrIiEE -__ZN3JSC4Yarr12executeRegexERNS0_14RegexCodeBlockEPKtjjPii -__ZN3JSC8JITStubs17cti_op_new_regexpEPPv -__ZN3JSC12RegExpObjectC1EN3WTF10PassRefPtrINS_9StructureEEENS2_INS_6RegExpEEE +__ZN3JSC4Yarr14RegexGenerator28generateCharacterClassGreedyERNS1_19TermGenerationStateE +__ZN3JSC4Yarr14RegexGenerator19matchCharacterClassENS_12X86Registers10RegisterIDERNS_22AbstractMacroAssemblerINS_12X86Assembler +__ZN3JSC23MacroAssemblerX86Common4jumpEv +__ZN3JSC4Yarr14RegexGenerator13readCharacterEiNS_12X86Registers10RegisterIDE +__ZN3JSC12StringObject3putEPNS_9ExecStateERKNS_10IdentifierENS_7JSValueERNS_15PutPropertySlotE +_JSContextGetGlobalObject +__ZN3WTF13wtfThreadDataEv +_JSClassCreate +__ZN13OpaqueJSClass6createEPK17JSClassDefinition +__ZN13OpaqueJSClassC2EPK17JSClassDefinitionPS_ +__ZN3WTF7Unicode18convertUTF8ToUTF16EPPKcS2_PPtS4_b +_JSClassRetain +_JSObjectMake +__ZN3JSC16JSCallbackObjectINS_8JSObjectEE4initEPNS_9ExecStateE +__ZN13OpaqueJSClass9prototypeEPN3JSC9ExecStateE +__ZN13OpaqueJSClass11contextDataEPN3JSC9ExecStateE +__ZN3WTF9HashTableIP13OpaqueJSClassSt4pairIS2_P24OpaqueJSClassContextDataENS_18PairFirstExtractorIS6_EENS_7PtrHashIS2_EENS_14Pa +__ZN24OpaqueJSClassContextDataC2EP13OpaqueJSClass +_JSStringCreateWithUTF8CString +_JSObjectSetProperty +__ZN3JSC12APIEntryShimC1EPNS_9ExecStateEb +__ZNK14OpaqueJSString10identifierEPN3JSC12JSGlobalDataE +_JSClassRelease +_JSContextGetGlobalContext +_JSGlobalContextRetain +_JSObjectGetProperty +_JSValueToObject +_JSValueProtect +_JSObjectIsFunction +_JSObjectCallAsFunction +__ZN3JSC4callEPNS_9ExecStateENS_7JSValueENS_8CallTypeERKNS_8CallDataES2_RKNS_7ArgListE +__ZN3JSC10JSFunction4callEPNS_9ExecStateENS_7JSValueERKNS_7ArgListE +__ZN3JSC11Interpreter7executeEPNS_18FunctionExecutableEPNS_9ExecStateEPNS_10JSFunctionEPNS_8JSObjectERKNS_7ArgListEPNS_14ScopeC +__ZNK3JSC8NullNode6isNullEv +__ZN3JSC3JIT16emit_op_neq_nullEPNS_11InstructionE +__ZNK3JSC19JSStaticScopeObject14isDynamicScopeERb +__ZN3JSC12RegExpObject18getOwnPropertySlotEPNS_9ExecStateERKNS_10IdentifierERNS_12PropertySlotE +__ZN3JSCL19regExpProtoFuncTestEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE __ZNK3JSC12RegExpObject9classInfoEv -__ZN3JSC18RegExpMatchesArrayC2EPNS_9ExecStateEPNS_24RegExpConstructorPrivateE -__ZN3JSC8JITStubs17cti_op_get_by_valEPPv -__ZN3JSC18RegExpMatchesArray18getOwnPropertySlotEPNS_9ExecStateEjRNS_12PropertySlotE -__ZN3JSC18RegExpMatchesArray17fillArrayInstanceEPNS_9ExecStateE -__ZN3JSC11jsSubstringEPNS_12JSGlobalDataERKNS_7UStringEjj -__ZN3JSC7JSArray3putEPNS_9ExecStateERKNS_10IdentifierENS_7JSValueERNS_15PutPropertySlotE -__ZN3JSC8JSObject3putEPNS_9ExecStateERKNS_10IdentifierENS_7JSValueERNS_15PutPropertySlotE -__ZN3JSC7JSArray18getOwnPropertySlotEPNS_9ExecStateEjRNS_12PropertySlotE -__ZN3JSC8JITStubs9cti_op_eqEPPv -__ZN3JSCeqERKNS_7UStringES2_ -__ZN3JSC8JITStubs10cti_op_addEPPv -__ZN3JSC11concatenateEPNS_7UString3RepES2_ -__ZN3JSCL22stringProtoFuncIndexOfEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZNK3JSC7UString4findERKS0_i -__ZN3JSC8JITStubs16cti_op_put_by_idEPPv +__ZN3JSC12RegExpObject4testEPNS_9ExecStateERKNS_7ArgListE +__ZN3JSC12RegExpObject5matchEPNS_9ExecStateERKNS_7ArgListE +__ZN3JSC6RegExp5matchERKNS_7UStringEiPN3WTF6VectorIiLm32EEE +__ZN3JSC9WhileNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE +__ZN3JSC15StrictEqualNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE +__ZN3JSC3JIT16emit_op_stricteqEPNS_11InstructionE +__ZN3JSC3JIT17compileOpStrictEqEPNS_11InstructionENS0_21CompileOpStrictEqTypeE +__ZN3JSC3JIT17emit_op_nstricteqEPNS_11InstructionE +__ZN3JSC3JIT20emitSlow_op_stricteqEPNS_11InstructionERPNS_13SlowCaseEntryE +__ZN3JSC3JIT21emitSlow_op_nstricteqEPNS_11InstructionERPNS_13SlowCaseEntryE +__ZN3JSC12ContinueNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE +__ZN3JSC17BytecodeGenerator14continueTargetERKNS_10IdentifierE +__ZN3JSCL7dateNowEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +_cti_op_get_by_val +__ZN7WebCore10StringImpl5upperEv +_cti_op_get_by_id_generic +_cti_op_put_by_id_fail __ZNK3JSC7UString8toUInt32EPbb __ZNK3JSC7UString8toDoubleEbb -__ZNK3JSC7UString10getCStringERN3WTF6VectorIcLm32EEE -__ZN3WTF14FastMallocZone11forceUnlockEP14_malloc_zone_t -__Z15jsRegExpCompilePKti24JSRegExpIgnoreCaseOption23JSRegExpMultilineOptionPjPPKc -__ZL30calculateCompiledPatternLengthPKti24JSRegExpIgnoreCaseOptionR11CompileDataR9ErrorCode -__ZL11checkEscapePPKtS0_P9ErrorCodeib -__ZL13compileBranchiPiPPhPPKtS3_P9ErrorCodeS_S_R11CompileData -__Z15jsRegExpExecutePK8JSRegExpPKtiiPii -__ZL5matchPKtPKhiR9MatchData -__ZNK3JSC7UString14toStrictUInt32EPb -__ZN3JSC17ObjectLiteralNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE -__ZN3JSC16PropertyListNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE -__ZN3JSC7TryNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE -__ZN3JSC17BytecodeGenerator9emitCatchEPNS_10RegisterIDEPNS_5LabelES4_ -__ZN3WTF6VectorIN3JSC11HandlerInfoELm0EE14expandCapacityEm -__ZN3JSC17BytecodeGenerator16emitPushNewScopeEPNS_10RegisterIDERNS_10IdentifierES2_ -__ZN3WTF6VectorIN3JSC18ControlFlowContextELm0EE14expandCapacityEm -__ZNK3JSC14ExpressionNode6isPureERNS_17BytecodeGeneratorE -__ZN3JSC12PropertyNodeD0Ev -__ZN3JSC16PropertyListNodeD0Ev -__ZN3JSC17ObjectLiteralNodeD0Ev -__ZN3JSC7TryNodeD0Ev -__ZN3JSC3JIT18emit_op_new_objectEPNS_11InstructionE -__ZN3JSC3JIT13emit_op_catchEPNS_11InstructionE -__ZN3JSC3JIT22emit_op_push_new_scopeEPNS_11InstructionE -__ZN3JSC3JIT15emit_op_resolveEPNS_11InstructionE -__ZN3JSC3JIT17emit_op_pop_scopeEPNS_11InstructionE -__ZN3JSC8JITStubs17cti_op_new_objectEPPv -__ZN3JSC20constructEmptyObjectEPNS_9ExecStateE -__ZN3JSC17StructureStubInfo5derefEv -__ZN3WTF9HashTableINS_6RefPtrIN3JSC7UString3RepEEES5_NS_17IdentityExtractorIS5_EENS2_17IdentifierRepHashENS_10HashTraitsIS5_EES -__ZN3JSC8ThisNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE -__ZN3JSC21ThrowableBinaryOpNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE -__ZN3JSC8ThisNodeD0Ev -__ZN3JSC6InNodeD0Ev -__ZN3JSC3JIT29emit_op_enter_with_activationEPNS_11InstructionE -__ZN3JSC3JIT20emit_op_convert_thisEPNS_11InstructionE -__ZN3JSC3JIT27emit_op_tear_off_activationEPNS_11InstructionE -__ZN3JSC3JIT24emitSlow_op_convert_thisEPNS_11InstructionERPNS_13SlowCaseEntryE -__ZN3JSC8JITStubs22cti_op_push_activationEPPv -__ZN3JSC12JSActivationC1EPNS_9ExecStateEN3WTF10PassRefPtrINS_16FunctionBodyNodeEEE -__ZN3JSC12JSActivationC2EPNS_9ExecStateEN3WTF10PassRefPtrINS_16FunctionBodyNodeEEE +__ZNK3JSC7UString10UTF8StringEb +__ZN3JSC18globalFuncParseIntEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZN3JSC12nonInlineNaNEv +__ZN3JSC15toInt32SlowCaseEdRb +__ZN3JSCL8parseIntERKNS_7UStringEi +__ZN3JSC15globalFuncIsNaNEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZNK7WebCore6String8toDoubleEPb +__ZN7WebCore10StringImpl8toDoubleEPb __ZN3JSC4Yarr6ParserINS0_23RegexPatternConstructorEE11parseEscapeILb1ENS3_28CharacterClassParserDelegateEEEbRT0_ -__ZN3JSC4Yarr12digitsCreateEv +__ZN3JSC4Yarr12spacesCreateEv +__ZN3WTF6VectorIN3JSC4Yarr14CharacterRangeELm0EE14expandCapacityEmPKS3_ +__ZN3WTF6VectorIN3JSC4Yarr14CharacterRangeELm0EE14expandCapacityEm __ZN3JSC4Yarr25CharacterClassConstructor6appendEPKNS0_14CharacterClassE __ZN3JSC4Yarr25CharacterClassConstructor14addSortedRangeERN3WTF6VectorINS0_14CharacterRangeELm0EEEtt __ZN3JSC4Yarr6ParserINS0_23RegexPatternConstructorEE28CharacterClassParserDelegate20atomPatternCharacterEt -__ZN3JSC11GreaterNodeD0Ev -__ZN3JSCL26stringProtoFuncToLowerCaseEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSC8JSString14toThisJSStringEPNS_9ExecStateE -__ZN3JSC7UStringC2EPtib -__ZN3JSC18globalFuncParseIntEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSC11JSImmediate12nonInlineNaNEv -__ZN3JSC8JITStubs11cti_op_lessEPPv -__ZN3JSC8JITStubs9cti_op_inEPPv -__ZNK3JSC6JSCell9getUInt32ERj -__ZNK3JSC8JSObject11hasPropertyEPNS_9ExecStateERKNS_10IdentifierE -__ZL14makePrefixNodePvPN3JSC14ExpressionNodeENS0_8OperatorEiii -__ZN3JSC7ForNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE -__ZN3JSC17BytecodeGenerator13newLabelScopeENS_10LabelScope4TypeEPKNS_10IdentifierE -__ZN3JSC12ContinueNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE -__ZN3JSC17BytecodeGenerator14continueTargetERKNS_10IdentifierE -__ZN3JSC17BytecodeGenerator14emitJumpScopesEPNS_5LabelEi -__ZN3JSC17PrefixResolveNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE -__ZN3JSC21ReadModifyResolveNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE -__ZN3JSC11NewExprNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE -__ZN3JSC17BytecodeGenerator13emitConstructEPNS_10RegisterIDES2_PNS_13ArgumentsNodeEjjj -__ZN3WTF6VectorIN3JSC20GetByIdExceptionInfoELm0EE14expandCapacityEm -__ZN3JSC8LessNodeD0Ev -__ZN3JSC17PrefixResolveNodeD0Ev -__ZN3JSC12ContinueNodeD0Ev -__ZN3JSC7ForNodeD0Ev -__ZN3JSC21ReadModifyResolveNodeD0Ev -__ZN3JSC11NewExprNodeD0Ev -__ZN3JSC3JIT11emit_op_notEPNS_11InstructionE -__ZN3JSC3JIT15emit_op_pre_incEPNS_11InstructionE -__ZN3JSC3JIT20emit_op_loop_if_lessEPNS_11InstructionE -__ZN3JSC3JIT16emitTimeoutCheckEv -__ZN3JSC3JIT20compileBinaryArithOpENS_8OpcodeIDEjjjNS_12OperandTypesE -__ZN3JSC3JIT11emit_op_subEPNS_11InstructionE -__ZN3JSC3JIT17emit_op_constructEPNS_11InstructionE -__ZN3JSC3JIT24emit_op_construct_verifyEPNS_11InstructionE -__ZN3JSC3JIT15emitSlow_op_notEPNS_11InstructionERPNS_13SlowCaseEntryE -__ZN3JSC3JIT19emitSlow_op_pre_incEPNS_11InstructionERPNS_13SlowCaseEntryE -__ZN3JSC3JIT24emitSlow_op_loop_if_lessEPNS_11InstructionERPNS_13SlowCaseEntryE -__ZN3JSC3JIT15emitSlow_op_addEPNS_11InstructionERPNS_13SlowCaseEntryE -__ZN3JSC3JIT28compileBinaryArithOpSlowCaseENS_8OpcodeIDERPNS_13SlowCaseEntryEjjjNS_12OperandTypesE -__ZN3JSC15AssemblerBuffer7putByteEi -__ZN3JSC12X86Assembler23X86InstructionFormatter11twoByteOp64ENS0_15TwoByteOpcodeIDEiNS_3X8610RegisterIDE -__ZN3JSC3JIT15emitSlow_op_subEPNS_11InstructionERPNS_13SlowCaseEntryE -__ZN3JSC3JIT21emitSlow_op_constructEPNS_11InstructionERPNS_13SlowCaseEntryE -__ZN3JSC3JIT27compileOpConstructSetupArgsEPNS_11InstructionE -__ZN3JSC3JIT28emitSlow_op_construct_verifyEPNS_11InstructionERPNS_13SlowCaseEntryE -__ZN3JSC7UString4fromEj -__ZN3JSC10Identifier11addSlowCaseEPNS_9ExecStateEPNS_7UString3RepE -__ZN3JSC8JITStubs10cti_op_notEPPv -__ZN3JSC8JITStubs24cti_op_get_by_id_genericEPPv -__ZN3JSC7JSArrayC2EN3WTF10PassRefPtrINS_9StructureEEERKNS_7ArgListE -__ZN3JSC7JSArray18getOwnPropertySlotEPNS_9ExecStateERKNS_10IdentifierERNS_12PropertySlotE -__ZN3JSCL24stringProtoFuncSubstringEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSC8JITStubs31cti_op_construct_NotJSConstructEPPv -__ZN3JSC3JIT33privateCompilePatchGetArrayLengthENS_22AbstractMacroAssemblerINS_12X86AssemblerEE22ProcessorReturnAddressE -__ZN3JSC8JITStubs27cti_op_get_by_id_proto_listEPPv -__ZN3JSC3JIT30privateCompileGetByIdProtoListEPNS_17StructureStubInfoEPNS_30PolymorphicAccessStructureListEiPNS_9StructureES6_mP -__ZN3JSC3JIT16patchGetByIdSelfEPNS_17StructureStubInfoEPNS_9StructureEmNS_22AbstractMacroAssemblerINS_12X86AssemblerEE22Process -__ZN3JSC14StructureChainC1EPNS_9StructureE -__ZN3JSC14StructureChainC2EPNS_9StructureE -__ZN3JSC3JIT26privateCompileGetByIdChainEPNS_17StructureStubInfoEPNS_9StructureEPNS_14StructureChainEmmNS_22AbstractMacroAssemb -__ZN3JSC8JITStubs23cti_op_put_by_id_secondEPPv -__ZN3JSC8JITStubs15tryCachePutByIDEPNS_9ExecStateEPNS_9CodeBlockEPvNS_7JSValueERKNS_15PutPropertySlotE -__ZN3JSC8JITStubs24cti_op_put_by_id_genericEPPv -__ZN3JSC8JITStubs26cti_op_tear_off_activationEPPv -__ZN3JSC8JITStubs21cti_op_ret_scopeChainEPPv -__ZN3JSC17BytecodeGenerator16emitPutScopedVarEmiPNS_10RegisterIDENS_7JSValueE -__ZN3JSC3JIT22emit_op_get_scoped_varEPNS_11InstructionE -__ZN3JSC3JIT22emit_op_put_scoped_varEPNS_11InstructionE -__ZN3JSC3JIT29emitPutVariableObjectRegisterENS_3X8610RegisterIDES2_i -__ZN3JSC12X86Assembler7movq_rrENS_3X8610RegisterIDENS1_13XMMRegisterIDE -__ZN3WTF20TCMalloc_ThreadCache18DestroyThreadCacheEPv -__ZN3WTF20TCMalloc_ThreadCache11DeleteCacheEPS0_ -__ZN3JSC15StrictEqualNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE -__ZN3JSC15StrictEqualNodeD0Ev -__ZN3JSC3JIT16emit_op_stricteqEPNS_11InstructionE -__ZN3JSC3JIT17compileOpStrictEqEPNS_11InstructionENS0_21CompileOpStrictEqTypeE -__ZN3JSC3JIT20emitSlow_op_stricteqEPNS_11InstructionERPNS_13SlowCaseEntryE -__ZN3JSC8JITStubs15cti_op_stricteqEPPv -__ZN3WTF12detachThreadEj -__ZN3WTFL26pthreadHandleForIdentifierEj -__ZN3WTFL31clearPthreadHandleForIdentifierEj -__ZN3WTF6VectorIPNS0_IN3JSC10IdentifierELm64EEELm32EE14expandCapacityEmPKS4_ -__ZN3WTF6VectorIPNS0_IN3JSC10IdentifierELm64EEELm32EE15reserveCapacityEm -__ZN3JSC8NullNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE -__ZN3JSC8NullNodeD0Ev -__ZN3WTF7HashMapISt4pairINS_6RefPtrIN3JSC7UString3RepEEEjEPNS3_9StructureENS3_28StructureTransitionTableHashENS3_34StructureTra -__ZN3WTF9HashTableISt4pairINS_6RefPtrIN3JSC7UString3RepEEEjES1_IS7_PNS3_9StructureEENS_18PairFirstExtractorISA_EENS3_28Structur -__ZN3JSC9Structure22materializePropertyMapEv -__ZN3JSC15TypeOfValueNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE -__ZN3JSC15TypeOfValueNodeD0Ev -__ZN3JSC12NotEqualNodeD0Ev -__ZN3JSC3JIT11emit_op_neqEPNS_11InstructionE -__ZN3JSC3JIT15emitSlow_op_neqEPNS_11InstructionERPNS_13SlowCaseEntryE -__ZN3JSC8JITStubs13cti_op_typeofEPPv -__ZN3JSC20jsTypeStringForValueEPNS_9ExecStateENS_7JSValueE -__ZN3JSC8JITStubs10cti_op_neqEPPv -__ZN3JSC14ExecutablePool13systemReleaseERKNS0_10AllocationE -__ZN3WTF6VectorItLm0EE14expandCapacityEmPKt -__ZNK3JSC10NumberNode8isNumberEv -__ZNK3JSC14ExpressionNode10isLocationEv -__ZN3WTF6VectorIPN3JSC10RegisterIDELm32EE14expandCapacityEm -__ZNK3JSC11BooleanNode6isPureERNS_17BytecodeGeneratorE -__ZN3JSC4Yarr13newlineCreateEv -__ZN3JSC12X86Assembler23X86InstructionFormatter15emitRexIfNeededEiii -__ZN3JSC12X86Assembler23X86InstructionFormatter11memoryModRMEiNS_3X8610RegisterIDES3_ii -__ZN3JSC17TypeOfResolveNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE -__ZN3JSC17BytecodeGenerator15emitResolveBaseEPNS_10RegisterIDERKNS_10IdentifierE -__ZN3JSC17BytecodeGenerator20emitLoadGlobalObjectEPNS_10RegisterIDEPNS_8JSObjectE -__ZN3WTF6VectorIN3JSC7JSValueELm0EE14expandCapacityEm -__ZNK3JSC7AddNode5isAddEv -__ZN3JSC12BinaryOpNode10emitStrcatERNS_17BytecodeGeneratorEPNS_10RegisterIDES4_PNS_21ReadModifyResolveNodeE -__ZNK3JSC10StringNode8isStringEv -__ZNK3JSC14ExpressionNode8isStringEv -__ZN3JSC17BytecodeGenerator10emitStrcatEPNS_10RegisterIDES2_i -__ZN3JSC4Yarr12spacesCreateEv -__ZN3JSC4Yarr15nonspacesCreateEv -__ZN3JSC8WithNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE -__ZN3JSC17BytecodeGenerator13emitPushScopeEPNS_10RegisterIDE -__ZN3JSC23MacroAssemblerX86Common4moveENS_22AbstractMacroAssemblerINS_12X86AssemblerEE5Imm32ENS_3X8610RegisterIDE -__ZN3JSC14MacroAssembler4peekENS_3X8610RegisterIDEi -__ZN3JSC4Yarr14RegexGenerator12atEndOfInputEv -__ZN3JSC22AbstractMacroAssemblerINS_12X86AssemblerEE8JumpList6linkToENS2_5LabelEPS2_ -__ZN3JSC14MacroAssembler4pokeENS_3X8610RegisterIDEi -__ZN3JSC21FunctionCallValueNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE -__ZN3JSC9ArrayNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE -__ZN3JSC17BytecodeGenerator12emitNewArrayEPNS_10RegisterIDEPNS_11ElementNodeE -__ZN3JSC23CallFunctionCallDotNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE -__ZN3JSC17BytecodeGenerator25emitJumpIfNotFunctionCallEPNS_10RegisterIDEPNS_5LabelE -__ZN3JSC4Yarr14RegexGenerator29generateAssertionWordBoundaryERNS1_19TermGenerationStateE -__ZN3JSC4Yarr14RegexGenerator22matchAssertionWordcharERNS1_19TermGenerationStateERNS_22AbstractMacroAssemblerINS_12X86Assembler -__ZN3WTF6VectorIPN3JSC4Yarr18PatternDisjunctionELm4EE14expandCapacityEm -__ZL14compileBracketiPiPPhPPKtS3_P9ErrorCodeiS_S_R11CompileData -__ZN3JSC9ThrowNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE -__ZN3JSC9CommaNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE -__ZN3WTF9HashTableIdSt4pairIdN3JSC7JSValueEENS_18PairFirstExtractorIS4_EENS_9FloatHashIdEENS_14PairHashTraitsINS_10HashTraitsId -__ZN3JSC17TypeOfResolveNodeD0Ev -__ZN3JSC18NotStrictEqualNodeD0Ev -__ZN3JSC8WithNodeD0Ev -__ZN3JSC21FunctionCallValueNodeD0Ev -__ZN3JSC9ArrayNodeD0Ev -__ZN3JSC11ElementNodeD0Ev -__ZN3JSC23CallFunctionCallDotNodeD0Ev -__ZN3JSC9ThrowNodeD0Ev -__ZN3JSC9CommaNodeD0Ev -__ZN3JSC3JIT23emit_op_unexpected_loadEPNS_11InstructionE -__ZN3JSC3JIT20emit_op_to_primitiveEPNS_11InstructionE -__ZN3JSC3JIT14emit_op_strcatEPNS_11InstructionE -__ZN3JSC3JIT17emit_op_nstricteqEPNS_11InstructionE -__ZN3JSC3JIT18emit_op_push_scopeEPNS_11InstructionE -__ZN3JSC3JIT17emit_op_new_arrayEPNS_11InstructionE -__ZN3JSC3JIT16emit_op_jneq_ptrEPNS_11InstructionE -__ZN3JSC3JIT13emit_op_throwEPNS_11InstructionE -__ZN3JSC3JIT14emit_op_jnlessEPNS_11InstructionE -__ZN3JSC3JIT24emitSlow_op_to_primitiveEPNS_11InstructionERPNS_13SlowCaseEntryE -__ZN3JSC3JIT21emitSlow_op_nstricteqEPNS_11InstructionERPNS_13SlowCaseEntryE -__ZN3JSC3JIT18emitSlow_op_jnlessEPNS_11InstructionERPNS_13SlowCaseEntryE -__ZL15makePostfixNodePvPN3JSC14ExpressionNodeENS0_8OperatorEiii -__ZN3JSC18PostfixResolveNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE -__ZN3JSC18PostfixResolveNodeD0Ev -__ZN3JSC8JITStubs22cti_op_call_arityCheckEPPv -__ZN3JSC19FunctionConstructor16getConstructDataERNS_13ConstructDataE -__ZN3JSCL32constructWithFunctionConstructorEPNS_9ExecStateEPNS_8JSObjectERKNS_7ArgListE -__ZN3JSC17constructFunctionEPNS_9ExecStateERKNS_7ArgListERKNS_10IdentifierERKNS_7UStringEi -__ZN3JSCplERKNS_7UStringES2_ -__ZN3JSC7UString6appendERKS0_ -__ZN3JSC7UString17expandPreCapacityEi -__ZN3WTF11fastReallocILb0EEEPvS1_m -__ZN3JSC14JSGlobalObject3putEPNS_9ExecStateERKNS_10IdentifierENS_7JSValueERNS_15PutPropertySlotE -__ZL11makeDivNodePvPN3JSC14ExpressionNodeES2_b -__ZL12makeMultNodePvPN3JSC14ExpressionNodeES2_b -__ZN3JSC9WhileNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE -__ZN3JSC7ModNodeD0Ev -__ZN3JSC7DivNodeD0Ev -__ZN3JSC8MultNodeD0Ev -__ZN3JSC9WhileNodeD0Ev -__ZN3JSC3JIT11emit_op_modEPNS_11InstructionE -__ZN3JSC3JIT11emit_op_mulEPNS_11InstructionE -__ZN3JSC3JIT20emit_op_loop_if_trueEPNS_11InstructionE -__ZN3JSC3JIT15emitSlow_op_modEPNS_11InstructionERPNS_13SlowCaseEntryE -__ZN3JSC3JIT15emitSlow_op_mulEPNS_11InstructionERPNS_13SlowCaseEntryE -__ZN3JSC3JIT24emitSlow_op_loop_if_trueEPNS_11InstructionERPNS_13SlowCaseEntryE -__ZN3JSCL26stringProtoFuncLastIndexOfEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZNK3JSC7JSValue20toIntegerPreserveNaNEPNS_9ExecStateE -__ZN3JSC8JITStubs10cti_op_divEPPv -__ZN3JSC3JIT22emit_op_loop_if_lesseqEPNS_11InstructionE -__ZN3JSC3JIT26emitSlow_op_loop_if_lesseqEPNS_11InstructionERPNS_13SlowCaseEntryE -__ZN3JSC8JITStubs13cti_op_lesseqEPPv -__ZN3JSCL20stringProtoFuncSplitEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSC19constructEmptyArrayEPNS_9ExecStateE -__ZN3JSC7JSArray3putEPNS_9ExecStateEjNS_7JSValueE -__ZN3JSC7JSArray11putSlowCaseEPNS_9ExecStateEjNS_7JSValueE -__ZN3JSC14ArrayPrototype18getOwnPropertySlotEPNS_9ExecStateERKNS_10IdentifierERNS_12PropertySlotE -__ZN3JSCL18arrayProtoFuncJoinEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3WTF7HashSetIPN3JSC8JSObjectENS_7PtrHashIS3_EENS_10HashTraitsIS3_EEE3addERKS3_ -__ZN3WTF9HashTableIPN3JSC8JSObjectES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E6rehashEi -__ZN3WTF6VectorItLm256EE6appendItEEvPKT_m -__ZN3WTF6VectorItLm256EE14expandCapacityEm -__ZN3WTF6VectorIPN3JSC12CallLinkInfoELm0EE15reserveCapacityEm -__ZN3JSC4Heap7collectEv -__ZN3JSC4Heap30markStackObjectsConservativelyEv -__ZN3JSC4Heap31markCurrentThreadConservativelyEv -__ZN3JSC4Heap39markCurrentThreadConservativelyInternalEv -__ZN3JSC4Heap18markConservativelyEPvS1_ -__ZN3JSC7JSArray4markEv -__ZN3JSC8JSObject4markEv -__ZN3JSC10JSFunction4markEv -__ZN3JSC6JSCell4markEv -__ZN3JSC14JSGlobalObject4markEv -__ZN3JSC15JSWrapperObject4markEv -__ZN3JSC18GlobalEvalFunction4markEv -__ZN3JSC16FunctionBodyNode4markEv -__ZN3JSC9CodeBlock4markEv -__ZN3JSC4Heap20markProtectedObjectsEv -__ZN3JSC12SmallStrings4markEv -__ZN3JSC4Heap5sweepILNS_8HeapTypeE0EEEmv -__ZN3JSC14JSGlobalObjectD2Ev -__ZN3JSC17FunctionPrototypeD1Ev -__ZN3JSC15ObjectPrototypeD1Ev -__ZN3JSC14ArrayPrototypeD1Ev -__ZN3JSC15StringPrototypeD1Ev -__ZN3JSC16BooleanPrototypeD1Ev -__ZN3JSC15NumberPrototypeD1Ev -__ZN3JSC13DatePrototypeD1Ev -__ZN3JSC12DateInstanceD2Ev -__ZN3JSC15RegExpPrototypeD1Ev -__ZN3JSC14ErrorPrototypeD1Ev -__ZN3JSC20NativeErrorPrototypeD1Ev -__ZN3JSC17ObjectConstructorD1Ev -__ZN3JSC19FunctionConstructorD1Ev -__ZN3JSC16ArrayConstructorD1Ev -__ZN3JSC17StringConstructorD1Ev -__ZN3JSC18BooleanConstructorD1Ev -__ZN3JSC17NumberConstructorD1Ev -__ZN3JSC15DateConstructorD1Ev -__ZN3JSC17RegExpConstructorD1Ev -__ZN3JSC16ErrorConstructorD1Ev -__ZN3JSC22NativeErrorConstructorD1Ev -__ZN3JSC10MathObjectD1Ev -__ZN3JSC18GlobalEvalFunctionD1Ev -__ZN3JSC8JSObjectD1Ev +__ZN3JSC4Yarr14RegexGenerator24matchCharacterClassRangeENS_12X86Registers10RegisterIDERNS_22AbstractMacroAssemblerINS_12X86Asse +__ZN3WTF6VectorIN3JSC22AbstractMacroAssemblerINS1_12X86AssemblerEE4JumpELm16EED1Ev +_cti_op_nstricteq +__ZN3JSC27ctiPatchCallByReturnAddressEPNS_9CodeBlockENS_16ReturnAddressPtrENS_21MacroAssemblerCodePtrE +__ZNK3JSC8JSString9toBooleanEPNS_9ExecStateE +_cti_op_is_string +__ZN3JSCL16mathProtoFuncPowEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +_cti_op_get_by_id_proto_list_full +_cti_op_put_by_id_transition_realloc +_cti_timeout_check +__ZN3JSC14TimeoutChecker10didTimeOutEPNS_9ExecStateE +_cti_op_mul +__ZN3JSC4Yarr23RegexPatternConstructor25atomBuiltInCharacterClassENS0_23BuiltInCharacterClassIDEb +_cti_op_convert_this +__ZNK3JSC8JSString12toThisObjectEPNS_9ExecStateE +__ZN3JSC12StringObjectC1EN3WTF17NonNullPassRefPtrINS_9StructureEEEPNS_8JSStringE +__ZN3JSCL22stringProtoFuncReplaceEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZNK3JSC7JSValue12toThisObjectEPNS_9ExecStateE +__ZNK3JSC8JSObject8toStringEPNS_9ExecStateE +__ZNK3JSC8JSObject11toPrimitiveEPNS_9ExecStateENS_22PreferredPrimitiveTypeE +__ZNK3JSC8JSObject12defaultValueEPNS_9ExecStateENS_22PreferredPrimitiveTypeE +__ZN3JSCL23stringProtoFuncToStringEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZNK3JSC12StringObject9classInfoEv +__ZN7WebCore10StringImpl4costEv +__ZN3JSC6JSCell11getCallDataERNS_8CallDataE +__ZN3JSC24charCodeAtThunkGeneratorEPNS_12JSGlobalDataEPNS_14ExecutablePoolE +__ZN3JSCL14stringCharLoadERNS_19SpecializedThunkJITE +_cti_op_get_by_val_string +_JSValueToBoolean +_JSValueUnprotect +_JSGlobalContextRelease +__ZN3JSC4Heap17collectAllGarbageEv +__ZN3JSC4Heap9markRootsEv +__ZN3JSC4Heap30markStackObjectsConservativelyERNS_9MarkStackE +__ZN3JSC4Heap31markCurrentThreadConservativelyERNS_9MarkStackE +__ZN3JSC4Heap39markCurrentThreadConservativelyInternalERNS_9MarkStackE +__ZN3JSC4Heap18markConservativelyERNS_9MarkStackEPvS3_ +__ZN3JSC9MarkStack12markChildrenEPNS_6JSCellE +__ZN3JSC8JSObject12markChildrenERNS_9MarkStackE +__ZN3JSC14JSGlobalObject12markChildrenERNS_9MarkStackE +__ZN3JSCL12markIfNeededERNS_9MarkStackENS_7JSValueE +__ZN3JSC10JSFunction12markChildrenERNS_9MarkStackE +__ZN3JSC18FunctionExecutable13markAggregateERNS_9MarkStackE +__ZN3JSC12JSActivation12markChildrenERNS_9MarkStackE +__ZN3JSC15JSWrapperObject12markChildrenERNS_9MarkStackE +__ZN3JSC7JSArray12markChildrenERNS_9MarkStackE +__ZN3JSC18GlobalEvalFunction12markChildrenERNS_9MarkStackE +__ZN3JSC9CodeBlock13markAggregateERNS_9MarkStackE +__ZN3JSC16JSCallbackObjectINS_8JSObjectEE12markChildrenERNS_9MarkStackE +__ZN3JSC19JSStaticScopeObject12markChildrenERNS_9MarkStackE +__ZN3JSC9MarkStack12releaseStackEPvm +__ZN3JSC4Heap20markProtectedObjectsERNS_9MarkStackE +__ZN3JSC12SmallStrings12markChildrenERNS_9MarkStackE +__ZN3JSC9MarkStack7compactEv +__ZN3JSC4Heap5sweepEv +__ZN3JSC12DateInstanceD1Ev __ZN3JSC9CodeBlock13unlinkCallersEv -__ZN3WTF6VectorINS_6RefPtrIN3JSC6RegExpEEELm0EE6shrinkEm +__ZN3JSC8JSObjectD1Ev __ZN3JSC12JSActivationD1Ev __ZN3JSC12JSActivationD2Ev -__ZN3JSC12RegExpObjectD1Ev -__ZN3JSC18RegExpMatchesArrayD1Ev -__ZN3JSC4Heap5sweepILNS_8HeapTypeE1EEEmv -__ZN3JSC20globalFuncParseFloatEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3WTF17TCMalloc_PageHeap3NewEm -__ZN3JSC8JITStubs28cti_op_construct_JSConstructEPPv -__ZN3JSC8JSObject17createInheritorIDEv -__ZNK3JSC19BracketAccessorNode10isLocationEv -__ZNK3JSC19BracketAccessorNode21isBracketAccessorNodeEv -__ZN3JSC17AssignBracketNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE -__ZN3JSC17BytecodeGenerator12emitPutByValEPNS_10RegisterIDES2_S2_ -__ZN3JSC14PostfixDotNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE -__ZN3JSC17ReadModifyDotNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE -__ZN3JSC17AssignBracketNodeD0Ev -__ZN3JSC14PostfixDotNodeD0Ev -__ZN3JSC17ReadModifyDotNodeD0Ev -__ZN3JSC3JIT18emit_op_put_by_valEPNS_11InstructionE -__ZN3JSC3JIT22emitSlow_op_put_by_valEPNS_11InstructionERPNS_13SlowCaseEntryE -__ZN3JSC16ArrayConstructor16getConstructDataERNS_13ConstructDataE -__ZN3JSCL29constructWithArrayConstructorEPNS_9ExecStateEPNS_8JSObjectERKNS_7ArgListE -__ZN3JSCL27constructArrayWithSizeQuirkEPNS_9ExecStateERKNS_7ArgListE -__ZN3JSC8JITStubs23cti_op_put_by_val_arrayEPPv -__ZN3JSC8JITStubs13cti_op_strcatEPPv -__ZN3JSC7UString3Rep15reserveCapacityEi -__ZN3JSC7UString13appendNumericEi -__ZN3JSC11concatenateEPNS_7UString3RepEi -__ZN3JSC12JSActivation18getOwnPropertySlotEPNS_9ExecStateERKNS_10IdentifierERNS_12PropertySlotE -__ZN3JSCL18stringFromCharCodeEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSC16globalFuncEscapeEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSCL26stringProtoFuncToUpperCaseEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZNK3JSC12JSActivation14isDynamicScopeEv +__ZN3JSC12StringObjectD1Ev +__ZN3JSC4Heap12resizeBlocksEv +__ZN3WTF6VectorIPN3JSC14ExpressionNodeELm8EE14expandCapacityEm +__ZN3WTF6VectorIPNS0_IN3JSC10RegisterIDELm32EEELm32EE14expandCapacityEmPKS4_ +__ZN3WTF6VectorIPNS0_IN3JSC10RegisterIDELm32EEELm32EE15reserveCapacityEm +__ZN3JSC8VoidNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE +__ZN3JSC4Yarr6ParserINS0_23RegexPatternConstructorEE15parseQuantifierEbjj +__ZN3JSC4Yarr14RegexGenerator19TermGenerationState15jumpToBacktrackERNS_22AbstractMacroAssemblerINS_12X86AssemblerEE8JumpListEP +__ZN3JSC4Yarr14wordcharCreateEv +__ZN3JSC4Yarr12digitsCreateEv +__ZN3JSC4Yarr14RegexGenerator30generatePatternCharacterGreedyERNS1_19TermGenerationStateE __ZN3WTF6VectorINS_6RefPtrIN3JSC10RegisterIDEEELm16EE14expandCapacityEm -__ZN3JSC17ObjectConstructor16getConstructDataERNS_13ConstructDataE -__ZN3JSCL30constructWithObjectConstructorEPNS_9ExecStateEPNS_8JSObjectERKNS_7ArgListE -__ZN3JSC8JITStubs17cti_op_put_by_valEPPv -__ZN3JSC15DateConstructor16getConstructDataERNS_13ConstructDataE -__ZN3JSCL28constructWithDateConstructorEPNS_9ExecStateEPNS_8JSObjectERKNS_7ArgListE -__ZN3JSC13constructDateEPNS_9ExecStateERKNS_7ArgListE -__ZN3JSC8JITStubs18cti_op_is_functionEPPv -__ZN3JSC16jsIsFunctionTypeENS_7JSValueE -__ZN3JSC10Identifier5equalEPKNS_7UString3RepEPKc -__ZN3JSC11JSImmediate8toStringENS_7JSValueE -__ZN3JSC7UString4fromEi -__ZN3JSC7UString3Rep11computeHashEPKti -__ZNK3JSC8NullNode6isNullEv -__ZN3JSC9BreakNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE -__ZN3JSC17BytecodeGenerator11breakTargetERKNS_10IdentifierE -__ZN3JSC9BreakNodeD0Ev -__ZN3JSC3JIT15emit_op_eq_nullEPNS_11InstructionE -__ZN3JSC8JITStubs19cti_op_is_undefinedEPPv -__ZN3JSC12JSActivation4markEv -__ZN3JSC12DateInstanceD1Ev -__ZNK3JSC18EmptyStatementNode16isEmptyStatementEv -__ZN3JSC18EmptyStatementNodeD0Ev -__ZN3JSC3JIT15emit_op_pre_decEPNS_11InstructionE -__ZN3JSC3JIT19emitSlow_op_pre_decEPNS_11InstructionERPNS_13SlowCaseEntryE -__ZN3WTF13tryFastMallocEm -__ZN3JSC8JITStubs17cti_timeout_checkEPPv -__ZN3JSC14TimeoutChecker10didTimeOutEPNS_9ExecStateE -__ZN3JSC8JITStubs14cti_op_pre_decEPPv -__ZN3JSC13jsAddSlowCaseEPNS_9ExecStateENS_7JSValueES2_ -__ZNK3JSC8JSString11toPrimitiveEPNS_9ExecStateENS_22PreferredPrimitiveTypeE -__ZNK3JSC8JSObject11toPrimitiveEPNS_9ExecStateENS_22PreferredPrimitiveTypeE -__ZNK3JSC8JSObject12defaultValueEPNS_9ExecStateENS_22PreferredPrimitiveTypeE -__ZN3JSCL22objectProtoFuncValueOfEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSCL25functionProtoFuncToStringEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZNK3JSC10JSFunction9classInfoEv -__ZNK3JSC21UStringSourceProvider8getRangeEii -__ZNK3JSC7UString6substrEii -__ZN3JSC8JITStubs26cti_op_get_by_id_self_failEPPv -__ZN3JSC3JIT29privateCompileGetByIdSelfListEPNS_17StructureStubInfoEPNS_30PolymorphicAccessStructureListEiPNS_9StructureEm -__ZN3JSC8JITStubs16cti_op_nstricteqEPPv -__ZN3JSC9ForInNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE -__ZN3JSC17BytecodeGenerator20emitNextPropertyNameEPNS_10RegisterIDES2_PNS_5LabelE -__ZN3JSC9ForInNodeD0Ev -__ZN3JSC3JIT18emit_op_next_pnameEPNS_11InstructionE -__ZN3JSC8JITStubs17cti_op_get_pnamesEPPv -__ZN3JSC8JSObject16getPropertyNamesEPNS_9ExecStateERNS_17PropertyNameArrayE -__ZN3JSC9Structure26getEnumerablePropertyNamesEPNS_9ExecStateERNS_17PropertyNameArrayEPNS_8JSObjectE -__ZN3JSC9Structure35getEnumerableNamesFromPropertyTableERNS_17PropertyNameArrayE -__ZN3JSC8JITStubs17cti_op_next_pnameEPPv -__ZN3JSC13jsOwnedStringEPNS_12JSGlobalDataERKNS_7UStringE -__ZN3JSC22JSPropertyNameIterator10invalidateEv +___initializeScavenger_block_invoke_1 +__Z22TCMalloc_SystemReleasePvm +__Z21TCMalloc_SystemCommitPvm +__ZNK3JSC7JSValue20toThisObjectSlowCaseEPNS_9ExecStateE +__ZN3JSCL19mathProtoFuncRandomEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZNK3JSC7JSValue19synthesizePrototypeEPNS_9ExecStateE +__ZN3JSCL23numberProtoFuncToStringEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZN3JSC17NumberConstructor18getOwnPropertySlotEPNS_9ExecStateERKNS_10IdentifierERNS_12PropertySlotE +__ZN3JSCL25numberConstructorMaxValueEPNS_9ExecStateENS_7JSValueERKNS_10IdentifierE +__ZN3JSC18sqrtThunkGeneratorEPNS_12JSGlobalDataEPNS_14ExecutablePoolE +__ZN3JSC3JIT26privateCompileGetByIdProtoEPNS_17StructureStubInfoEPNS_9StructureES4_RKNS_10IdentifierERKNS_12PropertySlotEmNS_16 +__ZN3JSC8JSObject3putEPNS_9ExecStateEjNS_7JSValueE +__ZN3JSC10Identifier4fromEPNS_9ExecStateEj +__ZN3JSC4Yarr13newlineCreateEv +__ZN3JSC4Yarr14RegexGenerator29generateAssertionWordBoundaryERNS1_19TermGenerationStateE +__ZN3JSC4Yarr14RegexGenerator22matchAssertionWordcharERNS1_19TermGenerationStateERNS_22AbstractMacroAssemblerINS_12X86Assembler +__ZN3JSCL26stringProtoFuncToLowerCaseEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZN3JSCL22stringProtoFuncIndexOfEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZNK3JSC7UString4findERKS0_j +__ZN3JSC17RegExpConstructor18getOwnPropertySlotEPNS_9ExecStateERKNS_10IdentifierERNS_12PropertySlotE +__ZN3JSC17RegExpConstructor16getConstructDataERNS_13ConstructDataE +__ZN3JSCL30constructWithRegExpConstructorEPNS_9ExecStateEPNS_8JSObjectERKNS_7ArgListE +__ZN3JSC15constructRegExpEPNS_9ExecStateERKNS_7ArgListE +__ZNK3JSC6JSCell9classInfoEv +__ZN3JSCL19regExpProtoFuncExecEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZN3JSC12RegExpObject4execEPNS_9ExecStateERKNS_7ArgListE +__ZNK3JSC17RegExpConstructor14arrayOfMatchesEPNS_9ExecStateE +__ZN3JSC18RegExpMatchesArrayC2EPNS_9ExecStateEPNS_24RegExpConstructorPrivateE +__ZN3JSC7JSArrayC2EN3WTF17NonNullPassRefPtrINS_9StructureEEEj +__ZN3JSC7JSArray15setSubclassDataEPv +__ZN3JSCL24regExpConstructorDollar1EPNS_9ExecStateENS_7JSValueERKNS_10IdentifierE +__ZNK3JSC17RegExpConstructor10getBackrefEPNS_9ExecStateEj +__ZN3JSC20globalFuncParseFloatEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +_cti_op_put_by_id_generic +__ZN3JSC17BytecodeGenerator29uncheckedRegisterForArgumentsEv __ZN3JSC3JIT22emit_op_init_argumentsEPNS_11InstructionE __ZN3JSC3JIT24emit_op_create_argumentsEPNS_11InstructionE -__ZN3JSC8JITStubs33cti_op_create_arguments_no_paramsEPPv -__ZN3JSC9Arguments18getOwnPropertySlotEPNS_9ExecStateERKNS_10IdentifierERNS_12PropertySlotE -__ZN3JSC3JIT16emit_op_post_decEPNS_11InstructionE -__ZN3JSC3JIT20emitSlow_op_post_decEPNS_11InstructionERPNS_13SlowCaseEntryE -__ZN3JSC8JITStubs15cti_op_post_decEPPv -__ZN3JSC9Arguments18getOwnPropertySlotEPNS_9ExecStateEjRNS_12PropertySlotE -__ZN3JSC17RegExpConstructor18getOwnPropertySlotEPNS_9ExecStateERKNS_10IdentifierERNS_12PropertySlotE -__ZN3JSC17RegExpConstructor3putEPNS_9ExecStateERKNS_10IdentifierENS_7JSValueERNS_15PutPropertySlotE -__ZN3JSC6JSCell11getCallDataERNS_8CallDataE -__ZN3JSC10JSFunction3putEPNS_9ExecStateERKNS_10IdentifierENS_7JSValueERNS_15PutPropertySlotE -__ZN3JSC8JITStubs16cti_op_new_arrayEPPv -__ZN3JSC14constructArrayEPNS_9ExecStateERKNS_7ArgListE -__ZN3JSCL18arrayProtoFuncPushEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSCL30comparePropertyMapEntryIndicesEPKvS1_ -__ZN3WTF6VectorIN3JSC10IdentifierELm20EE15reserveCapacityEm -__ZN3JSC12StringObject3putEPNS_9ExecStateERKNS_10IdentifierENS_7JSValueERNS_15PutPropertySlotE -__ZN3JSC8JITStubs17cti_op_push_scopeEPPv -__ZN3JSC8JITStubs14cti_op_resolveEPPv -__ZN3JSC8JITStubs16cti_op_pop_scopeEPPv -__ZN3JSC3JIT31privateCompilePutByIdTransitionEPNS_17StructureStubInfoEPNS_9StructureES4_mPNS_14StructureChainENS_22AbstractMacr -__ZN3JSC20MacroAssemblerX86_649branchPtrENS_23MacroAssemblerX86Common9ConditionENS_22AbstractMacroAssemblerINS_12X86AssemblerEE -__ZN3JSC3JIT19patchPutByIdReplaceEPNS_17StructureStubInfoEPNS_9StructureEmNS_22AbstractMacroAssemblerINS_12X86AssemblerEE22Proc -__ZN3JSC17NumberConstructor18getOwnPropertySlotEPNS_9ExecStateERKNS_10IdentifierERNS_12PropertySlotE -__ZN3JSC8JITStubs16cti_op_is_stringEPPv -__ZN3JSC8JITStubs19cti_op_convert_thisEPPv -__ZNK3JSC8JSString12toThisObjectEPNS_9ExecStateE -__ZN3JSCL22stringProtoFuncReplaceEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSC12StringObject14toThisJSStringEPNS_9ExecStateE -__ZN3JSCL21arrayProtoFuncForEachEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSC11Interpreter20prepareForRepeatCallEPNS_16FunctionBodyNodeEPNS_9ExecStateEPNS_10JSFunctionEiPNS_14ScopeChainNodeEPNS_7J -__ZN3JSC3JIT16emit_op_post_incEPNS_11InstructionE -__ZN3JSC3JIT20emitSlow_op_post_incEPNS_11InstructionERPNS_13SlowCaseEntryE -__ZN3JSC11Interpreter7executeERNS_16CallFrameClosureEPNS_7JSValueE -__ZN3JSC10MathObject18getOwnPropertySlotEPNS_9ExecStateERKNS_10IdentifierERNS_12PropertySlotE -__ZN3JSC11Interpreter13endRepeatCallERNS_16CallFrameClosureE -__ZN3JSCL21resizePropertyStorageEPNS_8JSObjectEii -__ZN3JSC8JSObject23allocatePropertyStorageEmm -__ZN3JSC14ExecutablePool12poolAllocateEm -__ZN3JSC9Arguments4markEv -__ZN3JSC22JSPropertyNameIterator4markEv -__ZN3JSC3JIT10unlinkCallEPNS_12CallLinkInfoE -__ZN3JSC22JSPropertyNameIteratorD1Ev -__ZN3JSC9ArgumentsD1Ev -__ZN3JSC9ArgumentsD2Ev -__ZN3JSC12StringObjectD1Ev -__ZN3WTF6VectorIPN3JSC9StructureELm8EE14expandCapacityEmPKS3_ -__ZN3WTF6VectorIPN3JSC9StructureELm8EE15reserveCapacityEm +__ZN3JSC20MacroAssemblerX86_6413branchTestPtrENS_23MacroAssemblerX86Common9ConditionENS_22AbstractMacroAssemblerINS_12X86Assemb +_cti_op_load_varargs +__ZN3JSC3JIT19patchPutByIdReplaceEPNS_9CodeBlockEPNS_17StructureStubInfoEPNS_9StructureEmNS_16ReturnAddressPtrE +__ZN3JSC21ThrowableBinaryOpNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE +__ZN3JSCL20stringProtoFuncSplitEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +_cti_op_in __ZN3JSCL19arrayProtoFuncShiftEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSCL11getPropertyEPNS_9ExecStateEPNS_8JSObjectEj +__ZNK3JSC7JSValue8toUInt32EPNS_9ExecStateE +__ZN3JSC7JSArray18getOwnPropertySlotEPNS_9ExecStateEjRNS_12PropertySlotE __ZN3JSC7JSArray14deletePropertyEPNS_9ExecStateEj +__ZN3JSC7JSArray3putEPNS_9ExecStateERKNS_10IdentifierENS_7JSValueERNS_15PutPropertySlotE __ZN3JSC7JSArray9setLengthEj -__ZN3JSC7UString6appendEPKc -__ZN3JSC8JITStubs23cti_op_create_argumentsEPPv +__ZN3JSC23CallFunctionCallDotNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE +__ZN3JSC17BytecodeGenerator25emitJumpIfNotFunctionCallEPNS_10RegisterIDEPNS_5LabelE +_cti_op_create_arguments +__ZN3JSC9Arguments18getOwnPropertySlotEPNS_9ExecStateERKNS_10IdentifierERNS_12PropertySlotE +__ZN3JSC3JIT30privateCompileGetByIdProtoListEPNS_17StructureStubInfoEPNS_30PolymorphicAccessStructureListEiPNS_9StructureES6_RK +__ZN3JSC9ForInNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE +__ZN3JSC17BytecodeGenerator20emitGetPropertyNamesEPNS_10RegisterIDES2_S2_S2_PNS_5LabelE +__ZN3WTF6VectorIN3JSC12ForInContextELm0EE15reserveCapacityEm +__ZN3JSC17BytecodeGenerator20emitNextPropertyNameEPNS_10RegisterIDES2_S2_S2_S2_PNS_5LabelE +__ZN3JSC3JIT18emit_op_get_pnamesEPNS_11InstructionE +__ZN3JSC3JIT20emit_op_get_by_pnameEPNS_11InstructionE +__ZN3JSC3JIT22compileGetDirectOffsetENS_12X86Registers10RegisterIDES2_S2_S2_S2_ +__ZN3JSC3JIT18emit_op_next_pnameEPNS_11InstructionE +__ZN3JSC3JIT24emitSlow_op_get_by_pnameEPNS_11InstructionERPNS_13SlowCaseEntryE +_cti_op_get_pnames +__ZN3JSC22JSPropertyNameIterator6createEPNS_9ExecStateEPNS_8JSObjectE +__ZN3JSC8JSObject16getPropertyNamesEPNS_9ExecStateERNS_17PropertyNameArrayENS_15EnumerationModeE +__ZN3JSC8JSObject19getOwnPropertyNamesEPNS_9ExecStateERNS_17PropertyNameArrayENS_15EnumerationModeE +__ZN3JSC9Structure16getPropertyNamesERNS_17PropertyNameArrayENS_15EnumerationModeE +__ZN3JSCL29objectProtoFuncHasOwnPropertyEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZNK3JSC8JSObject14hasOwnPropertyEPNS_9ExecStateERKNS_10IdentifierE +__ZN3JSC8JSObject18getOwnPropertySlotEPNS_9ExecStateERKNS_10IdentifierERNS_12PropertySlotE +_cti_op_typeof +__ZN3JSC20jsTypeStringForValueEPNS_9ExecStateENS_7JSValueE +__ZN3JSC9Structure27despecifyFunctionTransitionEPS0_RKNS_10IdentifierE +_cti_has_property +__ZN3JSC3JIT26emit_op_tear_off_argumentsEPNS_11InstructionE __ZN3JSCL19arrayProtoFuncSliceEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZNK3JSC7JSValue9toIntegerEPNS_9ExecStateE -__ZN3JSC24ApplyFunctionCallDotNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE -__ZNK3JSC14ExpressionNode13isSimpleArrayEv -__ZN3JSC17BytecodeGenerator26emitJumpIfNotFunctionApplyEPNS_10RegisterIDEPNS_5LabelE -__ZN3JSC17BytecodeGenerator15emitCallVarargsEPNS_10RegisterIDES2_S2_S2_jjj -__ZN3JSC24ApplyFunctionCallDotNodeD0Ev -__ZN3JSC3JIT20emit_op_load_varargsEPNS_11InstructionE -__ZN3JSC3JIT20emit_op_call_varargsEPNS_11InstructionE -__ZN3JSC3JIT20compileOpCallVarargsEPNS_11InstructionE -__ZN3JSC3JIT29compileOpCallVarargsSetupArgsEPNS_11InstructionE -__ZN3JSC3JIT24emitSlow_op_call_varargsEPNS_11InstructionERPNS_13SlowCaseEntryE -__ZN3JSC3JIT28compileOpCallVarargsSlowCaseEPNS_11InstructionERPNS_13SlowCaseEntryE -__ZN3JSC8JITStubs19cti_op_load_varargsEPPv -__ZNK3JSC7JSArray9classInfoEv -__ZN3JSC7JSArray15copyToRegistersEPNS_9ExecStateEPNS_8RegisterEj -__ZNK3JSC7UString30spliceSubstringsWithSeparatorsEPKNS0_5RangeEiPKS0_i +__ZN3JSCL11getPropertyEPNS_9ExecStateEPNS_8JSObjectEj +__ZN3JSC9Arguments18getOwnPropertySlotEPNS_9ExecStateEjRNS_12PropertySlotE +_cti_op_tear_off_arguments +__ZN3JSC10JSFunction19getOwnPropertyNamesEPNS_9ExecStateERNS_17PropertyNameArrayENS_15EnumerationModeE +__ZNK3JSC10JSFunction9classInfoEv +__ZN3JSC17DeleteBracketNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE +__ZN3JSC17BytecodeGenerator15emitDeleteByValEPNS_10RegisterIDES2_S2_ __ZN3JSC8JSObject18getOwnPropertySlotEPNS_9ExecStateEjRNS_12PropertySlotE -__ZN3JSC8JSObject18getOwnPropertySlotEPNS_9ExecStateERKNS_10IdentifierERNS_12PropertySlotE -__ZN3JSC7UString4fromEd -__ZN3WTF4dtoaEPcdiPiS1_PS0_ -__ZN3JSC8JITStubs21cti_op_put_by_id_failEPPv -__ZN3JSC13DeleteDotNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE -__ZN3JSC17BytecodeGenerator14emitDeleteByIdEPNS_10RegisterIDES2_RKNS_10IdentifierE -__ZN3JSC13DeleteDotNodeD0Ev -__ZN3JSC3JIT17emit_op_del_by_idEPNS_11InstructionE -__ZN3JSC8JITStubs16cti_op_del_by_idEPPv -__ZN3JSC10JSFunction14deletePropertyEPNS_9ExecStateERKNS_10IdentifierE +_cti_op_del_by_val __ZN3JSC8JSObject14deletePropertyEPNS_9ExecStateERKNS_10IdentifierE -__ZNK3JSC7ArgList8getSliceEiRS0_ -__ZN3JSC3JIT26emit_op_tear_off_argumentsEPNS_11InstructionE -__ZN3JSC8JITStubs25cti_op_tear_off_argumentsEPPv -__ZNK3JSC12StringObject12toThisStringEPNS_9ExecStateE -__ZN3JSC13PrefixDotNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE -__ZN3JSC13PrefixDotNodeD0Ev -__ZNK3JSC8JSObject8toStringEPNS_9ExecStateE -__ZN3JSCL22arrayProtoFuncToStringEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSCL21arrayProtoFuncIndexOfEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSC16ErrorConstructor16getConstructDataERNS_13ConstructDataE -__ZN3JSCL29constructWithErrorConstructorEPNS_9ExecStateEPNS_8JSObjectERKNS_7ArgListE -__ZN3JSC14constructErrorEPNS_9ExecStateERKNS_7ArgListE -__ZN3JSCL21stringProtoFuncCharAtEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSC8JITStubs32cti_op_get_by_id_proto_list_fullEPPv -__ZN3JSC14InstanceOfNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE -__ZN3JSC17BytecodeGenerator14emitInstanceOfEPNS_10RegisterIDES2_S2_S2_ -__ZN3JSC14InstanceOfNodeD0Ev -__ZN3JSC3JIT18emit_op_instanceofEPNS_11InstructionE -__ZN3JSC3JIT22emitSlow_op_instanceofEPNS_11InstructionERPNS_13SlowCaseEntryE -__ZN3JSC12X86Assembler6orl_irEiNS_3X8610RegisterIDE -__ZN3JSC17RegExpConstructor16getConstructDataERNS_13ConstructDataE -__ZN3JSCL30constructWithRegExpConstructorEPNS_9ExecStateEPNS_8JSObjectERKNS_7ArgListE -__ZN3JSC15constructRegExpEPNS_9ExecStateERKNS_7ArgListE -__ZN3JSC13DatePrototype18getOwnPropertySlotEPNS_9ExecStateERKNS_10IdentifierERNS_12PropertySlotE -__ZN3JSCL20dateProtoFuncGetTimeEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZNK3JSC12DateInstance9classInfoEv -__ZN3JSC12RegExpObject18getOwnPropertySlotEPNS_9ExecStateERKNS_10IdentifierERNS_12PropertySlotE -__ZN3JSCL19regExpProtoFuncTestEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSC12RegExpObject5matchEPNS_9ExecStateERKNS_7ArgListE -__ZN3JSC3JIT18emit_op_jmp_scopesEPNS_11InstructionE -__ZN3JSC3JIT30privateCompileGetByIdChainListEPNS_17StructureStubInfoEPNS_30PolymorphicAccessStructureListEiPNS_9StructureEPNS_1 -__ZN3JSC18globalFuncUnescapeEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSC7UString6appendEt -__ZN3JSC8JSObject3putEPNS_9ExecStateEjNS_7JSValueE -__ZN3JSC17PropertyNameArray3addEPNS_7UString3RepE -__ZN3WTF7HashSetIPN3JSC7UString3RepENS_7PtrHashIS4_EENS_10HashTraitsIS4_EEE3addERKS4_ -__ZN3WTF9HashTableIPN3JSC7UString3RepES4_NS_17IdentityExtractorIS4_EENS_7PtrHashIS4_EENS_10HashTraitsIS4_EESA_E6rehashEi -__ZN3WTF6VectorIN3JSC10IdentifierELm20EE14expandCapacityEm -__ZN3JSCL20arrayProtoFuncConcatEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZNK3JSC9ArrayNode13isSimpleArrayEv -__ZN3JSC8JITStubs10cti_op_mulEPPv -__ZN3JSC8JITStubs16cti_op_is_objectEPPv -__ZN3JSC14jsIsObjectTypeENS_7JSValueE -__ZNK3JSC11Interpreter18retrieveLastCallerEPNS_9ExecStateERiRlRNS_7UStringERNS_7JSValueE -__ZN3JSC9CodeBlock34reparseForExceptionInfoIfNecessaryEPNS_9ExecStateE -__ZNK3JSC10ScopeChain10localDepthEv -__ZNK3JSC12JSActivation9classInfoEv -__ZN3JSC6Parser7reparseINS_16FunctionBodyNodeEEEN3WTF10PassRefPtrIT_EEPNS_12JSGlobalDataEPS5_ -__ZN3JSC16FunctionBodyNode6createEPNS_12JSGlobalDataEPNS_14SourceElementsEPN3WTF6VectorISt4pairINS_10IdentifierEjELm0EEEPNS6_IP -__ZN3JSC13StatementNode6setLocEii -__ZN3JSC16FunctionBodyNode14copyParametersEv -__ZN3JSC16FunctionBodyNode13finishParsingEPNS_10IdentifierEm -__ZN3JSC16FunctionBodyNode31bytecodeForExceptionInfoReparseEPNS_14ScopeChainNodeEPNS_9CodeBlockE -__ZN3JSC9CodeBlock36hasGlobalResolveInfoAtBytecodeOffsetEj -__ZN3JSC9CodeBlock27lineNumberForBytecodeOffsetEPNS_9ExecStateEj -__ZN3WTF6VectorIPvLm0EE14expandCapacityEmPKS1_ -__ZN3WTF6VectorIPvLm0EE15reserveCapacityEm -__ZN3JSC3JIT16emit_op_jeq_nullEPNS_11InstructionE -__ZN3JSC8JITStubs16cti_op_is_numberEPPv -__ZN3JSCL23stringProtoFuncToStringEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZNK3JSC12StringObject9classInfoEv -__ZN3JSC8JITStubs28cti_op_get_by_id_string_failEPPv -__ZN3JSC11JSImmediate9prototypeENS_7JSValueEPNS_9ExecStateE -__ZN3JSCL23numberProtoFuncToStringEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSC3JIT16emit_op_neq_nullEPNS_11InstructionE +_cti_op_is_boolean +__ZN3JSC10SwitchNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE +__ZN3JSC13CaseBlockNode20emitBytecodeForBlockERNS_17BytecodeGeneratorEPNS_10RegisterIDES4_ +__ZN3JSC13CaseBlockNode18tryOptimizedSwitchERN3WTF6VectorIPNS_14ExpressionNodeELm8EEERiS7_ +__ZN3JSCL17processClauseListEPNS_14ClauseListNodeERN3WTF6VectorIPNS_14ExpressionNodeELm8EEERNS_10SwitchKindERbRiSB_ +__ZN3JSC17BytecodeGenerator11beginSwitchEPNS_10RegisterIDENS_10SwitchInfo10SwitchTypeE +__ZN3WTF6VectorIN3JSC10SwitchInfoELm0EE14expandCapacityEm +__ZN3JSC17BytecodeGenerator9endSwitchEjPN3WTF6RefPtrINS_5LabelEEEPPNS_14ExpressionNodeEPS3_ii +__ZN3WTF6VectorIN3JSC15SimpleJumpTableELm0EE14expandCapacityEm +__ZNK3JSC5Label4bindEii +__ZN3JSC3JIT18emit_op_switch_immEPNS_11InstructionE +__ZN3WTF6VectorIN3JSC12SwitchRecordELm0EE14expandCapacityEm +__ZN3WTF6VectorIN3JSC17CodeLocationLabelELm0EE4growEm +_cti_op_switch_imm __ZN3JSC4Yarr23RegexPatternConstructor8copyTermERNS0_11PatternTermE -__ZL17bracketIsAnchoredPKh +__ZL14compileBracketiPiPPhPPKtS3_P9ErrorCodeiS_S_R11CompileData __ZL32branchFindFirstAssertedCharacterPKhb __ZL20branchNeedsLineStartPKhjj +__ZL17bracketIsAnchoredPKh +_cti_op_get_by_id_array_fail +__ZN3JSC17PropertyNameArray3addEPN7WebCore10StringImplE +__ZN3WTF7HashSetIPN7WebCore10StringImplENS_7PtrHashIS3_EENS_10HashTraitsIS3_EEE3addERKS3_ +__ZN3WTF9HashTableIPN7WebCore10StringImplES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E6rehashEi +__ZN3WTF6VectorIN3JSC10IdentifierELm20EE14expandCapacityEm +__ZN3JSCL28numberConstructorPosInfinityEPNS_9ExecStateENS_7JSValueERKNS_10IdentifierE +__ZN3JSCL28numberConstructorNegInfinityEPNS_9ExecStateENS_7JSValueERKNS_10IdentifierE +__ZN3JSC4Heap5resetEv +__ZN3JSC9Arguments12markChildrenERNS_9MarkStackE +__ZN3JSC22JSPropertyNameIterator12markChildrenERNS_9MarkStackE +__ZN3JSC3JIT10unlinkCallEPNS_12CallLinkInfoE +__ZN3JSC9LabelNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE +__ZN3JSC12RegExpObjectD1Ev +__ZN3JSC18RegExpMatchesArrayD1Ev +__ZNK3JSC7JSArray12subclassDataEv +__ZN3JSC15ObjectPrototype18getOwnPropertySlotEPNS_9ExecStateEjRNS_12PropertySlotE +__ZN3JSC22JSPropertyNameIteratorD1Ev +__ZN3JSC22JSPropertyNameIteratorD2Ev +__ZNK3JSC7JSArray9classInfoEv +__ZN3JSC7JSArray15copyToRegistersEPNS_9ExecStateEPNS_8RegisterEj +__ZN3JSC9ArgumentsD1Ev +__ZN3JSC9ArgumentsD2Ev +__ZN3JSC7UString4fromEd +__ZN3WTF32doubleToStringInJavaScriptFormatEdPcPj +__ZN3WTF4dtoaEPcdiPiS1_PS0_ +__ZN3JSC10Identifier11addSlowCaseEPNS_12JSGlobalDataEPN7WebCore10StringImplE +__ZN3WTF6VectorIPN3JSC9StructureELm8EE14expandCapacityEm +_cti_op_resolve_base +__ZN3JSC12JSActivation18getOwnPropertySlotEPNS_9ExecStateERKNS_10IdentifierERNS_12PropertySlotE +__ZN3JSC20charAtThunkGeneratorEPNS_12JSGlobalDataEPNS_14ExecutablePoolE +__ZN3JSCL21stringProtoFuncCharAtEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZN3JSC17PrefixBracketNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE +__ZN3JSC14PostfixDotNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE +__ZN3JSC17BytecodeGenerator11emitPostIncEPNS_10RegisterIDES2_ +__ZN3JSC3JIT16emit_op_post_incEPNS_11InstructionE +__ZN3JSC3JIT20emitSlow_op_post_incEPNS_11InstructionERPNS_13SlowCaseEntryE +__ZN3JSC18PostfixBracketNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE +__ZN3JSC17BytecodeGenerator18pushFinallyContextEPNS_5LabelEPNS_10RegisterIDE +__ZN3JSC17BytecodeGenerator17popFinallyContextEv +__ZN3JSC17BytecodeGenerator19highestUsedRegisterEv +__ZN3JSC17BytecodeGenerator18emitJumpSubroutineEPNS_10RegisterIDEPNS_5LabelE +__ZN3JSC17BytecodeGenerator20emitSubroutineReturnEPNS_10RegisterIDE +__ZN3JSC3JIT11emit_op_jsrEPNS_11InstructionE +__ZN3WTF6VectorIN3JSC3JIT7JSRInfoELm0EE14expandCapacityEm +__ZN3JSC3JIT13emit_op_throwEPNS_11InstructionE +__ZN3JSC3JIT12emit_op_sretEPNS_11InstructionE +__ZN3JSC21ReadModifyBracketNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE +_cti_op_lesseq +__ZN3JSCL20stringProtoFuncMatchEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZN3JSC18RegExpMatchesArray18getOwnPropertySlotEPNS_9ExecStateEjRNS_12PropertySlotE +__ZN3JSC18RegExpMatchesArray17fillArrayInstanceEPNS_9ExecStateE +__ZN3JSC14jsReplaceRangeEPNS_9ExecStateERKNS_7UStringEiiS4_ __ZN3JSC18RegExpMatchesArray18getOwnPropertySlotEPNS_9ExecStateERKNS_10IdentifierERNS_12PropertySlotE -__ZN3JSCL20stringProtoFuncSliceEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSC3JIT17emit_op_jneq_nullEPNS_11InstructionE -__ZN3JSC8JITStubs25cti_op_call_NotJSFunctionEPPv -__ZN3JSC17StringConstructor11getCallDataERNS_8CallDataE -__ZN3JSCL21callStringConstructorEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZNK3JSC12StringObject8toStringEPNS_9ExecStateE +__ZNK3JSC8JSObject11hasPropertyEPNS_9ExecStateEj +__ZN3JSCL24stringProtoFuncSubstringEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +_cti_op_create_arguments_no_params +__ZN3JSCL21arrayProtoFuncUnShiftEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +_cti_op_pre_dec +_cti_op_is_undefined +__ZN3JSC13DeleteDotNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE +__ZN3JSC17BytecodeGenerator14emitDeleteByIdEPNS_10RegisterIDES2_RKNS_10IdentifierE __ZN3JSC23FunctionCallBracketNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE +__ZN3JSC3JIT17emit_op_del_by_idEPNS_11InstructionE +_cti_op_del_by_id +__ZN3WTF37parseDateFromNullTerminatedCharactersEPKc +__ZN3WTFL37parseDateFromNullTerminatedCharactersEPKcRbRi +_cti_op_get_by_id_proto_fail +__ZN3JSC17constructFunctionEPNS_9ExecStateERKNS_7ArgListERKNS_10IdentifierERKNS_7UStringEi +__ZN3WTF6VectorItLm64EE15reserveCapacityEm __ZN3JSC20EvalFunctionCallNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE -__ZN3JSC17BytecodeGenerator19emitResolveWithBaseEPNS_10RegisterIDES2_RKNS_10IdentifierE -__ZN3JSC23FunctionCallBracketNodeD0Ev -__ZN3JSC20EvalFunctionCallNodeD0Ev -__ZN3JSC3JIT25emit_op_resolve_with_baseEPNS_11InstructionE +__ZN3JSC17BytecodeGenerator12emitCallEvalEPNS_10RegisterIDES2_S2_PNS_13ArgumentsNodeEjjj __ZN3JSC3JIT17emit_op_call_evalEPNS_11InstructionE __ZN3JSC3JIT21emitSlow_op_call_evalEPNS_11InstructionERPNS_13SlowCaseEntryE -__ZN3JSC14MacroAssembler4jumpENS_22AbstractMacroAssemblerINS_12X86AssemblerEE5LabelE -__ZN3JSCL19regExpProtoFuncExecEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZNK3JSC7UString12replaceRangeEiiRKS0_ -__ZN3JSC8JITStubs17cti_op_is_booleanEPPv -__ZN3JSC3JIT22emit_op_put_global_varEPNS_11InstructionE -__ZN3JSCL23regExpProtoFuncToStringEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSCL18regExpObjectSourceEPNS_9ExecStateERKNS_10IdentifierERKNS_12PropertySlotE -__ZN3JSCL18regExpObjectGlobalEPNS_9ExecStateERKNS_10IdentifierERKNS_12PropertySlotE -__ZN3JSCL22regExpObjectIgnoreCaseEPNS_9ExecStateERKNS_10IdentifierERKNS_12PropertySlotE -__ZN3JSCL21regExpObjectMultilineEPNS_9ExecStateERKNS_10IdentifierERKNS_12PropertySlotE -__ZN3JSC4Yarr14RegexGenerator30generatePatternCharacterGreedyERNS1_19TermGenerationStateE -__ZN3JSC8JITStubs27cti_op_get_by_id_proto_failEPPv -__ZN3JSC17DeleteResolveNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE -__ZN3JSC17DeleteResolveNodeD0Ev -__ZN3JSC3JIT20emit_op_resolve_baseEPNS_11InstructionE -__ZN3JSC8JITStubs19cti_op_resolve_baseEPPv -__ZN3JSC12JSActivation14deletePropertyEPNS_9ExecStateERKNS_10IdentifierE -__ZN3JSC16JSVariableObject14deletePropertyEPNS_9ExecStateERKNS_10IdentifierE -__ZNK3JSC8JSString8toNumberEPNS_9ExecStateE -__ZN3JSC8JITStubs24cti_op_resolve_with_baseEPPv -__ZN3JSC8JITStubs16cti_op_call_evalEPPv +_cti_op_resolve +_cti_op_call_eval __ZN3JSC11Interpreter8callEvalEPNS_9ExecStateEPNS_12RegisterFileEPNS_8RegisterEiiRNS_7JSValueE __ZN3JSC13LiteralParser5Lexer3lexERNS1_18LiteralParserTokenE -__ZN3JSC13LiteralParser14parseStatementEv -__ZN3JSC13LiteralParser15parseExpressionEv -__ZN3JSC13LiteralParser10parseArrayEv -__ZN3JSC13LiteralParser11parseObjectEv -__ZN3JSC10Identifier3addEPNS_9ExecStateEPKti -__ZN3JSC7JSArray4pushEPNS_9ExecStateENS_7JSValueE -__ZN3JSCL19mathProtoFuncRandomEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3WTF16weakRandomNumberEv -__ZN3JSCL18mathProtoFuncFloorEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSC4Heap15recordExtraCostEm -__ZN3JSC6Parser5parseINS_8EvalNodeEEEN3WTF10PassRefPtrIT_EEPNS_9ExecStateEPNS_8DebuggerERKNS_10SourceCodeEPiPNS_7UStringE -__ZN3JSC9ExecState9thisValueEv -__ZN3JSC11Interpreter7executeEPNS_8EvalNodeEPNS_9ExecStateEPNS_8JSObjectEiPNS_14ScopeChainNodeEPNS_7JSValueE -__ZN3JSC8EvalNode16generateBytecodeEPNS_14ScopeChainNodeE -__ZN3JSC17BytecodeGeneratorC2EPNS_8EvalNodeEPKNS_8DebuggerERKNS_10ScopeChainEPN3WTF7HashMapINS9_6RefPtrINS_7UString3RepEEENS_16 +__ZN3JSC13LiteralParser5parseENS0_11ParserStateE +__ZN3JSC14EvalExecutable7compileEPNS_9ExecStateEPNS_14ScopeChainNodeE +__ZN3JSC6Parser5parseINS_8EvalNodeEEEN3WTF10PassRefPtrIT_EEPNS_12JSGlobalDataEPNS_8DebuggerEPNS_9ExecStateERKNS_10SourceCodeEPi +__ZN3JSC8EvalNode6createEPNS_12JSGlobalDataEPNS_14SourceElementsEPN3WTF6VectorISt4pairIPKNS_10IdentifierEjELm0EEEPNS6_IPNS_16Fu +__ZNK3JSC10ScopeChain10localDepthEv +__ZNK3JSC12JSActivation9classInfoEv +__ZN3JSC17BytecodeGeneratorC1EPNS_8EvalNodeEPKNS_8DebuggerERKNS_10ScopeChainEPN3WTF7HashMapINS9_6RefPtrIN7WebCore10StringImplEE +__ZN3JSC17BytecodeGeneratorC2EPNS_8EvalNodeEPKNS_8DebuggerERKNS_10ScopeChainEPN3WTF7HashMapINS9_6RefPtrIN7WebCore10StringImplEE __ZN3JSC8EvalNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE __ZThn16_N3JSC8EvalNodeD0Ev __ZN3JSC8EvalNodeD0Ev -__ZN3JSC23objectProtoFuncToStringEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZNK3JSC8JSObject9classNameEv -__ZN3JSC11JSImmediate12toThisObjectENS_7JSValueEPNS_9ExecStateE -__ZNK3JSC6JSCell17getTruncatedInt32ERi -__ZN3JSC15toInt32SlowCaseEdRb -__ZN3JSCL20dateProtoFuncSetYearEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZNK3JSC12DateInstance21msToGregorianDateTimeEdbRNS_17GregorianDateTimeE -__ZN3JSC21msToGregorianDateTimeEdbRNS_17GregorianDateTimeE -__ZN3JSCL12getDSTOffsetEdd -__ZN3JSC21gregorianDateTimeToMSERKNS_17GregorianDateTimeEdb -__ZN3JSCL15dateToDayInYearEiii -__ZN3JSC8JITStubs19cti_op_to_primitiveEPPv -__ZN3JSCL21dateProtoFuncToStringEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSC10formatTimeERKNS_17GregorianDateTimeEb -__ZN3JSCL24dateProtoFuncToGMTStringEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSC7UString13appendNumericEd -__ZN3JSC11concatenateEPNS_7UString3RepEd -__ZN3JSCL20dateProtoFuncGetYearEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSCL20dateProtoFuncGetDateEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZN3WTF9HashTableINS_6RefPtrIN7WebCore10StringImplEEESt4pairIS4_NS1_IN3JSC14EvalExecutableEEEENS_18PairFirstExtractorIS9_EENS2 +__ZN3JSC9ExecState9thisValueEv +__ZN3JSC11Interpreter7executeEPNS_14EvalExecutableEPNS_9ExecStateEPNS_8JSObjectEiPNS_14ScopeChainNodeEPNS_7JSValueE +__ZN3JSC14EvalExecutable15generateJITCodeEPNS_9ExecStateEPNS_14ScopeChainNodeE +__ZN3JSC9ThrowNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE +_cti_op_throw +__ZN3JSC9CodeBlock34reparseForExceptionInfoIfNecessaryEPNS_9ExecStateE +__ZN3JSC18FunctionExecutable20reparseExceptionInfoEPNS_12JSGlobalDataEPNS_14ScopeChainNodeEPNS_9CodeBlockE +__ZN3JSC11Interpreter14throwExceptionERPNS_9ExecStateERNS_7JSValueEjb +__ZN3JSC9CodeBlock24handlerForBytecodeOffsetEj +__ZN3JSC11Interpreter15unwindCallFrameERPNS_9ExecStateENS_7JSValueERjRPNS_9CodeBlockE +__ZN3JSC9CodeBlock36hasGlobalResolveInfoAtBytecodeOffsetEj +_cti_op_push_new_scope +__ZN3WTF7HashMapINS_6RefPtrIN7WebCore10StringImplEEEN3JSC16SymbolTableEntryENS5_17IdentifierRepHashENS_10HashTraitsIS4_EENS5_26 +__ZN3JSC19JSStaticScopeObject18getOwnPropertySlotEPNS_9ExecStateERKNS_10IdentifierERNS_12PropertySlotE +__ZN3JSC12JSActivation3putEPNS_9ExecStateERKNS_10IdentifierENS_7JSValueERNS_15PutPropertySlotE +_cti_op_pop_scope +_cti_op_is_number +__ZN3JSCL20arrayProtoFuncConcatEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +_cti_op_stricteq +__ZN3JSCL20arrayProtoFuncSpliceEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZNK3JSC11Interpreter18retrieveLastCallerEPNS_9ExecStateERiRlRNS_7UStringERNS_7JSValueE +__ZN3JSC9CodeBlock27lineNumberForBytecodeOffsetEPNS_9ExecStateEj +__ZN3JSC8RopeImpl20destructNonRecursiveEv +__ZN3JSC8RopeImpl23derefFibersNonRecursiveERN3WTF6VectorIPS0_Lm32EEE +__ZN3JSCL17arrayProtoFuncPopEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZN3JSC7JSArray3popEv +__ZN7WebCore6String6numberEd +__ZN3JSC10Identifier5equalEPKN7WebCore10StringImplEPKc +__ZNK3JSC9Arguments9classInfoEv +__ZN3JSC9Arguments15copyToRegistersEPNS_9ExecStateEPNS_8RegisterEj +__ZN3JSC14InstanceOfNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE +__ZN3JSC17BytecodeGenerator14emitInstanceOfEPNS_10RegisterIDES2_S2_S2_ +__ZN3JSC3JIT18emit_op_instanceofEPNS_11InstructionE +__ZN3JSC3JIT22emitSlow_op_instanceofEPNS_11InstructionERPNS_13SlowCaseEntryE +__ZN3JSC17BytecodeGenerator11emitPostDecEPNS_10RegisterIDES2_ +__ZN3JSC3JIT16emit_op_post_decEPNS_11InstructionE +__ZN3JSC3JIT20emitSlow_op_post_decEPNS_11InstructionERPNS_13SlowCaseEntryE +_cti_op_less +__ZN3JSC13PrefixDotNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE +_cti_op_call_NotJSFunction +__ZN3JSC17StringConstructor11getCallDataERNS_8CallDataE +__ZN3JSCL21callStringConstructorEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZNK3JSC8JSString8toNumberEPNS_9ExecStateE +__ZNK3JSC7UString8toDoubleEv +__ZN3JSC18BooleanConstructor11getCallDataERNS_8CallDataE +__ZN3JSCL22callBooleanConstructorEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZN3JSC7JSArray19getOwnPropertyNamesEPNS_9ExecStateERNS_17PropertyNameArrayENS_15EnumerationModeE +__ZN3JSC9ExecState10arrayTableEPS0_ +__ZN3JSC17DeleteResolveNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE +__ZN3JSCL18arrayProtoFuncSortEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZN3JSC7JSArray4sortEPNS_9ExecStateENS_7JSValueENS_8CallTypeERKNS_8CallDataE +__ZN3WTF6VectorIN3JSC26AVLTreeNodeForArrayCompareELm0EE14expandCapacityEm +__ZN3JSC11Interpreter20prepareForRepeatCallEPNS_18FunctionExecutableEPNS_9ExecStateEPNS_10JSFunctionEiPNS_14ScopeChainNodeEPNS_ +__ZN3WTF7AVLTreeIN3JSC32AVLTreeAbstractorForArrayCompareELj44ENS_18AVLTreeDefaultBSetILj44EEEE6insertEi +__ZN3JSC11Interpreter7executeERNS_16CallFrameClosureEPNS_7JSValueE +__ZN3WTF7AVLTreeIN3JSC32AVLTreeAbstractorForArrayCompareELj44ENS_18AVLTreeDefaultBSetILj44EEEE7balanceEi +__ZN3JSC11Interpreter13endRepeatCallERNS_16CallFrameClosureE +__ZN3JSCL16mathProtoFuncExpEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZN3JSCL17mathProtoFuncATanEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZL17makeLeftShiftNodePN3JSC12JSGlobalDataEPNS_14ExpressionNodeES3_b +__ZN3JSC3JIT14emit_op_lshiftEPNS_11InstructionE +__ZN3JSC3JIT14emit_op_bitandEPNS_11InstructionE +__ZN3JSC3JIT14emit_op_rshiftEPNS_11InstructionE +__ZN3JSC3JIT18emitSlow_op_lshiftEPNS_11InstructionERPNS_13SlowCaseEntryE +__ZN3JSC3JIT18emitSlow_op_bitandEPNS_11InstructionERPNS_13SlowCaseEntryE +__ZN3JSC3JIT18emitSlow_op_rshiftEPNS_11InstructionERPNS_13SlowCaseEntryE +__ZN3JSC32jsSpliceSubstringsWithSeparatorsEPNS_9ExecStateEPNS_8JSStringERKNS_7UStringEPKNS_11StringRangeEiPS5_i +__ZN3JSCL26stringProtoFuncLastIndexOfEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZNK3JSC7JSValue20toIntegerPreserveNaNEPNS_9ExecStateE +__ZNK3JSC7UString5rfindERKS0_j +__ZN3WTF6VectorIiLm0EE15reserveCapacityEm +__ZN3WTF6VectorINS_6RefPtrIN3JSC5LabelEEELm8EE15reserveCapacityEm +__ZN3WTF6VectorISt4pairIiiELm8EE14expandCapacityEm +__ZN3JSC11DoWhileNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE +__ZN3JSC3JIT19emit_op_switch_charEPNS_11InstructionE +_cti_op_switch_char +__ZN3JSCL21stringProtoFuncSearchEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZN3WTF10RefCountedIN3JSC6RegExpEE5derefEv +__ZN3JSC14JSGlobalObjectD2Ev +__ZN3JSC12RegisterFile17clearGlobalObjectEPNS_14JSGlobalObjectE +__ZN3JSC17FunctionPrototypeD1Ev +__ZN3JSC15ObjectPrototypeD1Ev +__ZN3JSC14ArrayPrototypeD1Ev +__ZN3JSC15StringPrototypeD1Ev +__ZN3JSC16BooleanPrototypeD1Ev +__ZN3JSC15NumberPrototypeD1Ev +__ZN3JSC13DatePrototypeD1Ev +__ZN3JSC15RegExpPrototypeD1Ev +__ZN3JSC14ErrorPrototypeD1Ev +__ZN3JSC20NativeErrorPrototypeD1Ev +__ZN3JSC17ObjectConstructorD1Ev +__ZN3JSC19FunctionConstructorD1Ev +__ZN3JSC16ArrayConstructorD1Ev +__ZN3JSC17StringConstructorD1Ev +__ZN3JSC18BooleanConstructorD1Ev +__ZN3JSC17NumberConstructorD1Ev +__ZN3JSC15DateConstructorD1Ev +__ZN3JSC17RegExpConstructorD1Ev +__ZN3JSC16ErrorConstructorD1Ev +__ZN3JSC22NativeErrorConstructorD1Ev +__ZN3JSC10MathObjectD1Ev +__ZN3JSC10JSONObjectD1Ev +__ZN3JSC18GlobalEvalFunctionD1Ev +__ZN3JSC19JSStaticScopeObjectD1Ev +__ZN3JSC19JSStaticScopeObjectD2Ev +__ZN3WTF6VectorIPvLm0EE14expandCapacityEmPKS1_ +__ZN3WTF6VectorIPvLm0EE15reserveCapacityEm +__ZN3JSC16JSCallbackObjectINS_8JSObjectEED1Ev +__ZL25clearReferenceToPrototypeP13OpaqueJSValue +_JSObjectGetPrivate +__ZNK3JSC16JSCallbackObjectINS_8JSObjectEE9classInfoEv +__ZN3JSC28globalFuncEncodeURIComponentEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZN3JSCL6encodeEPNS_9ExecStateERKNS_7ArgListEPKc +__ZN3WTF6VectorItLm64EE9tryAppendItEEbPKT_m +__ZN3WTF6VectorItLm64EE18tryReserveCapacityEm +__ZN3JSC28globalFuncDecodeURIComponentEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZN3JSCL6decodeEPNS_9ExecStateERKNS_7ArgListEPKcb +__ZN3WTF7Unicode18UTF8SequenceLengthEc +__ZN3WTF7Unicode18decodeUTF8SequenceEPKc +__ZN3JSC18EmptyStatementNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE +__ZN3JSCltERKNS_7UStringES2_ +__ZN3WTF6VectorItLm0EE14expandCapacityEmPKt +__ZN3WTF6VectorItLm0EE15reserveCapacityEm +__ZN3JSC18RegExpMatchesArray3putEPNS_9ExecStateEjNS_7JSValueE +__ZN3JSC18RegExpMatchesArray14deletePropertyEPNS_9ExecStateEj +__ZN3JSC18RegExpMatchesArray3putEPNS_9ExecStateERKNS_10IdentifierENS_7JSValueERNS_15PutPropertySlotE +__ZN3JSC14EvalExecutableD0Ev +__ZN3JSC13EvalCodeBlockD0Ev +__ZN3JSC3JIT30emit_op_resolve_global_dynamicEPNS_11InstructionE +__ZN3JSC3JIT34emitSlow_op_resolve_global_dynamicEPNS_11InstructionERPNS_13SlowCaseEntryE +__ZN3JSC19FunctionConstructor16getConstructDataERNS_13ConstructDataE +__ZN3JSCL32constructWithFunctionConstructorEPNS_9ExecStateEPNS_8JSObjectERKNS_7ArgListE +__ZN3JSC17constructFunctionEPNS_9ExecStateERKNS_7ArgListE +__ZN3JSC3JIT18emit_op_jmp_scopesEPNS_11InstructionE +__ZN3JSC8WithNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE +__ZN3JSC17BytecodeGenerator13emitPushScopeEPNS_10RegisterIDE +__ZN3JSC3JIT18emit_op_push_scopeEPNS_11InstructionE +_cti_op_push_scope +_cti_op_jmp_scopes +__ZN3WTF6VectorIN3JSC14ExecutablePool10AllocationELm2EE14expandCapacityEm +__ZN3JSCL26stringProtoFuncToUpperCaseEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZN3JSCL21arrayProtoFuncIndexOfEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZN3JSCL16mathProtoFuncCosEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZN3JSCL17mathProtoFuncASinEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +_cti_op_loop_if_lesseq +__ZN3JSC7JSArray4sortEPNS_9ExecStateE +__ZN3JSC7JSArray17compactForSortingEv +__ZL18makeRightShiftNodePN3JSC12JSGlobalDataEPNS_14ExpressionNodeES3_b +__ZN3JSC3JIT13emit_op_bitorEPNS_11InstructionE +__ZN3JSC3JIT17emitSlow_op_bitorEPNS_11InstructionERPNS_13SlowCaseEntryE +__ZN3WTF6VectorIN3JSC11StringRangeELm16EE14expandCapacityEm +__ZN3WTF6VectorIN3JSC7UStringELm16EE14expandCapacityEmPKS2_ +__ZN3WTF6VectorIN3JSC7UStringELm16EE15reserveCapacityEm +__ZNK3JSC8JSString8toObjectEPNS_9ExecStateE +__ZN3JSC12StringObject14deletePropertyEPNS_9ExecStateERKNS_10IdentifierE +_cti_op_post_dec +__ZN3JSC3JIT14emit_op_bitxorEPNS_11InstructionE +__ZN3JSC3JIT18emitSlow_op_bitxorEPNS_11InstructionERPNS_13SlowCaseEntryE +_cti_op_bitand +_cti_op_bitor +__ZN7WebCore10StringImpl18simplifyWhiteSpaceEv +_cti_op_is_object +__ZN3JSC14jsIsObjectTypeENS_7JSValueE +__ZN3JSC17PrototypeFunction11getCallDataERNS_8CallDataE +__ZN3JSC14globalFuncEvalEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZN3JSCL19isNonASCIIIdentPartEi +__ZN3JSC11Interpreter7executeEPNS_14EvalExecutableEPNS_9ExecStateEPNS_8JSObjectEPNS_14ScopeChainNodeEPNS_7JSValueE +_cti_op_mod +__ZN7WebCore6String6appendEc +__ZN7WebCore6String6appendEPKtj +__ZN3JSC16globalFuncEscapeEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZNK7WebCore6String8foldCaseEv +__ZN7WebCore10StringImpl8foldCaseEv +__ZN3JSC10JSFunction15argumentsGetterEPNS_9ExecStateENS_7JSValueERKNS_10IdentifierE +__ZNK3JSC11Interpreter17retrieveArgumentsEPNS_9ExecStateEPNS_10JSFunctionE +__ZN3WTF6VectorIPN3JSC14ExpressionNodeELm16EE14expandCapacityEm +__ZN3WTF6VectorINS_6RefPtrIN3JSC10RegisterIDEEELm16EE15reserveCapacityEm +__ZN3WTF6VectorIN7WebCore6StringELm0EE14expandCapacityEm +__ZN3JSC8JSObject14deletePropertyEPNS_9ExecStateEj +__ZN3JSC18globalFuncUnescapeEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZN3WTF6VectorItLm64EE14expandCapacityEm +__ZN3JSC3JIT16emit_op_jeq_nullEPNS_11InstructionE +__ZN3WTF7CStringC1EPKc +__ZN3WTFeqERKNS_7CStringES2_ +__ZN7WebCore17equalIgnoringCaseEPKtPKcj +__ZNK7WebCore6String6toUIntEPb +__ZN7WebCore10StringImpl6toUIntEPb +__ZN7WebCore16charactersToUIntEPKtmPb +__ZN7WebCore10StringImpl11reverseFindEti +__ZN3WTF23waitForThreadCompletionEjPPv +__ZN3WTF14FastMallocZone10statisticsEP14_malloc_zone_tP19malloc_statistics_t +__ZNK7WebCore6String18simplifyWhiteSpaceEv +__ZN7WebCore10StringImpl23defaultWritingDirectionEv +__ZN3JSCL20dateProtoFuncSetTimeEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE __ZN3JSCL21dateProtoFuncGetMonthEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZNK3JSC12DateInstance26calculateGregorianDateTimeEPNS_9ExecStateE +__ZN3JSC21msToGregorianDateTimeEPNS_9ExecStateEdbRNS_17GregorianDateTimeE +__ZN3WTFL18calculateDSTOffsetEdd +__ZN3JSCL20dateProtoFuncGetDateEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZNK3JSC7JSValue8inheritsEPKNS_9ClassInfoE +__ZN3JSCL20dateProtoFuncGetYearEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE __ZN3JSCL21dateProtoFuncGetHoursEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE __ZN3JSCL23dateProtoFuncGetMinutesEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZN3JSC3JIT17emit_op_jneq_nullEPNS_11InstructionE +__ZN3JSCL20dateProtoFuncSetYearEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZNK3JSC7JSValue7toInt32EPNS_9ExecStateERb +__ZN3JSC21gregorianDateTimeToMSEPNS_9ExecStateERKNS_17GregorianDateTimeEdb +__ZN3WTF18dateToDaysFrom1970Eiii +__ZN3JSCL21dateProtoFuncSetMonthEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZN3JSCL23setNewValueFromDateArgsEPNS_9ExecStateENS_7JSValueERKNS_7ArgListEib +__ZN3JSCL20dateProtoFuncSetDateEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZN3JSCL24dateProtoFuncToGMTStringEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZNK3JSC12DateInstance29calculateGregorianDateTimeUTCEPNS_9ExecStateE +__ZN3JSC20formatDateUTCVariantERKNS_17GregorianDateTimeERA100_c +__ZN3JSC13formatTimeUTCERKNS_17GregorianDateTimeERA100_c +__ZN3JSC13tryMakeStringIPcPKcS1_EEN3WTF10PassRefPtrIN7WebCore10StringImplEEET_T0_T1_ +__ZN3JSC9parseDateEPNS_9ExecStateERKNS_7UStringE +__ZN3JSC37parseDateFromNullTerminatedCharactersEPNS_9ExecStateEPKc +__ZN3JSC16ArrayConstructor16getConstructDataERNS_13ConstructDataE +__ZN3JSCL29constructWithArrayConstructorEPNS_9ExecStateEPNS_8JSObjectERKNS_7ArgListE +__ZN3JSCL27constructArrayWithSizeQuirkEPNS_9ExecStateERKNS_7ArgListE +__ZN3JSC7JSArrayC1EN3WTF17NonNullPassRefPtrINS_9StructureEEEj +__ZN3JSC17StringConstructor16getConstructDataERNS_13ConstructDataE +__ZN3JSCL30constructWithStringConstructorEPNS_9ExecStateEPNS_8JSObjectERKNS_7ArgListE +__ZN3JSC12StringObjectC1EPNS_9ExecStateEN3WTF17NonNullPassRefPtrINS_9StructureEEERKNS_7UStringE +__ZN3JSC12StringObjectC2EPNS_9ExecStateEN3WTF17NonNullPassRefPtrINS_9StructureEEERKNS_7UStringE +_cti_op_pre_inc __ZN3JSCL23dateProtoFuncGetSecondsEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSCL19dateProtoFuncGetDayEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZN7WebCore6String6removeEji +__ZN3JSC23MacroAssemblerX86Common12branchTest32ENS0_9ConditionENS_22AbstractMacroAssemblerINS_12X86AssemblerEE7AddressENS4_5Imm +__ZN3JSC23MacroAssemblerX86Common8branch32ENS0_9ConditionENS_22AbstractMacroAssemblerINS_12X86AssemblerEE7AddressENS4_5Imm32E +__ZN3JSC12X86Assembler23X86InstructionFormatter9twoByteOpENS0_15TwoByteOpcodeIDEiNS_12X86Registers10RegisterIDEi +__ZNK3JSC7UStringixEj +__ZN3JSC3JIT19emit_op_to_jsnumberEPNS_11InstructionE +__ZN3JSC3JIT23emitSlow_op_to_jsnumberEPNS_11InstructionERPNS_13SlowCaseEntryE +_cti_op_to_jsnumber __ZN3JSCL30dateProtoFuncGetTimezoneOffsetEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSC28createUndefinedVariableErrorEPNS_9ExecStateERKNS_10IdentifierEjPNS_9CodeBlockE -__ZN3JSC9CodeBlock32expressionRangeForBytecodeOffsetEPNS_9ExecStateEjRiS3_S3_ __ZN3JSC5Error6createEPNS_9ExecStateENS_9ErrorTypeERKNS_7UStringEilS6_ __ZN3JSC22NativeErrorConstructor16getConstructDataERNS_13ConstructDataE +__ZN3JSC9constructEPNS_9ExecStateENS_7JSValueENS_13ConstructTypeERKNS_13ConstructDataERKNS_7ArgListE __ZN3JSCL35constructWithNativeErrorConstructorEPNS_9ExecStateEPNS_8JSObjectERKNS_7ArgListE __ZN3JSC22NativeErrorConstructor9constructEPNS_9ExecStateERKNS_7ArgListE +__ZN3JSC13ErrorInstanceC1EN3WTF17NonNullPassRefPtrINS_9StructureEEE __ZN3JSC8JSObject17putWithAttributesEPNS_9ExecStateERKNS_10IdentifierENS_7JSValueEj -__ZN3JSCL23returnToThrowTrampolineEPNS_12JSGlobalDataEPvRS2_ +__ZNK3JSC8JSObject13exceptionTypeEv +__ZN3JSCL22errorProtoFuncToStringEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZN3JSC13tryMakeStringINS_7UStringEPKcS1_EEN3WTF10PassRefPtrIN7WebCore10StringImplEEET_T0_T1_ +__ZN3JSC13ErrorInstanceD1Ev +__ZN3JSC4Heap9freeBlockEm +__ZN3JSC4Heap12freeBlockPtrEPNS_14CollectorBlockE +__ZN3JSC28createUndefinedVariableErrorEPNS_9ExecStateERKNS_10IdentifierEjPNS_9CodeBlockE +__ZN3JSC9CodeBlock32expressionRangeForBytecodeOffsetEPNS_9ExecStateEjRiS3_S3_ +__ZN3JSC10makeStringIPKcNS_7UStringEEES3_T_T0_ +__ZN3JSC13tryMakeStringIPKcNS_7UStringEEEN3WTF10PassRefPtrIN7WebCore10StringImplEEET_T0_ +__ZN3JSCL23returnToThrowTrampolineEPNS_12JSGlobalDataENS_16ReturnAddressPtrERS2_ _ctiVMThrowTrampoline -__ZN3JSC8JITStubs12cti_vm_throwEPPv -__ZN3JSC11Interpreter14throwExceptionERPNS_9ExecStateERNS_7JSValueEjb +_cti_vm_throw __ZNK3JSC8JSObject22isNotAnObjectErrorStubEv -__ZNK3JSC8JSObject19isWatchdogExceptionEv -__ZN3JSC9CodeBlock24handlerForBytecodeOffsetEj -__ZN3JSC8JITStubs21cti_op_push_new_scopeEPPv -__ZN3WTF6VectorIN3JSC22AbstractMacroAssemblerINS1_12X86AssemblerEE4JumpELm16EE14expandCapacityEm -__ZN3JSCL20dateProtoFuncSetTimeEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZNK3WTF7HashMapINS_6RefPtrIN3JSC7UString3RepEEENS1_INS2_8EvalNodeEEENS_7StrHashIS5_EENS_10HashTraitsIS5_EENSA_IS7_EEE3getEPS4 -__ZN3WTF7HashMapINS_6RefPtrIN3JSC7UString3RepEEENS1_INS2_8EvalNodeEEENS_7StrHashIS5_EENS_10HashTraitsIS5_EENSA_IS7_EEE3setEPS4_ -__ZN3WTF9HashTableINS_6RefPtrIN3JSC7UString3RepEEESt4pairIS5_NS1_INS2_8EvalNodeEEEENS_18PairFirstExtractorIS9_EENS_7StrHashIS5_ -__ZN3JSC10LessEqNodeD0Ev -__ZN3JSC8JITStubs14cti_op_jlesseqEPPv -__ZN3JSC8JSString18getPrimitiveNumberEPNS_9ExecStateERdRNS_7JSValueE -__ZL18makeRightShiftNodePvPN3JSC14ExpressionNodeES2_b -__ZN3JSC14RightShiftNodeD0Ev -__ZN3JSC3JIT14emit_op_rshiftEPNS_11InstructionE -__ZN3JSC3JIT18emitSlow_op_rshiftEPNS_11InstructionERPNS_13SlowCaseEntryE -__ZN3JSC18PostfixBracketNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE -__ZN3JSC18PostfixBracketNodeD0Ev -__ZN3JSC21ReadModifyBracketNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE -__ZN3JSC21ReadModifyBracketNodeD0Ev -__ZN3JSC11Interpreter15unwindCallFrameERPNS_9ExecStateENS_7JSValueERjRPNS_9CodeBlockE -__ZN3JSCL22errorProtoFuncToStringEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3WTF23waitForThreadCompletionEjPPv -__ZN3WTF15ThreadConditionD1Ev -__ZN3JSC9Structure24removePropertyTransitionEPS0_RKNS_10IdentifierERm -__ZN3JSC12JSActivation3putEPNS_9ExecStateERKNS_10IdentifierENS_7JSValueERNS_15PutPropertySlotE +__ZNK3JSC7UString5asciiEv +__ZN3JSC6JSLock12DropAllLocksC1ENS_14JSLockBehaviorE +__ZN3JSCL17createJSLockCountEv +__ZN3JSC6JSLock12DropAllLocksD1Ev +__ZNK7WebCore6String5upperEv +__ZN3JSC4Yarr23RegexPatternConstructor31atomParentheticalAssertionBeginEb +__ZN3JSC4Yarr14RegexGenerator30generateParentheticalAssertionERNS1_19TermGenerationStateE +__ZNK3JSC8JSObject8toNumberEPNS_9ExecStateE +__ZN3WTF6VectorIPN3JSC4Yarr18PatternDisjunctionELm4EE14expandCapacityEmPKS4_ +__ZN3JSCL18regExpObjectSourceEPNS_9ExecStateENS_7JSValueERKNS_10IdentifierE +__ZN3JSC17RegExpConstructor11getCallDataERNS_8CallDataE +__ZN3JSCL21callRegExpConstructorEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZN3JSC23objectProtoFuncToStringEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZNK3JSC8JSObject9classNameEv +__ZN3JSC13tryMakeStringIPKcNS_7UStringES2_EEN3WTF10PassRefPtrIN7WebCore10StringImplEEET_T0_T1_ +__ZN3JSC16JSVariableObject14deletePropertyEPNS_9ExecStateERKNS_10IdentifierE +__ZN3JSC9Structure27despecifyDictionaryFunctionERKNS_10IdentifierE +__ZN3JSC36constructBooleanFromImmediateBooleanEPNS_9ExecStateENS_7JSValueE +__ZN3JSC13BooleanObjectC1EN3WTF17NonNullPassRefPtrINS_9StructureEEE +__ZN3JSC17ObjectConstructor16getConstructDataERNS_13ConstructDataE +__ZN3JSCL30constructWithObjectConstructorEPNS_9ExecStateEPNS_8JSObjectERKNS_7ArgListE +__ZNK3JSC9ArrayNode13isSimpleArrayEv +__ZN3JSC7JSArray14deletePropertyEPNS_9ExecStateERKNS_10IdentifierE +__ZN3JSCL27compareByStringPairForQSortEPKvS1_ +__ZN3JSC7compareERKNS_7UStringES2_ +__ZN3JSCL24dateProtoFuncToUTCStringEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZN3JSC17NumberConstructor16getConstructDataERNS_13ConstructDataE +__ZN3JSCL30constructWithNumberConstructorEPNS_9ExecStateEPNS_8JSObjectERKNS_7ArgListE +__ZN3JSC12NumberObjectC1EN3WTF17NonNullPassRefPtrINS_9StructureEEE +__ZN3JSCL20isNonASCIIIdentStartEi +__ZN3JSC9Arguments3putEPNS_9ExecStateERKNS_10IdentifierENS_7JSValueERNS_15PutPropertySlotE +__ZN3JSC14MacroAssembler4peekENS_12X86Registers10RegisterIDEi +__ZN3JSC4Yarr14RegexGenerator12atEndOfInputEv +__ZN3JSC14MacroAssembler8branch32ENS_23MacroAssemblerX86Common9ConditionENS_12X86Registers10RegisterIDENS_22AbstractMacroAssemb +__ZN3JSC22AbstractMacroAssemblerINS_12X86AssemblerEE8JumpList6linkToENS2_5LabelEPS2_ +__ZN3JSC14MacroAssembler4pokeENS_12X86Registers10RegisterIDEi +__ZN3JSCL28substituteBackreferencesSlowERKNS_7UStringES2_PKiPNS_6RegExpEj +__ZN3WTF6VectorItLm0EE6appendItEEvPKT_m +_cti_op_to_primitive +__ZN3JSC15constructNumberEPNS_9ExecStateENS_7JSValueE +__ZNK3JSC12NumberObject9classInfoEv +__Z12jsRegExpFreeP8JSRegExp +__ZN3JSC13BooleanObjectD1Ev +__ZN3JSCL18stringFromCharCodeEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZN3JSC10makeStringIPKcNS_7UStringES2_EES3_T_T0_T1_ +__ZN3JSCL19dateProtoFuncGetDayEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZN3JSC14EvalExecutable20reparseExceptionInfoEPNS_12JSGlobalDataEPNS_14ScopeChainNodeEPNS_9CodeBlockE +__ZN3JSCL22objectProtoFuncValueOfEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZN3JSC8JSObject18getPrimitiveNumberEPNS_9ExecStateERdRNS_7JSValueE +__ZN3JSCL24dateProtoFuncGetFullYearEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZN3JSC12RegExpObject3putEPNS_9ExecStateERKNS_10IdentifierENS_7JSValueERNS_15PutPropertySlotE +__ZN3JSCL24setRegExpObjectLastIndexEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueE +__Z15jsc_pcre_xclassiPKh +__ZN3JSCL28regExpConstructorLeftContextEPNS_9ExecStateENS_7JSValueERKNS_10IdentifierE +__ZNK3JSC17RegExpConstructor14getLeftContextEPNS_9ExecStateE +_cti_to_object +__ZNK3JSC7JSValue16toObjectSlowCaseEPNS_9ExecStateE +_cti_op_sub +__ZN3JSC17NumberConstructor11getCallDataERNS_8CallDataE +__ZN3JSCL21callNumberConstructorEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +_cti_op_bitxor +_cti_op_is_function +__ZN3JSC16jsIsFunctionTypeENS_7JSValueE +__ZN3JSC12NumberObjectD1Ev +__ZN3WTF6VectorIN3JSC22AbstractMacroAssemblerINS1_12X86AssemblerEE4JumpELm16EE14expandCapacityEm +__ZN3JSC8JSString18getPrimitiveNumberEPNS_9ExecStateERdRNS_7JSValueE +__ZN7WebCore6String26fromUTF8WithLatin1FallbackEPKcm +__ZN7WebCore6String8fromUTF8EPKcm +__ZN3WTF10fastStrDupEPKc +__ZN3JSC10throwErrorEPNS_9ExecStateENS_9ErrorTypeE +__ZN3WTF6VectorIN3JSC15StringJumpTableELm0EE14expandCapacityEm +__ZN3WTF9HashTableINS_6RefPtrIN7WebCore10StringImplEEESt4pairIS4_N3JSC14OffsetLocationEENS_18PairFirstExtractorIS8_EENS2_10Stri +__ZN3JSC3JIT21emit_op_switch_stringEPNS_11InstructionE +__ZN3JSC13LiteralParser5Lexer9lexNumberERNS1_18LiteralParserTokenE +__ZN3WTF6VectorIPNS_14StringImplBaseELm32EE14expandCapacityEm +__ZN3JSC4Yarr17nonwordcharCreateEv +__ZN3JSC3JIT15emit_op_eq_nullEPNS_11InstructionE +_cti_op_switch_string +__ZN3JSC12X86Assembler23X86InstructionFormatter15emitRexIfNeededEiii +__ZN3JSC12X86Assembler23X86InstructionFormatter11memoryModRMEiNS_12X86Registers10RegisterIDES3_ii +__ZN3JSC4Yarr6ParserINS0_23RegexPatternConstructorEE28CharacterClassParserDelegate25atomBuiltInCharacterClassENS0_23BuiltInChar +__ZN3JSC4Yarr15nonspacesCreateEv +__ZN3JSCL25functionProtoFuncToStringEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZNK3JSC21UStringSourceProvider8getRangeEii +__ZNK3JSC7UString6substrEjj +__ZN3JSC10makeStringINS_7UStringEPKcS1_EES1_T_T0_T1_ +__ZNK3JSC18FunctionExecutable11paramStringEv +__ZN3WTF6VectorItLm64EE6appendItEEvPKT_m +__ZN3JSC13tryMakeStringIPKcNS_7UStringES2_S3_S2_S3_EEN3WTF10PassRefPtrIN7WebCore10StringImplEEET_T0_T1_T2_T3_T4_ +__ZN3JSC17RegExpConstructor3putEPNS_9ExecStateERKNS_10IdentifierENS_7JSValueERNS_15PutPropertySlotE +__ZN3JSCL21arrayProtoFuncForEachEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZN3JSC10JSFunction14deletePropertyEPNS_9ExecStateERKNS_10IdentifierE +__ZN3JSCL22arrayProtoFuncToStringEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZN3JSC16ErrorConstructor16getConstructDataERNS_13ConstructDataE +__ZN3JSCL29constructWithErrorConstructorEPNS_9ExecStateEPNS_8JSObjectERKNS_7ArgListE +__ZN3JSC14constructErrorEPNS_9ExecStateERKNS_7ArgListE +_cti_op_instanceof +__ZN3JSC6RegExp6createEPNS_12JSGlobalDataERKNS_7UStringE +__ZN3WTF9HashTableIPN7WebCore10StringImplES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E4findIS3_NS_ +_cti_op_get_by_id_string_fail +__ZN3JSCL20stringProtoFuncSliceEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZN3JSC14MacroAssembler4jumpENS_22AbstractMacroAssemblerINS_12X86AssemblerEE5LabelE +__ZN3JSCL23regExpProtoFuncToStringEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZN3JSCL18regExpObjectGlobalEPNS_9ExecStateENS_7JSValueERKNS_10IdentifierE +__ZN3JSCL22regExpObjectIgnoreCaseEPNS_9ExecStateENS_7JSValueERKNS_10IdentifierE +__ZN3JSCL21regExpObjectMultilineEPNS_9ExecStateENS_7JSValueERKNS_10IdentifierE +__ZN3JSC13tryMakeStringIPKcNS_7UStringEPcEEN3WTF10PassRefPtrIN7WebCore10StringImplEEET_T0_T1_ +__ZN3JSC12JSActivation14deletePropertyEPNS_9ExecStateERKNS_10IdentifierE +__ZN3WTFL10timerFiredEP16__CFRunLoopTimerPv +__ZN7WebCore22charactersToUIntStrictEPKtmPbi +__ZN3WTF9HashTableIjSt4pairIjN3JSC7JSValueEENS_18PairFirstExtractorIS4_EENS_7IntHashIjEENS_14PairHashTraitsINS_10HashTraitsIjEE +__ZN3JSCL23dateProtoFuncSetMinutesEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZN3JSCL23setNewValueFromTimeArgsEPNS_9ExecStateENS_7JSValueERKNS_7ArgListEib +__ZN3JSCL23dateProtoFuncSetSecondsEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZN3JSCL28dateProtoFuncSetMilliSecondsEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZN3JSCL9dateParseEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZN3JSCL21dateProtoFuncToStringEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZN3JSC10formatDateERKNS_17GregorianDateTimeERA100_c +__ZN3JSC10formatTimeERKNS_17GregorianDateTimeERA100_c +__ZN3JSC19globalFuncEncodeURIEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZN3JSC13UnaryPlusNode14stripUnaryPlusEv +__ZN3JSCL20arrayProtoFuncFilterEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZN3JSCL27objectProtoFuncLookupGetterEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZN3JSC8JSObject12lookupGetterEPNS_9ExecStateERKNS_10IdentifierE +__ZNK3JSC6JSCell14isGetterSetterEv +__ZN3JSCL27objectProtoFuncDefineSetterEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZN3JSC8JSObject12defineSetterEPNS_9ExecStateERKNS_10IdentifierEPS0_j +__ZN3JSCL27objectProtoFuncDefineGetterEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZN3JSC8JSObject12defineGetterEPNS_9ExecStateERKNS_10IdentifierEPS0_j +__ZNK3JSC12GetterSetter14isGetterSetterEv +__ZN3JSC8JSObject15unwrappedObjectEv +__ZN3JSC10JSFunction12callerGetterEPNS_9ExecStateENS_7JSValueERKNS_10IdentifierE +__ZNK3JSC11Interpreter14retrieveCallerEPNS_9ExecStateEPNS_16InternalFunctionE +__ZN3JSC16toUInt32SlowCaseEdRb +__ZN3JSC8JSObject22fillGetterPropertySlotERNS_12PropertySlotEPNS_7JSValueE +__ZNK3JSC12PropertySlot14functionGetterEPNS_9ExecStateE +_cti_op_get_by_id_getter_stub +__ZN3JSC12GetterSetter12markChildrenERNS_9MarkStackE +__ZN3JSCL17mathProtoFuncACosEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZN3WTF13tryFastCallocEmm +__ZN3JSC3JIT20emit_op_resolve_skipEPNS_11InstructionE +_cti_op_resolve_skip +__ZN3JSC3JIT15emit_op_urshiftEPNS_11InstructionE +__ZN3JSC3JIT19emitSlow_op_urshiftEPNS_11InstructionERPNS_13SlowCaseEntryE +__ZN3JSCL25stringProtoFuncCharCodeAtEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZN3WTF6VectorIcLm0EE14expandCapacityEm +__ZN3JSC15AssignErrorNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE +__ZN3JSC23ThrowableExpressionData14emitThrowErrorERNS_17BytecodeGeneratorENS_9ErrorTypeEPKc +__ZN3JSC17BytecodeGenerator12emitNewErrorEPNS_10RegisterIDENS_9ErrorTypeENS_7JSValueE +__ZN3JSC3JIT17emit_op_new_errorEPNS_11InstructionE +__ZN3JSCL27objectProtoFuncLookupSetterEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZN3JSC8JSObject12lookupSetterEPNS_9ExecStateERKNS_10IdentifierE __ZN3JSC26createNotAnObjectErrorStubEPNS_9ExecStateEb __ZN3JSC13JSNotAnObject18getOwnPropertySlotEPNS_9ExecStateERKNS_10IdentifierERNS_12PropertySlotE __ZNK3JSC22JSNotAnObjectErrorStub22isNotAnObjectErrorStubEv __ZN3JSC22createNotAnObjectErrorEPNS_9ExecStateEPNS_22JSNotAnObjectErrorStubEjPNS_9CodeBlockE __ZN3JSC9CodeBlock37getByIdExceptionInfoForBytecodeOffsetEPNS_9ExecStateEjRNS_8OpcodeIDE __ZN3JSCL18createErrorMessageEPNS_9ExecStateEPNS_9CodeBlockEiiiNS_7JSValueENS_7UStringE -__ZN3JSC13ErrorInstanceD1Ev +__ZN3JSC10makeStringIPKcNS_7UStringES2_S3_S2_S3_S2_EES3_T_T0_T1_T2_T3_T4_T5_ +__ZN3JSC13tryMakeStringIPKcNS_7UStringES2_S3_S2_S3_S2_EEN3WTF10PassRefPtrIN7WebCore10StringImplEEET_T0_T1_T2_T3_T4_T5_ __ZN3JSC22JSNotAnObjectErrorStubD1Ev __ZN3JSC13JSNotAnObjectD1Ev -__ZN3JSC19JSStaticScopeObjectD1Ev -__ZN3JSC19JSStaticScopeObjectD2Ev -__ZN3JSC17DeleteBracketNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE -__ZN3JSC17BytecodeGenerator15emitDeleteByValEPNS_10RegisterIDES2_S2_ -__ZN3JSC17DeleteBracketNodeD0Ev -__ZN3JSC8JITStubs17cti_op_del_by_valEPPv -__ZN3JSC8JSObject14deletePropertyEPNS_9ExecStateEj -__ZN3JSC28globalFuncEncodeURIComponentEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSCL6encodeEPNS_9ExecStateERKNS_7ArgListEPKc -__ZNK3JSC7UString10UTF8StringEb -__ZN3WTF7Unicode18convertUTF16ToUTF8EPPKtS2_PPcS4_b -__ZN3JSC10NegateNodeD0Ev -__ZN3JSC8JITStubs13cti_op_negateEPPv -__ZN3JSCL17mathProtoFuncSqrtEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSCL16mathProtoFuncAbsEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSCL18mathProtoFuncRoundEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSCL16mathProtoFuncCosEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSCL16mathProtoFuncSinEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSC8JITStubs10cti_op_subEPPv -__ZNK3JSC8JSObject8toNumberEPNS_9ExecStateE +__ZN3JSC12GetterSetterD1Ev +__ZN3JSC20FixedVMPoolAllocator17coalesceFreeSpaceEv +__ZN3WTF6VectorIPN3JSC13FreeListEntryELm0EE15reserveCapacityEm +__ZN3JSCL35reverseSortFreeListEntriesByPointerEPKvS1_ +__ZN3JSCL33reverseSortCommonSizedAllocationsEPKvS1_ +__ZN7WebCore20equalIgnoringNullityEPNS_10StringImplES1_ +__ZN3JSC19globalFuncDecodeURIEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZN3JSC16ErrorConstructor11getCallDataERNS_8CallDataE +__ZN3JSCL20callErrorConstructorEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZN3JSCL22functionProtoFuncApplyEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZN3JSC9Arguments11fillArgListEPNS_9ExecStateERNS_20MarkedArgumentBufferE +__ZN3JSCL21functionProtoFuncCallEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZN3JSC10JSONObject18getOwnPropertySlotEPNS_9ExecStateERKNS_10IdentifierERNS_12PropertySlotE +_cti_op_lshift +__ZN3JSCL29regExpConstructorRightContextEPNS_9ExecStateENS_7JSValueERKNS_10IdentifierE +__ZNK3JSC17RegExpConstructor15getRightContextEPNS_9ExecStateE +__ZN3JSC20MarkedArgumentBuffer10slowAppendENS_7JSValueE +__ZN3WTF9HashTableIPN3JSC20MarkedArgumentBufferES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E6expan +__ZN3WTF6VectorIN3JSC8RegisterELm8EE15reserveCapacityEm +__ZN3WTF9HashTableIPN3JSC20MarkedArgumentBufferES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E4findI +__ZN3JSCL26stringFromCharCodeSlowCaseEPNS_9ExecStateERKNS_7ArgListE +__ZN3JSC4Yarr12RegexPattern21newlineCharacterClassEv +__ZN3JSC10JSFunction12lengthGetterEPNS_9ExecStateENS_7JSValueERKNS_10IdentifierE +__ZN3JSC18globalFuncIsFiniteEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE __ZN3JSC16ArrayConstructor11getCallDataERNS_8CallDataE __ZN3JSCL20callArrayConstructorEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSC8JITStubs10cti_op_modEPPv -__ZN3JSC8JITStubs12cti_op_jlessEPPv -__ZL17makeLeftShiftNodePvPN3JSC14ExpressionNodeES2_b -__ZN3JSC13LeftShiftNodeD0Ev -__ZN3JSC3JIT14emit_op_lshiftEPNS_11InstructionE -__ZN3JSC3JIT18emitSlow_op_lshiftEPNS_11InstructionERPNS_13SlowCaseEntryE -__ZN3JSC11JITStubCall11addArgumentENS_3X8610RegisterIDE -__ZN3JSCL16mathProtoFuncMaxEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSC10BitAndNodeD0Ev -__ZN3JSC3JIT14emit_op_bitandEPNS_11InstructionE -__ZN3JSC3JIT18emitSlow_op_bitandEPNS_11InstructionERPNS_13SlowCaseEntryE -__ZN3JSC8JITStubs13cti_op_bitandEPPv -__ZN3JSC14BitwiseNotNodeD0Ev +__ZN3JSCL19stringProtoFuncTrimEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZN3JSC15isStrWhiteSpaceEt +__ZN3JSC6JSCell9getObjectEv +_ctiOpThrowNotCaught +__ZN3JSCL22numberProtoFuncValueOfEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZN3JSC12NumberObject11getJSNumberEv +__ZN7WebCore10StringImpl6secureEt +__ZN3JSC23createNotAFunctionErrorEPNS_9ExecStateENS_7JSValueEjPNS_9CodeBlockE +_cti_op_rshift +__ZN3JSC13JSNotAnObject18getOwnPropertySlotEPNS_9ExecStateEjRNS_12PropertySlotE +__ZN3WTF6VectorIN3JSC22AbstractMacroAssemblerINS1_12X86AssemblerEE4JumpELm16EEC2ERKS6_ +__ZN3JSCL21arrayProtoFuncReverseEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZN3WTF21CrossThreadRefCountedINS_16OwnFastMallocPtrIKtEEE5derefEv +_cti_op_post_inc +__ZN3JSCL21regExpObjectLastIndexEPNS_9ExecStateENS_7JSValueERKNS_10IdentifierE __ZN3JSC3JIT14emit_op_bitnotEPNS_11InstructionE __ZN3JSC3JIT18emitSlow_op_bitnotEPNS_11InstructionERPNS_13SlowCaseEntryE -__ZN3JSC22UnsignedRightShiftNodeD0Ev -__ZN3JSC10BitXOrNodeD0Ev -__ZN3JSC3JIT14emit_op_bitxorEPNS_11InstructionE -__ZN3JSC3JIT18emitSlow_op_bitxorEPNS_11InstructionERPNS_13SlowCaseEntryE -__ZN3JSCL25stringProtoFuncCharCodeAtEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSC8JITStubs14cti_op_urshiftEPPv -__ZN3JSC16toUInt32SlowCaseEdRb -__ZN3JSCL17mathProtoFuncCeilEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZNK3JSC6JSCell18getTruncatedUInt32ERj -__ZN3JSC3JIT13emit_op_bitorEPNS_11InstructionE -__ZN3JSC3JIT17emitSlow_op_bitorEPNS_11InstructionERPNS_13SlowCaseEntryE -__ZN3JSC8JITStubs12cti_op_bitorEPPv -__ZN3JSC9BitOrNodeD0Ev -__ZN3JSC8JITStubs13cti_op_rshiftEPPv -__ZN3JSC8JITStubs13cti_op_bitxorEPPv -__ZN3JSC9parseDateERKNS_7UStringE -__ZN3WTF6VectorIN3JSC10CallRecordELm0EE14expandCapacityEmPKS2_ -__ZNK3JSC12JSActivation12toThisObjectEPNS_9ExecStateE -__ZN3JSC3JIT20emit_op_resolve_skipEPNS_11InstructionE -__ZN3JSC8JITStubs19cti_op_resolve_skipEPPv -__ZN3JSCL24dateProtoFuncGetFullYearEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSC17StringConstructor16getConstructDataERNS_13ConstructDataE -__ZN3JSCL30constructWithStringConstructorEPNS_9ExecStateEPNS_8JSObjectERKNS_7ArgListE -__ZN3JSC5equalEPKNS_7UString3RepES3_ -__ZN3JSC8EvalNode4markEv -__ZN3JSC10SwitchNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE -__ZN3JSC13CaseBlockNode20emitBytecodeForBlockERNS_17BytecodeGeneratorEPNS_10RegisterIDES4_ -__ZN3JSC13CaseBlockNode18tryOptimizedSwitchERN3WTF6VectorIPNS_14ExpressionNodeELm8EEERiS7_ -__ZN3JSCL17processClauseListEPNS_14ClauseListNodeERN3WTF6VectorIPNS_14ExpressionNodeELm8EEERNS_10SwitchKindERbRiSB_ -__ZN3WTF6VectorIPN3JSC14ExpressionNodeELm8EE14expandCapacityEm -__ZN3WTF6VectorINS_6RefPtrIN3JSC5LabelEEELm8EE14expandCapacityEm -__ZN3JSC17BytecodeGenerator11beginSwitchEPNS_10RegisterIDENS_10SwitchInfo10SwitchTypeE -__ZN3WTF6VectorIN3JSC10SwitchInfoELm0EE14expandCapacityEm -__ZN3JSC17BytecodeGenerator9endSwitchEjPN3WTF6RefPtrINS_5LabelEEEPPNS_14ExpressionNodeEPS3_ii -__ZN3WTF6VectorIN3JSC15SimpleJumpTableELm0EE14expandCapacityEm -__ZN3WTF6VectorIiLm0EE15reserveCapacityEm -__ZN3JSC14CaseClauseNodeD0Ev -__ZN3JSC14ClauseListNodeD0Ev -__ZN3JSC13CaseBlockNodeD0Ev -__ZN3JSC10SwitchNodeD0Ev -__ZN3JSC3JIT19emit_op_switch_charEPNS_11InstructionE -__ZN3WTF6VectorIN3JSC12SwitchRecordELm0EE14expandCapacityEm -__ZN3WTF6VectorIN3JSC22AbstractMacroAssemblerINS1_12X86AssemblerEE17CodeLocationLabelELm0EE4growEm -__ZN3JSC8JITStubs18cti_op_switch_charEPPv -__ZN3JSCL16mathProtoFuncPowEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3WTF6VectorIcLm0EE14expandCapacityEm -__ZN3WTF6VectorIN3JSC7UString5RangeELm16EE14expandCapacityEm -__ZN3WTF6VectorIN3JSC7UStringELm16EE14expandCapacityEmPKS2_ -__ZN3WTF6VectorIN3JSC7UStringELm16EE15reserveCapacityEm -__ZN3JSC7JSArray16getPropertyNamesEPNS_9ExecStateERNS_17PropertyNameArrayE -__ZN3JSC9ExecState10arrayTableEPS0_ -__ZN3JSC20MarkedArgumentBuffer10slowAppendENS_7JSValueE -__ZN3WTF9HashTableIPN3JSC20MarkedArgumentBufferES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E6rehas -__ZN3JSC8JITStubs24cti_op_get_by_val_stringEPPv -__ZN3JSCL16mathProtoFuncLogEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZNK3JSC7UString8toDoubleEv -__ZN3WTF9HashTableIPN3JSC7UString3RepES4_NS_17IdentityExtractorIS4_EENS_7PtrHashIS4_EENS_10HashTraitsIS4_EESA_E4findIS4_NS_22Id -__ZN3JSCL29objectProtoFuncHasOwnPropertyEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSCL18arrayProtoFuncSortEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSC7JSArray4sortEPNS_9ExecStateENS_7JSValueENS_8CallTypeERKNS_8CallDataE -__ZN3WTF7AVLTreeIN3JSC32AVLTreeAbstractorForArrayCompareELj44ENS_18AVLTreeDefaultBSetILj44EEEE6insertEi -__ZN3JSCltERKNS_7UStringES2_ -__ZN3WTF7AVLTreeIN3JSC32AVLTreeAbstractorForArrayCompareELj44ENS_18AVLTreeDefaultBSetILj44EEEE7balanceEi -__Z12jsRegExpFreeP8JSRegExp -__ZN3JSCL21stringProtoFuncConcatEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSC19globalFuncEncodeURIEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSC19globalFuncDecodeURIEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSCL6decodeEPNS_9ExecStateERKNS_7ArgListEPKcb -__ZN3WTF7Unicode18UTF8SequenceLengthEc -__ZN3WTF7Unicode18decodeUTF8SequenceEPKc -__ZN3JSCL22numberProtoFuncToFixedEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSCL16integerPartNoExpEd -__ZN3WTF14FastMallocZone10statisticsEP14_malloc_zone_tP19malloc_statistics_t -__ZN3JSC4Heap26protectedGlobalObjectCountEv -__ZN3JSC10JSFunction15argumentsGetterEPNS_9ExecStateERKNS_10IdentifierERKNS_12PropertySlotE -__ZNK3JSC11Interpreter17retrieveArgumentsEPNS_9ExecStateEPNS_10JSFunctionE -__ZN3JSCL21dateProtoFuncSetMonthEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSCL23setNewValueFromDateArgsEPNS_9ExecStateENS_7JSValueERKNS_7ArgListEib -__ZN3JSCL20dateProtoFuncSetDateEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3WTF6VectorIPNS0_IN3JSC10RegisterIDELm32EEELm32EE14expandCapacityEm -__ZN3JSC8JITStubs14cti_op_pre_incEPPv -__ZN3WTF6VectorIPN3JSC14ExpressionNodeELm16EE14expandCapacityEm -__ZN3JSC13UnaryPlusNodeD0Ev -__ZN3JSC3JIT19emit_op_to_jsnumberEPNS_11InstructionE -__ZN3JSC3JIT23emitSlow_op_to_jsnumberEPNS_11InstructionERPNS_13SlowCaseEntryE -__ZN3JSC8JITStubs18cti_op_to_jsnumberEPPv -__ZN3JSC6JSLock12DropAllLocksC1Eb -__ZN3JSCL17createJSLockCountEv -__ZN3JSC6JSLock12DropAllLocksD1Ev -__ZN3JSCL24dateProtoFuncSetFullYearEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3WTF6VectorIN3JSC15StringJumpTableELm0EE15reserveCapacityEm -__ZN3WTF7HashMapINS_6RefPtrIN3JSC7UString3RepEEENS2_14OffsetLocationENS_7StrHashIS5_EENS_10HashTraitsIS5_EENS9_IS6_EEE3addEPS4_ -__ZN3WTF9HashTableINS_6RefPtrIN3JSC7UString3RepEEESt4pairIS5_NS2_14OffsetLocationEENS_18PairFirstExtractorIS8_EENS_7StrHashIS5_ -__ZN3JSC3JIT21emit_op_switch_stringEPNS_11InstructionE -__ZN3JSC8JITStubs20cti_op_switch_stringEPPv -__ZN3WTF6VectorIN3JSC14ExecutablePool10AllocationELm2EE14expandCapacityEm -__ZN3JSC12JSGlobalData6createEb -__ZN3JSCL13allocateBlockILNS_8HeapTypeE1EEEPNS_14CollectorBlockEv -__ZN3JSC7JSValueC1EPNS_9ExecStateEd -__ZN3JSC10JSFunctionC1EPNS_9ExecStateEN3WTF10PassRefPtrINS_9StructureEEEiRKNS_10IdentifierEPFNS_7JSValueES2_PNS_8JSObjectESA_RK -__ZN3JSC8JSObject17putDirectFunctionEPNS_9ExecStateEPNS_16InternalFunctionEj -__ZN3JSC7CStringD1Ev -__ZN3WTF7HashMapIPvjNS_7PtrHashIS1_EEN3JSC17JSValueHashTraitsENS_10HashTraitsIjEEE3addERKS1_RKj -__ZN3WTF6VectorINS_6RefPtrIN3JSC12FuncExprNodeEEELm0EE14shrinkCapacityEm -__ZN3JSC14ExpressionNodeD2Ev -__ZThn12_N3JSC11ProgramNodeD0Ev -__ZThn12_N3JSC12FuncExprNodeD0Ev -__ZThn12_N3JSC16FunctionBodyNodeD0Ev -__ZN3JSC8JITStubs16cti_op_new_arrayEPvz -__ZN3WTF6VectorIN3JSC17StructureStubInfoELm0EE15reserveCapacityEm -__ZN3JSC17BytecodeGenerator10emitOpcodeENS_8OpcodeIDE -__ZN3JSC23MacroAssemblerX86Common4moveENS_3X8610RegisterIDES2_ -__ZN3JSC8JITStubs15cti_op_new_funcEPvz -__ZN3JSC8JITStubs21cti_op_resolve_globalEPvz -__ZN3JSC8JITStubs16cti_op_get_by_idEPvz -__ZN3JSC8JITStubs31cti_op_construct_NotJSConstructEPvz -__ZN3JSC8JITStubs16cti_op_put_by_idEPvz -__ZN3JSC8JITStubs13cti_op_strcatEPvz -__ZN3JSC8JITStubs19cti_op_resolve_funcEPvz -__ZN3JSC8JITStubs23cti_vm_dontLazyLinkCallEPvz -__ZN3JSC8JITStubs22cti_op_call_JSFunctionEPvz -__ZN3JSC8JITStubs23cti_register_file_checkEPvz -__ZN3JSC8JITStubs13cti_op_negateEPvz -__ZN3JSC8JITStubs28cti_op_construct_JSConstructEPvz -__ZN3JSC23MacroAssemblerX86Common12branchTest32ENS0_9ConditionENS_22AbstractMacroAssemblerINS_12X86AssemblerEE7AddressENS4_5Imm -__ZN3JSC8JITStubs23cti_op_put_by_val_arrayEPvz -__ZN3JSC8JITStubs23cti_op_put_by_id_secondEPvz -__ZN3JSC15AssemblerBuffer14executableCopyEPNS_14ExecutablePoolE -__ZN3JSC12X86Assembler8sarl_i8rEiNS_3X8610RegisterIDE -__ZN3JSC12X86Assembler23X86InstructionFormatter9twoByteOpENS0_15TwoByteOpcodeIDEiNS_3X8610RegisterIDEi -__ZN3JSC8JITStubs10cti_op_mulEPvz -__ZN3JSC12jsNumberCellEPNS_12JSGlobalDataEd -__ZN3JSC8JITStubs10cti_op_subEPvz -__ZN3JSC8JITStubs10cti_op_divEPvz -__ZN3JSC8JITStubs23cti_op_get_by_id_secondEPvz -__ZN3JSC8JITStubs19cti_vm_lazyLinkCallEPvz -__ZN3WTF6VectorIPN3JSC12CallLinkInfoELm0EE14expandCapacityEm -__ZN3JSC8JITStubs19cti_op_convert_thisEPvz -__ZN3JSC8JITStubs21cti_op_put_by_id_failEPvz -__ZN3JSC8JITStubs10cti_op_addEPvz -__ZN3JSC8JITStubs17cti_timeout_checkEPvz -__ZN3JSC9jsBooleanEb -__ZN3JSC9CodeBlock19isKnownNotImmediateEi -__ZN3JSC12X86Assembler8movsd_mrEiNS_3X8610RegisterIDENS1_13XMMRegisterIDE -__ZN3JSC8JITStubs25cti_op_call_NotJSFunctionEPvz -__ZNK3JSC12JSNumberCell8toNumberEPNS_9ExecStateE -__ZN3JSC8JITStubs26cti_op_get_by_id_self_failEPvz -__ZN3JSC8JITStubs10cti_op_endEPvz -__ZThn12_N3JSC12FuncDeclNodeD0Ev -__ZN3JSC8JITStubs24cti_op_resolve_with_baseEPvz -__ZN3JSC8JITStubs19cti_op_new_func_expEPvz -__ZN3JSC8JITStubs22cti_op_push_activationEPvz -__ZN3JSC8JITStubs17cti_op_get_by_valEPvz -__ZN3JSC8JITStubs22cti_op_call_arityCheckEPvz -__ZN3JSC8JITStubs11cti_op_lessEPvz -__ZN3JSC12JSNumberCell18getPrimitiveNumberEPNS_9ExecStateERdRNS_7JSValueE -__ZN3JSC12X86Assembler23X86InstructionFormatter9oneByteOpENS0_15OneByteOpcodeIDE -__ZN3JSC8JITStubs27cti_op_get_by_id_proto_listEPvz -__ZN3JSC8JITStubs12cti_op_jtrueEPvz -__ZN3JSC8JITStubs10cti_op_modEPvz -__ZN3JSC8JITStubs10cti_op_neqEPvz -__ZN3JSC8JITStubs12cti_op_jlessEPvz -__ZN3JSC8JITStubs24cti_op_get_by_id_genericEPvz -__ZN3JSC8JITStubs14cti_op_jlesseqEPvz -__ZN3JSC8JITStubs26cti_op_tear_off_activationEPvz -__ZN3JSC8JITStubs21cti_op_ret_scopeChainEPvz -__ZN3JSC8JITStubs19cti_op_to_primitiveEPvz -__ZNK3JSC12JSNumberCell8toStringEPNS_9ExecStateE -__ZN3JSC8JITStubs13cti_op_bitandEPvz -__ZN3JSC8JITStubs13cti_op_lshiftEPvz -__ZN3JSC8JITStubs13cti_op_bitnotEPvz -__ZNK3JSC12JSNumberCell9toBooleanEPNS_9ExecStateE -__ZN3JSC8JITStubs14cti_op_urshiftEPvz -__ZNK3JSC12JSNumberCell18getTruncatedUInt32ERj -__ZN3JSC4Yarr14RegexGenerator28generateCharacterClassSingleERNS1_19TermGenerationStateE -__ZN3WTF15deleteAllValuesIPN3JSC4Yarr18PatternDisjunctionELm4EEEvRKNS_6VectorIT_XT0_EEE -__ZN3JSC8JITStubs17cti_op_new_regexpEPvz -__ZN3JSC8JITStubs12cti_op_bitorEPvz -__ZNK3JSC12JSNumberCell17getTruncatedInt32ERi -__ZN3JSC8JITStubs13cti_op_rshiftEPvz -__ZN3JSC8JITStubs13cti_op_bitxorEPvz -__ZN3WTF7HashSetINS_6RefPtrIN3JSC7UString3RepEEENS2_17IdentifierRepHashENS_10HashTraitsIS5_EEE3addERKS5_ -__ZN3JSC8JITStubs9cti_op_eqEPvz -__ZN3JSC8JITStubs16cti_op_call_evalEPvz -__ZN3JSC8JITStubs19cti_op_resolve_skipEPvz -__ZN3JSC8JITStubs17cti_op_new_objectEPvz -__ZN3JSC8JITStubs14cti_op_resolveEPvz -__ZN3JSC8JITStubs17cti_op_put_by_valEPvz -__ZN3JSC8JITStubs18cti_op_switch_charEPvz -__ZN3JSC8JITStubs28cti_op_get_by_id_string_failEPvz -__ZThn12_N3JSC8EvalNodeD0Ev -__ZN3WTF6VectorIN3JSC7UStringELm16EE14expandCapacityEm -__ZN3JSC8JITStubs17cti_op_get_pnamesEPvz -__ZN3JSC8JITStubs17cti_op_next_pnameEPvz -__ZN3WTF7HashSetIPN3JSC20MarkedArgumentBufferENS_7PtrHashIS3_EENS_10HashTraitsIS3_EEE3addERKS3_ -__ZN3WTF9HashTableIPN3JSC20MarkedArgumentBufferES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E4findI -__ZN3JSC8JITStubs24cti_op_get_by_val_stringEPvz -__ZN3JSC4Yarr6ParserINS0_23RegexPatternConstructorEE28CharacterClassParserDelegate25atomBuiltInCharacterClassENS0_23BuiltInChar -__ZN3JSC12jsNumberCellEPNS_9ExecStateEd -__ZN3JSC8JITStubs18cti_op_is_functionEPvz -__ZN3JSC8JITStubs16cti_op_is_objectEPvz -__ZN3JSC8JITStubs16cti_op_nstricteqEPvz -__ZN3JSC8JITStubs13cti_op_lesseqEPvz -__ZNK3JSC12JSNumberCell11toPrimitiveEPNS_9ExecStateENS_22PreferredPrimitiveTypeE -__ZN3JSC4Yarr14RegexGenerator27generateCharacterClassFixedERNS1_19TermGenerationStateE +_cti_op_bitnot +__ZNK3JSC10JSONObject9classInfoEv +_JSGlobalContextCreate +_JSGlobalContextCreateInGroup +__ZN3JSC12JSGlobalData18createContextGroupENS_15ThreadStackTypeE +__ZN3JSC21createIdentifierTableEv +__ZN3JSC4Heap29makeUsableFromMultipleThreadsEv +__ZN3JSC6JSLock6unlockENS_14JSLockBehaviorE +_JSValueMakeFromJSONString +_JSValueIsNull +_JSValueIsUndefined +_JSValueIsBoolean +_JSValueIsNumber +_JSValueIsString +__ZN3JSC14JSGlobalObject18getOwnPropertySlotEPNS_9ExecStateERKNS_10IdentifierERNS_12PropertySlotE +_JSValueIsInstanceOfConstructor +__ZN3JSC8JSObject11hasInstanceEPNS_9ExecStateENS_7JSValueES3_ +_JSValueToNumber +_JSObjectGetPropertyAtIndex +_JSValueToStringCopy +__ZN14OpaqueJSString6createERKN3JSC7UStringE +_JSStringCopyCFString __ZN3JSC4Heap7destroyEv +__ZN3JSC4Heap10freeBlocksEv +__ZN3JSC14JSGlobalObjectD1Ev +__ZN3JSC14JSGlobalObject25destroyJSGlobalObjectDataEPv __ZN3JSC12JSGlobalDataD1Ev __ZN3JSC12JSGlobalDataD2Ev __ZN3JSC12RegisterFileD1Ev __ZNK3JSC9HashTable11deleteTableEv __ZN3JSC5LexerD1Ev -__ZN3JSC5LexerD2Ev __ZN3WTF20deleteAllPairSecondsIP24OpaqueJSClassContextDataKNS_7HashMapIP13OpaqueJSClassS2_NS_7PtrHashIS5_EENS_10HashTraitsIS5_E __ZN3JSC17CommonIdentifiersD2Ev __ZN3JSC21deleteIdentifierTableEPNS_15IdentifierTableE +__ZN3JSC15IdentifierTableD2Ev __ZN3JSC4HeapD1Ev +__ZN3JSC9JITThunksD1Ev +__ZN3JSC16NativeExecutableD0Ev __ZN3JSC12SmallStringsD1Ev -__ZN3JSCL16mathProtoFuncMinEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSCL17arrayProtoFuncPopEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSC7JSArray3popEv -__ZN3JSC11DoWhileNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE -__ZN3JSC11DoWhileNodeD0Ev -__ZN3JSC3JIT18emit_op_switch_immEPNS_11InstructionE -__ZN3JSC8JITStubs17cti_op_switch_immEPPv -__ZN3JSC13UnaryPlusNode14stripUnaryPlusEv -__ZN3JSC15globalFuncIsNaNEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSC17NumberConstructor11getCallDataERNS_8CallDataE -__ZN3JSCL21callNumberConstructorEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3WTF6VectorIPNS0_IN3JSC10IdentifierELm64EEELm32EE14expandCapacityEm -__ZN3JSC8JITStubs19cti_op_is_undefinedEPvz -__ZN3JSC8JITStubs13cti_op_typeofEPvz -__ZN3JSC8JITStubs33cti_op_create_arguments_no_paramsEPvz -__ZN3JSC8JITStubs19cti_op_load_varargsEPvz -__ZN3JSC8JITStubs10cti_op_notEPvz -__ZN3JSC8JITStubs16cti_op_is_stringEPvz -__ZN3JSCL24regExpConstructorDollar1EPNS_9ExecStateERKNS_10IdentifierERKNS_12PropertySlotE -__ZN3WTF6VectorIN3JSC15StringJumpTableELm0EE14expandCapacityEm -__ZN3JSC8JITStubs20cti_op_switch_stringEPvz -__ZN3JSC9Arguments3putEPNS_9ExecStateERKNS_10IdentifierENS_7JSValueERNS_15PutPropertySlotE -__ZN3JSC8JITStubs18cti_op_to_jsnumberEPvz -__ZN3JSC8JITStubs19cti_op_loop_if_lessEPvz -__ZN3JSC9LabelNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE -__ZN3JSC9LabelNodeD0Ev -__ZNK3JSC7UString5asciiEv -__ZN3JSC8JITStubs27cti_op_get_by_id_array_failEPvz -__ZN3JSC12X86Assembler23X86InstructionFormatter9oneByteOpENS0_15OneByteOpcodeIDEiPv -__ZN3JSC8JITStubs23cti_op_create_argumentsEPvz -__ZN3JSCL21arrayProtoFuncUnShiftEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSC8JITStubs25cti_op_tear_off_argumentsEPvz -__ZN3JSC7JSArray11sortNumericEPNS_9ExecStateENS_7JSValueENS_8CallTypeERKNS_8CallDataE -__ZN3JSC7JSArray17compactForSortingEv -__ZN3JSCL22compareNumbersForQSortEPKvS1_ -__ZN3JSC8JITStubs15cti_op_post_incEPPv -__ZN3JSC8JITStubs24cti_op_put_by_id_genericEPvz -__ZN3JSCL24regExpConstructorDollar2EPNS_9ExecStateERKNS_10IdentifierERKNS_12PropertySlotE -__ZN3JSCL24regExpConstructorDollar3EPNS_9ExecStateERKNS_10IdentifierERKNS_12PropertySlotE -__ZN3JSCL24regExpConstructorDollar4EPNS_9ExecStateERKNS_10IdentifierERKNS_12PropertySlotE -__ZN3JSCL24regExpConstructorDollar5EPNS_9ExecStateERKNS_10IdentifierERKNS_12PropertySlotE -__ZN3JSCL24regExpConstructorDollar6EPNS_9ExecStateERKNS_10IdentifierERKNS_12PropertySlotE -__ZN3JSCL21stringProtoFuncSubstrEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSCL23stringProtoFuncFontsizeEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSCL24dateProtoFuncToUTCStringEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSCL19stringProtoFuncLinkEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSCL9dateParseEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSC8JITStubs21cti_op_loop_if_lesseqEPPv -__ZN3JSCL16mathProtoFuncExpEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSC4Yarr17nonwordcharCreateEv -__ZN3WTF6VectorIPN3JSC4Yarr18PatternDisjunctionELm4EE14expandCapacityEmPKS4_ -__Z15jsc_pcre_xclassiPKh -__ZN3JSC18RegExpMatchesArray3putEPNS_9ExecStateEjNS_7JSValueE -__ZN3JSC28globalFuncDecodeURIComponentEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSC8JITStubs27cti_op_get_by_id_array_failEPPv -__ZNK3JSC9Arguments9classInfoEv -__ZN3JSC9Arguments15copyToRegistersEPNS_9ExecStateEPNS_8RegisterEj -__ZN3JSC19JSStaticScopeObject4markEv -__ZN3JSC8JITStubs19cti_op_loop_if_lessEPPv -__ZN3JSC8JITStubs16cti_op_del_by_idEPvz -__ZN3JSC7JSArray14deletePropertyEPNS_9ExecStateERKNS_10IdentifierE -__ZN3JSC7UString6appendEPKti -__ZN3JSC8JITStubs17cti_op_push_scopeEPvz -__ZN3JSC8JITStubs19cti_op_resolve_baseEPvz -__ZN3JSC8JITStubs16cti_op_pop_scopeEPvz -__ZN3JSC8JITStubs17cti_op_is_booleanEPvz -__ZN3JSCL20arrayProtoFuncSpliceEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSC8JITStubs17cti_op_jmp_scopesEPvz -__ZN3JSC8JITStubs9cti_op_inEPvz -__ZN3JSC8JITStubs15cti_op_stricteqEPvz -__ZN3JSC8JITStubs32cti_op_get_by_id_proto_list_fullEPvz -__ZN3WTF6VectorIiLm8EE14expandCapacityEm -__ZN3JSCL21stringProtoFuncSearchEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSC8JITStubs12cti_vm_throwEPvz -__ZN3JSC8JITStubs21cti_op_push_new_scopeEPvz -__ZN3JSC8JITStubs16cti_op_is_numberEPvz -__ZN3JSC16JSVariableObject16getPropertyNamesEPNS_9ExecStateERNS_17PropertyNameArrayE -__ZNK3JSC8JSString8toObjectEPNS_9ExecStateE -__ZN3JSC12StringObject16getPropertyNamesEPNS_9ExecStateERNS_17PropertyNameArrayE -__ZN3JSC9ExecState11stringTableEPS0_ -__ZN3JSC11JSImmediate8toObjectENS_7JSValueEPNS_9ExecStateE -__ZN3JSC36constructBooleanFromImmediateBooleanEPNS_9ExecStateENS_7JSValueE -__ZN3JSC13BooleanObjectD1Ev +__ZN3JSC14JSGlobalObject17putWithAttributesEPNS_9ExecStateERKNS_10IdentifierENS_7JSValueEj +__ZN3JSC17ObjectConstructor11getCallDataERNS_8CallDataE +__ZN3JSCL21callObjectConstructorEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZN3JSC9Arguments14deletePropertyEPNS_9ExecStateEj +__ZN3JSCL18JSONProtoFuncParseEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZN3JSC7JSArray11fillArgListEPNS_9ExecStateERNS_20MarkedArgumentBufferE __ZN3JSCL17arrayProtoFuncMapEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSC7JSArrayC2EN3WTF10PassRefPtrINS_9StructureEEEj -__ZN3JSC8JITStubs17cti_op_del_by_valEPvz -__ZN3JSC8JITStubs27cti_op_get_by_id_proto_failEPvz -__ZN3JSC10JSFunction12callerGetterEPNS_9ExecStateERKNS_10IdentifierERKNS_12PropertySlotE -__ZNK3JSC11Interpreter14retrieveCallerEPNS_9ExecStateEPNS_16InternalFunctionE -__ZN3JSC18globalFuncIsFiniteEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSC6JSCell18getOwnPropertySlotEPNS_9ExecStateERKNS_10IdentifierERNS_12PropertySlotE -__ZNK3JSC12JSNumberCell8toObjectEPNS_9ExecStateE -__ZN3JSC15constructNumberEPNS_9ExecStateENS_7JSValueE -__ZN3JSC12NumberObject11getJSNumberEv -__ZN3JSCL7dateNowEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSC12NumberObjectD1Ev -__ZN3JSC8JSObject18getPrimitiveNumberEPNS_9ExecStateERdRNS_7JSValueE -__ZN3JSCL22numberProtoFuncValueOfEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSC13JSNotAnObject18getOwnPropertySlotEPNS_9ExecStateEjRNS_12PropertySlotE -__ZN3JSC19JSStaticScopeObject18getOwnPropertySlotEPNS_9ExecStateERKNS_10IdentifierERNS_12PropertySlotE -__ZN3JSC16InternalFunction4nameEPNS_12JSGlobalDataE -__ZN3JSCL18arrayProtoFuncSomeEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSC8JSString18getOwnPropertySlotEPNS_9ExecStateEjRNS_12PropertySlotE -__ZN3JSC12JSNumberCell11getJSNumberEv -__ZN3JSC23createNotAFunctionErrorEPNS_9ExecStateENS_7JSValueEjPNS_9CodeBlockE -__ZN3JSC17PrefixBracketNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE -__ZN3JSC17PrefixBracketNodeD0Ev -__ZN3JSC17RegExpConstructor11getCallDataERNS_8CallDataE -__ZN3JSCL21callRegExpConstructorEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSC7JSArray4sortEPNS_9ExecStateE -__ZN3JSCL27dateProtoFuncSetUTCFullYearEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSCL24dateProtoFuncSetUTCHoursEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSCL23setNewValueFromTimeArgsEPNS_9ExecStateENS_7JSValueERKNS_7ArgListEib -__ZN3JSC8JITStubs17cti_op_switch_immEPvz -__ZN3JSC12RegExpObject3putEPNS_9ExecStateERKNS_10IdentifierENS_7JSValueERNS_15PutPropertySlotE -__ZN3JSCL24setRegExpObjectLastIndexEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueE -__ZN3JSCL28regExpConstructorLeftContextEPNS_9ExecStateERKNS_10IdentifierERKNS_12PropertySlotE -__ZN3JSC18RegExpMatchesArray14deletePropertyEPNS_9ExecStateEj -__ZN3JSC18RegExpMatchesArray3putEPNS_9ExecStateERKNS_10IdentifierENS_7JSValueERNS_15PutPropertySlotE -__ZN3JSC10JSFunction12lengthGetterEPNS_9ExecStateERKNS_10IdentifierERKNS_12PropertySlotE -__ZNK3JSC12NumberObject9classInfoEv -__ZN3JSC8JITStubs12cti_op_throwEPvz -__ZN3JSCL19isNonASCIIIdentPartEi -__ZN3JSCL27dateProtoFuncToLocaleStringEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSCL16formatLocaleDateEPNS_9ExecStateEPNS_12DateInstanceEdNS_20LocaleDateTimeFormatERKNS_7ArgListE +__ZN3JSC12StringObjectC1EPNS_9ExecStateEN3WTF17NonNullPassRefPtrINS_9StructureEEE +__ZN3JSC23MacroAssemblerX86Common9urshift32ENS_12X86Registers10RegisterIDES2_ +_cti_op_urshift +__ZN3JSC15ObjectPrototype3putEPNS_9ExecStateERKNS_10IdentifierENS_7JSValueERNS_15PutPropertySlotE +__ZN3JSCL21stringProtoFuncConcatEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZN3JSCL24regExpConstructorDollar2EPNS_9ExecStateENS_7JSValueERKNS_10IdentifierE +__ZN3JSCL24regExpConstructorDollar3EPNS_9ExecStateENS_7JSValueERKNS_10IdentifierE +__ZN3JSCL24regExpConstructorDollar4EPNS_9ExecStateENS_7JSValueERKNS_10IdentifierE +__ZN3JSC20MarkedArgumentBuffer9markListsERNS_9MarkStackERN3WTF7HashSetIPS0_NS3_7PtrHashIS5_EENS3_10HashTraitsIS5_EEEE +__ZN3JSCL22numberProtoFuncToFixedEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZN3JSCL16integerPartNoExpEd +__ZN3JSC10makeStringINS_7UStringES1_PKcS1_EES1_T_T0_T1_T2_ +__ZN3JSC13tryMakeStringINS_7UStringES1_PKcS1_EEN3WTF10PassRefPtrIN7WebCore10StringImplEEET_T0_T1_T2_ +__ZN3JSCL26numberProtoFuncToPrecisionEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZN3JSCL12charSequenceEci +__ZN3JSC13tryMakeStringINS_7UStringEPKcS1_S1_EEN3WTF10PassRefPtrIN7WebCore10StringImplEEET_T0_T1_T2_ +__ZN3JSCL24booleanProtoFuncToStringEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZNK3JSC12JSActivation12toThisObjectEPNS_9ExecStateE +_cti_op_div +__ZN3JSC17BytecodeGenerator21emitComplexJumpScopesEPNS_5LabelEPNS_18ControlFlowContextES4_ +__ZN7WebCore10StringImpl7replaceEjjPS0_ +__ZN3JSC12RegExpObject11getCallDataERNS_8CallDataE +__ZN3JSC12StringObject19getOwnPropertyNamesEPNS_9ExecStateERNS_17PropertyNameArrayENS_15EnumerationModeE +__ZN3JSC9ExecState11stringTableEPS0_ +__ZNK3JSC7JSValue16synthesizeObjectEPNS_9ExecStateE +__ZN3JSC13JSNotAnObject3putEPNS_9ExecStateERKNS_10IdentifierENS_7JSValueERNS_15PutPropertySlotE +__ZN3JSCL35objectProtoFuncPropertyIsEnumerableEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZNK3JSC8JSObject20propertyIsEnumerableEPNS_9ExecStateERKNS_10IdentifierE +__ZN3JSC7JSArray24getOwnPropertyDescriptorEPNS_9ExecStateERKNS_10IdentifierERNS_18PropertyDescriptorE +__ZN3JSC18PropertyDescriptor13setDescriptorENS_7JSValueEj +__ZNK3JSC18PropertyDescriptor10enumerableEv +__ZN3JSCL22JSONProtoFuncStringifyEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZN3JSC11StringifierC2EPNS_9ExecStateENS_7JSValueES3_ +__ZN3JSC11Stringifier9stringifyENS_7JSValueE +__ZN3JSC11Stringifier22appendStringifiedValueERNS_13StringBuilderENS_7JSValueEPNS_8JSObjectERKNS_27PropertyNameForFunctionCallE +__ZNK3JSC6JSCell9getStringEPNS_9ExecStateERNS_7UStringE +__ZN3JSC11Stringifier6Holder18appendNextPropertyERS0_RNS_13StringBuilderE +__ZN3JSC11Stringifier18appendQuotedStringERNS_13StringBuilderERKNS_7UStringE +__ZN3JSC11StringifierD2Ev +__ZN3JSC5Lexer19copyCodeWithoutBOMsEv __ZN3JSCL21dateProtoFuncSetHoursEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSCL23dateProtoFuncSetMinutesEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSCL23dateProtoFuncSetSecondsEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSCL28dateProtoFuncSetMilliSecondsEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZNK3JSC12JSNumberCell12toThisObjectEPNS_9ExecStateE -__ZN3JSC16ErrorConstructor11getCallDataERNS_8CallDataE -__ZN3JSCL20callErrorConstructorEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSC17PrototypeFunctionC1EPNS_9ExecStateEiRKNS_10IdentifierEPFNS_7JSValueES2_PNS_8JSObjectES6_RKNS_7ArgListEE -__ZN3JSC17PrototypeFunctionC2EPNS_9ExecStateEiRKNS_10IdentifierEPFNS_7JSValueES2_PNS_8JSObjectES6_RKNS_7ArgListEE -__ZN3JSC17PrototypeFunction11getCallDataERNS_8CallDataE -__ZN3JSC17PrototypeFunctionD1Ev -__ZN3JSCL24booleanProtoFuncToStringEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSC17BytecodeGenerator18emitJumpSubroutineEPNS_10RegisterIDEPNS_5LabelE -__ZN3JSC3JIT11emit_op_jsrEPNS_11InstructionE -__ZN3WTF6VectorIN3JSC3JIT7JSRInfoELm0EE14expandCapacityEm -__ZN3JSC3JIT12emit_op_sretEPNS_11InstructionE -__ZN3JSC6Parser7reparseINS_8EvalNodeEEEN3WTF10PassRefPtrIT_EEPNS_12JSGlobalDataEPS5_ -__ZN3JSC8EvalNode6createEPNS_12JSGlobalDataEPNS_14SourceElementsEPN3WTF6VectorISt4pairINS_10IdentifierEjELm0EEEPNS6_IPNS_12Func -__ZN3JSC8EvalNode31bytecodeForExceptionInfoReparseEPNS_14ScopeChainNodeEPNS_9CodeBlockE -__ZN3JSC20FixedVMPoolAllocator17coalesceFreeSpaceEv -__ZN3WTF6VectorIPN3JSC13FreeListEntryELm0EE15reserveCapacityEm -__ZN3JSCL35reverseSortFreeListEntriesByPointerEPKvS1_ -__ZN3JSC14globalFuncEvalEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSCL21functionProtoFuncCallEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSCL22functionProtoFuncApplyEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSC9Arguments11fillArgListEPNS_9ExecStateERNS_20MarkedArgumentBufferE -__ZNK3JSC7JSValue12toThisObjectEPNS_9ExecStateE -__ZN3JSC8VoidNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE -__ZN3JSC8VoidNodeD0Ev -__ZN3JSC16InternalFunctionC2EPNS_12JSGlobalDataEN3WTF10PassRefPtrINS_9StructureEEERKNS_10IdentifierE -__ZN3JSC20MarkedArgumentBuffer9markListsERN3WTF7HashSetIPS0_NS1_7PtrHashIS3_EENS1_10HashTraitsIS3_EEEE -__ZN3JSC7CStringaSERKS0_ -__ZNK3JSC19JSStaticScopeObject14isDynamicScopeEv -__ZN3JSCL33reverseSortCommonSizedAllocationsEPKvS1_ -__ZN3JSCL20arrayProtoFuncFilterEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSC17NumberConstructor16getConstructDataERNS_13ConstructDataE -__ZN3JSCL30constructWithNumberConstructorEPNS_9ExecStateEPNS_8JSObjectERKNS_7ArgListE -__ZN3JSC17BytecodeGenerator18emitUnexpectedLoadEPNS_10RegisterIDEb -__ZN3JSC8JITStubs12cti_op_throwEPPv -__ZN3JSC6JSCell9getObjectEv -__ZN3JSCL21arrayProtoFuncReverseEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZNK3JSC8JSObject16isVariableObjectEv -__ZN3JSC18EmptyStatementNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE -__ZN3JSCL27compareByStringPairForQSortEPKvS1_ +__ZN3JSC17FunctionPrototype11getCallDataERNS_8CallDataE +__ZN3JSCL28dateProtoFuncGetMilliSecondsEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZN3JSC10makeStringINS_7UStringES1_EES1_T_T0_ +__ZN3JSC13tryMakeStringINS_7UStringES1_EEN3WTF10PassRefPtrIN7WebCore10StringImplEEET_T0_ +__ZN3JSC23MacroAssemblerX86Common8branch16ENS0_9ConditionENS_22AbstractMacroAssemblerINS_12X86AssemblerEE9BaseIndexENS4_5Imm32E __Z22jsc_pcre_ucp_othercasej -__ZN3JSCL35objectProtoFuncPropertyIsEnumerableEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3WTF7HashMapIjN3JSC7JSValueENS_7IntHashIjEENS_10HashTraitsIjEENS5_IS2_EEE3setERKjRKS2_ -__ZN3WTF9HashTableIjSt4pairIjN3JSC7JSValueEENS_18PairFirstExtractorIS4_EENS_7IntHashIjEENS_14PairHashTraitsINS_10HashTraitsIjEE -__ZN3JSC12RegisterFile21releaseExcessCapacityEv -__ZN3JSCL20isNonASCIIIdentStartEi -__ZN3JSC17BytecodeGenerator14emitPutByIndexEPNS_10RegisterIDEjS2_ -__ZN3JSC3JIT20emit_op_put_by_indexEPNS_11InstructionE -__ZN3JSC8JITStubs19cti_op_put_by_indexEPPv -__ZN3JSCL25numberConstructorMaxValueEPNS_9ExecStateERKNS_10IdentifierERKNS_12PropertySlotE -__ZN3JSCL28numberConstructorPosInfinityEPNS_9ExecStateERKNS_10IdentifierERKNS_12PropertySlotE -__ZN3JSCL28numberConstructorNegInfinityEPNS_9ExecStateERKNS_10IdentifierERKNS_12PropertySlotE -__ZN3JSC18BooleanConstructor11getCallDataERNS_8CallDataE -__ZN3JSCL22callBooleanConstructorEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSCL17mathProtoFuncATanEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSC8JITStubs17cti_op_jmp_scopesEPPv -__ZNK3JSC8JSObject11hasPropertyEPNS_9ExecStateEj -__ZN3JSCL17mathProtoFuncASinEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSC11Interpreter7executeEPNS_8EvalNodeEPNS_9ExecStateEPNS_8JSObjectEPNS_14ScopeChainNodeEPNS_7JSValueE -_JSContextGetGlobalObject -__ZN3JSC4Heap14registerThreadEv -__ZN3JSC6JSLockC1EPNS_9ExecStateE -_JSStringCreateWithUTF8CString -__ZN3WTF7Unicode18convertUTF8ToUTF16EPPKcS2_PPtS4_b -_JSClassCreate -__ZN13OpaqueJSClass6createEPK17JSClassDefinition -__ZN13OpaqueJSClassC2EPK17JSClassDefinitionPS_ -__ZN3JSC7UString3Rep14createFromUTF8EPKc -__ZN3WTF7HashMapINS_6RefPtrIN3JSC7UString3RepEEEP19StaticFunctionEntryNS_7StrHashIS5_EENS_10HashTraitsIS5_EENSA_IS7_EEE3addERKS -__ZN3WTF9HashTableINS_6RefPtrIN3JSC7UString3RepEEESt4pairIS5_P19StaticFunctionEntryENS_18PairFirstExtractorIS9_EENS_7StrHashIS5 -__ZN3WTF7HashMapINS_6RefPtrIN3JSC7UString3RepEEEP16StaticValueEntryNS_7StrHashIS5_EENS_10HashTraitsIS5_EENSA_IS7_EEE3addERKS5_R -_JSClassRetain -_JSObjectMake -__ZN3JSC16JSCallbackObjectINS_8JSObjectEE4initEPNS_9ExecStateE -__ZN13OpaqueJSClass9prototypeEPN3JSC9ExecStateE -__ZN13OpaqueJSClass11contextDataEPN3JSC9ExecStateE -__ZN3WTF9HashTableIP13OpaqueJSClassSt4pairIS2_P24OpaqueJSClassContextDataENS_18PairFirstExtractorIS6_EENS_7PtrHashIS2_EENS_14Pa -__ZN24OpaqueJSClassContextDataC2EP13OpaqueJSClass -__ZN3JSC7UString3Rep13createCopyingEPKti -_JSObjectSetProperty -__ZNK14OpaqueJSString10identifierEPN3JSC12JSGlobalDataE -__ZN3JSC14JSGlobalObject17putWithAttributesEPNS_9ExecStateERKNS_10IdentifierENS_7JSValueEj -_JSStringRelease -__ZN3JSC16JSCallbackObjectINS_8JSObjectEE18getOwnPropertySlotEPNS_9ExecStateERKNS_10IdentifierERNS_12PropertySlotE -__ZN3JSC16JSCallbackObjectINS_8JSObjectEE20staticFunctionGetterEPNS_9ExecStateERKNS_10IdentifierERKNS_12PropertySlotE -__ZN3JSC18JSCallbackFunctionC1EPNS_9ExecStateEPFPK13OpaqueJSValuePK15OpaqueJSContextPS3_S9_mPKS5_PS5_ERKNS_10IdentifierE -__ZN3JSC18JSCallbackFunction11getCallDataERNS_8CallDataE -__ZN3JSC18JSCallbackFunction4callEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSC6JSLock12DropAllLocksC1EPNS_9ExecStateE -_JSObjectGetPrivate -__ZNK3JSC16JSCallbackObjectINS_8JSObjectEE9classInfoEv -_JSValueMakeUndefined -__ZN3JSC16JSCallbackObjectINS_8JSObjectEE17staticValueGetterEPNS_9ExecStateERKNS_10IdentifierERKNS_12PropertySlotE -__ZN14OpaqueJSString6createERKN3JSC7UStringE -_JSStringCreateWithCharacters -_JSValueMakeString -__ZNK14OpaqueJSString7ustringEv -__ZN3JSC7UStringC1EPtib -__ZN3JSC16JSCallbackObjectINS_8JSObjectEED1Ev -_JSClassRelease -__ZL25clearReferenceToPrototypeP13OpaqueJSValue -_JSObjectGetProperty -_JSValueToObject -__ZN3JSCL22dateProtoFuncGetUTCDayEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSCL24dateProtoFuncGetUTCMonthEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZN3JSC8JSString18getOwnPropertySlotEPNS_9ExecStateEjRNS_12PropertySlotE +__ZN3JSCL24dateProtoFuncSetUTCHoursEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZN3JSCL26dateProtoFuncSetUTCMinutesEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZN3JSCL26dateProtoFuncSetUTCSecondsEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE __ZN3JSCL23dateProtoFuncGetUTCDateEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSCL27dateProtoFuncGetUTCFullYearEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZNK3JSC7UString8toUInt32EPb +__ZN3JSCL23dateProtoFuncSetUTCDateEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE __ZN3JSCL24dateProtoFuncGetUTCHoursEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE __ZN3JSCL26dateProtoFuncGetUTCMinutesEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE __ZN3JSCL26dateProtoFuncGetUTCSecondsEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSCL7dateUTCEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSC12RegExpObject11getCallDataERNS_8CallDataE -__ZN3JSC9Arguments14deletePropertyEPNS_9ExecStateEj -_JSValueMakeBoolean -_JSValueToNumber -_JSStringCreateWithCFString -__ZN3WTF13tryFastCallocEmm -_JSValueMakeNumber -__ZN3JSC18JSCallbackFunctionD1Ev -_JSValueToStringCopy -_JSStringCopyCFString -__ZN3JSC18ConstStatementNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE -__ZN3JSC13ConstDeclNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE -__ZN3JSC13ConstDeclNode14emitCodeSingleERNS_17BytecodeGeneratorE -__ZN3JSC13ConstDeclNodeD0Ev -__ZN3JSC18ConstStatementNodeD0Ev +__ZN3JSCL24dateProtoFuncSetFullYearEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZN3WTF6VectorIiLm32EE15reserveCapacityEm +__ZN3JSCL22regExpProtoFuncCompileEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZNK3JSC27PropertyNameForFunctionCall5valueEPNS_9ExecStateE +_cti_op_new_error +__ZN7WebCore6String6numberEj +__ZN3JSCL27dateProtoFuncGetUTCFullYearEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZN3JSCL24dateProtoFuncGetUTCMonthEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZN3JSCL31dateProtoFuncToLocaleDateStringEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZN3JSCL16formatLocaleDateEPNS_9ExecStateEPNS_12DateInstanceEdNS_20LocaleDateTimeFormatERKNS_7ArgListE +__ZN3JSC10throwErrorEPNS_9ExecStateENS_9ErrorTypeEPKc +__ZN3JSCL23throwStackOverflowErrorEPNS_9ExecStateEPNS_12JSGlobalDataENS_16ReturnAddressPtrERS4_ +__ZN3JSC24createStackOverflowErrorEPNS_9ExecStateE +__ZN3JSC12RegisterFile21releaseExcessCapacityEv +__ZN3JSC12StringObject18getOwnPropertySlotEPNS_9ExecStateEjRNS_12PropertySlotE +__ZN3JSC19FunctionConstructor11getCallDataERNS_8CallDataE +__ZN7WebCore6String8fromUTF8EPKc +__ZN3JSCL27dateProtoFuncToLocaleStringEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE __ZN3JSC18BooleanConstructor16getConstructDataERNS_13ConstructDataE __ZN3JSCL31constructWithBooleanConstructorEPNS_9ExecStateEPNS_8JSObjectERKNS_7ArgListE __ZN3JSC16constructBooleanEPNS_9ExecStateERKNS_7ArgListE -__ZN3JSCL31dateProtoFuncGetUTCMillisecondsEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSCL28dateProtoFuncGetMilliSecondsEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZN3JSC7JSArray11sortNumericEPNS_9ExecStateENS_7JSValueENS_8CallTypeERKNS_8CallDataE +__ZN3JSCL22compareNumbersForQSortEPKvS1_ +__ZN3WTF6VectorIjLm16EE15reserveCapacityEm +__ZN3JSC8JSString16getIndexSlowCaseEPNS_9ExecStateEj +__ZN3JSCL25numberConstructorNaNValueEPNS_9ExecStateENS_7JSValueERKNS_10IdentifierE +__ZN3JSC6JSCell3putEPNS_9ExecStateERKNS_10IdentifierENS_7JSValueERNS_15PutPropertySlotE +__ZN3JSC4Yarr15nondigitsCreateEv +__ZN3JSCL7dateUTCEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZNK3JSC7ArgList2atEm +__ZN3JSCL16mathProtoFuncTanEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZNK3JSC8JSObject16isVariableObjectEv +__ZN7WebCore6String6insertERKS0_j +__ZN7WebCore6String6insertEPKtjj +__ZN7WebCore10StringImpl37createStrippingNullCharactersSlowCaseEPKtj __ZN3JSCL31dateProtoFuncToLocaleTimeStringEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSCL21regExpObjectLastIndexEPNS_9ExecStateERKNS_10IdentifierERKNS_12PropertySlotE +__ZN3WTF7CString11mutableDataEv +__ZN3WTF7CString18copyBufferIfNeededEv +__ZN3JSCL18arrayProtoFuncSomeEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE __ZN3JSC21DebuggerStatementNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE -__ZN3JSC21DebuggerStatementNodeD0Ev -__ZN3JSC4Yarr12RegexPattern21newlineCharacterClassEv -__ZN3JSC17ObjectConstructor11getCallDataERNS_8CallDataE -__ZN3JSCL23dateProtoFuncSetUTCDateEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSCL26stringFromCharCodeSlowCaseEPNS_9ExecStateERKNS_7ArgListE -__ZN3JSCL21callObjectConstructorEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSCL27objectProtoFuncDefineGetterEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSC8JSObject12defineGetterEPNS_9ExecStateERKNS_10IdentifierEPS0_ -__ZN3JSC12GetterSetter4markEv -__ZN3JSC12GetterSetterD1Ev -__ZN3JSCL22regExpProtoFuncCompileEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZN3JSCL31dateProtoFuncGetUTCMillisecondsEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZN3WTF15ThreadConditionD1Ev +__ZN3JSC18RegExpMatchesArray19getOwnPropertyNamesEPNS_9ExecStateERNS_17PropertyNameArrayENS_15EnumerationModeE +__ZN3WTF6VectorIPNS0_IN3JSC10IdentifierELm64EEELm32EE14expandCapacityEm +__ZN3JSC15DateConstructor11getCallDataERNS_8CallDataE +__ZN3JSCL8callDateEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZN3JSCL22dateProtoFuncGetUTCDayEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZN3JSCL25arrayProtoFuncLastIndexOfEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZN3JSCL19arrayProtoFuncEveryEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZN3JSCL23callFunctionConstructorEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZN3JSCL19stringProtoFuncLinkEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZN3JSCL25dateProtoFuncToDateStringEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZN3JSC10throwErrorEPNS_9ExecStateEPNS_8JSObjectE +__ZN3JSCL27dateProtoFuncSetUTCFullYearEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZN3JSCL24dateProtoFuncSetUTCMonthEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZN3JSCL31dateProtoFuncSetUTCMillisecondsEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZN7WebCore6String6numberEx __ZNK3JSC17NumberConstructor9classInfoEv __ZNK3JSC17RegExpConstructor9classInfoEv -__ZN3JSCL31dateProtoFuncToLocaleDateStringEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZN3WTF9HashTableINS_6RefPtrIN7WebCore10StringImplEEESt4pairIS4_P19StaticFunctionEntryENS_18PairFirstExtractorIS8_EENS2_10Stri +__ZN3WTF9HashTableINS_6RefPtrIN7WebCore10StringImplEEESt4pairIS4_P16StaticValueEntryENS_18PairFirstExtractorIS8_EENS2_10StringH +__ZN3JSC16JSCallbackObjectINS_8JSObjectEE18getOwnPropertySlotEPNS_9ExecStateERKNS_10IdentifierERNS_12PropertySlotE +__ZN3JSC16JSCallbackObjectINS_8JSObjectEE20staticFunctionGetterEPNS_9ExecStateENS_7JSValueERKNS_10IdentifierE +__ZN3JSC18JSCallbackFunctionC1EPNS_9ExecStateEPFPK13OpaqueJSValuePK15OpaqueJSContextPS3_S9_mPKS5_PS5_ERKNS_10IdentifierE +__ZN3JSC18JSCallbackFunction11getCallDataERNS_8CallDataE +__ZN3JSC18JSCallbackFunction4callEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZN3JSC6JSLock12DropAllLocksC1EPNS_9ExecStateE +_JSValueMakeUndefined +__ZN3JSC16JSCallbackObjectINS_8JSObjectEE17staticValueGetterEPNS_9ExecStateENS_7JSValueERKNS_10IdentifierE +_JSValueMakeString +__ZN3JSC18JSCallbackFunctionD1Ev +_JSValueMakeBoolean +_JSStringCreateWithCharacters +_JSValueMakeNumber +__ZN3JSC4Heap6isBusyEv +__ZN7WebCore10StringImpl7replaceEtPS0_ __ZNK3JSC8JSObject14isGlobalObjectEv -_JSValueToBoolean -__ZN3JSC8JITStubs13cti_op_lshiftEPPv -__ZN3JSC8JITStubs13cti_op_bitnotEPPv -__ZN3JSC6JSCell3putEPNS_9ExecStateERKNS_10IdentifierENS_7JSValueERNS_15PutPropertySlotE -__ZN3JSC19FunctionConstructor11getCallDataERNS_8CallDataE +__ZNK7WebCore6String5splitEtbRN3WTF6VectorIS0_Lm0EEE +__ZN7WebCore6String6appendEt +__ZNK3JSC7UString8toUInt32EPb __ZN3WTF9ByteArray6createEm -__ZNK3JSC6JSCell9getStringERNS_7UStringE -__ZN3JSC3JIT12emit_op_loopEPNS_11InstructionE -__ZN3JSC10throwErrorEPNS_9ExecStateENS_9ErrorTypeE -__ZN3JSC11JSByteArrayC1EPNS_9ExecStateEN3WTF10PassRefPtrINS_9StructureEEEPNS3_9ByteArrayEPKNS_9ClassInfoE -__ZN3JSC11JSByteArrayC2EPNS_9ExecStateEN3WTF10PassRefPtrINS_9StructureEEEPNS3_9ByteArrayEPKNS_9ClassInfoE +__ZN3JSC11JSByteArrayC1EPNS_9ExecStateEN3WTF17NonNullPassRefPtrINS_9StructureEEEPNS3_9ByteArrayEPKNS_9ClassInfoE +__ZN3JSC11JSByteArrayC2EPNS_9ExecStateEN3WTF17NonNullPassRefPtrINS_9StructureEEEPNS3_9ByteArrayEPKNS_9ClassInfoE __ZN3JSC11JSByteArray18getOwnPropertySlotEPNS_9ExecStateERKNS_10IdentifierERNS_12PropertySlotE __ZN3JSC11JSByteArray3putEPNS_9ExecStateEjNS_7JSValueE __ZN3JSC11JSByteArray3putEPNS_9ExecStateERKNS_10IdentifierENS_7JSValueERNS_15PutPropertySlotE __ZN3JSC11JSByteArray18getOwnPropertySlotEPNS_9ExecStateEjRNS_12PropertySlotE -__ZN3JSC8JITStubs28cti_op_get_by_val_byte_arrayEPPv -__ZN3JSC8JITStubs28cti_op_put_by_val_byte_arrayEPPv -__ZL30makeGetterOrSetterPropertyNodePvRKN3JSC10IdentifierES3_PNS0_13ParameterNodeEPNS0_16FunctionBodyNodeERKNS0_10SourceCodeE -__ZN3JSC17BytecodeGenerator13emitPutGetterEPNS_10RegisterIDERKNS_10IdentifierES2_ -__ZN3JSC17BytecodeGenerator13emitPutSetterEPNS_10RegisterIDERKNS_10IdentifierES2_ -__ZN3JSC3JIT18emit_op_put_getterEPNS_11InstructionE -__ZN3JSC3JIT18emit_op_put_setterEPNS_11InstructionE -__ZN3JSC8JITStubs17cti_op_put_getterEPPv -__ZN3JSC8JITStubs17cti_op_put_setterEPPv -__ZN3JSC8JSObject12defineSetterEPNS_9ExecStateERKNS_10IdentifierEPS0_ -__ZNK3JSC12GetterSetter14isGetterSetterEv -__ZNK3JSC6JSCell14isGetterSetterEv -__ZN3JSCL29regExpConstructorRightContextEPNS_9ExecStateERKNS_10IdentifierERKNS_12PropertySlotE -__ZN3JSC5Lexer19copyCodeWithoutBOMsEv -__ZN3JSC13JSNotAnObject3putEPNS_9ExecStateERKNS_10IdentifierENS_7JSValueERNS_15PutPropertySlotE -__ZN3JSC6JSCell16getConstructDataERNS_13ConstructDataE -__ZN3JSC26createNotAConstructorErrorEPNS_9ExecStateENS_7JSValueEjPNS_9CodeBlockE -__ZN3JSC15isStrWhiteSpaceEt -__ZN3JSC10throwErrorEPNS_9ExecStateENS_9ErrorTypeEPKc +_cti_op_get_by_val_byte_array +_cti_op_put_by_val_byte_array +_JSStringGetUTF8CString +__ZN3JSC16JSVariableObject19getOwnPropertyNamesEPNS_9ExecStateERNS_17PropertyNameArrayENS_15EnumerationModeE __ZNK3JSC22NativeErrorConstructor9classInfoEv __ZNK3JSC16JSCallbackObjectINS_8JSObjectEE9classNameEv -__ZN3JSC4Heap11objectCountEv -__ZNK3JSC12SmallStrings5countEv -__ZN3JSC14JSGlobalObject12defineGetterEPNS_9ExecStateERKNS_10IdentifierEPNS_8JSObjectE -__ZN3JSCL27objectProtoFuncLookupGetterEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSC8JSObject12lookupGetterEPNS_9ExecStateERKNS_10IdentifierE -__ZN3JSCL27objectProtoFuncDefineSetterEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSC14JSGlobalObject12defineSetterEPNS_9ExecStateERKNS_10IdentifierEPNS_8JSObjectE +__ZN3JSC6JSCell16getConstructDataERNS_13ConstructDataE +__ZN3JSC26createNotAConstructorErrorEPNS_9ExecStateENS_7JSValueEjPNS_9CodeBlockE +__ZNK3JSC4Heap11objectCountEv +__ZN3JSC14JSGlobalObject12defineGetterEPNS_9ExecStateERKNS_10IdentifierEPNS_8JSObjectEj +__ZN3JSC14JSGlobalObject12defineSetterEPNS_9ExecStateERKNS_10IdentifierEPNS_8JSObjectEj __ZN3JSC9Structure22getterSetterTransitionEPS0_ -__ZN3JSC8JSObject22fillGetterPropertySlotERNS_12PropertySlotEPNS_7JSValueE -__ZN3JSC12PropertySlot14functionGetterEPNS_9ExecStateERKNS_10IdentifierERKS0_ __ZN3JSCL28objectProtoFuncIsPrototypeOfEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSC12StringObjectC2EPNS_9ExecStateEN3WTF10PassRefPtrINS_9StructureEEERKNS_7UStringE -__ZNK3JSC7UString6is8BitEv -__ZN3JSC8JSObject15unwrappedObjectEv -__ZN3JSC22NativeErrorConstructor11getCallDataERNS_8CallDataE __ZN3JSC16JSCallbackObjectINS_8JSObjectEE11getCallDataERNS_8CallDataE -__ZN3JSC17BytecodeGenerator21emitComplexJumpScopesEPNS_5LabelEPNS_18ControlFlowContextES4_ -__ZN3JSC23ThrowableExpressionData14emitThrowErrorERNS_17BytecodeGeneratorENS_9ErrorTypeEPKc -__ZN3JSC17BytecodeGenerator12emitNewErrorEPNS_10RegisterIDENS_9ErrorTypeENS_7JSValueE -__ZN3JSC3JIT17emit_op_new_errorEPNS_11InstructionE -__ZN3JSC23MacroAssemblerX86Common8branch16ENS0_9ConditionENS_22AbstractMacroAssemblerINS_12X86AssemblerEE9BaseIndexENS4_5Imm32E -_JSStringRetain -__ZN3JSCL19arrayProtoFuncEveryEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZN3JSCL23arrayConstructorIsArrayEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZN3JSCL21objectConstructorKeysEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZN3JSC12DateInstanceC1EPNS_9ExecStateEN3WTF17NonNullPassRefPtrINS_9StructureEEEd +__ZN3JSC12DateInstanceC2EPNS_9ExecStateEN3WTF17NonNullPassRefPtrINS_9StructureEEEd +__ZN3JSCL24dateProtoFuncToISOStringEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZN3JSC15createTypeErrorEPNS_9ExecStateEPKc +__ZNK3JSC11JSByteArray9classInfoEv +__ZN3JSC11JSByteArray19getOwnPropertyNamesEPNS_9ExecStateERNS_17PropertyNameArrayENS_15EnumerationModeE +__ZN3JSC22NativeErrorConstructor11getCallDataERNS_8CallDataE +__ZN3JSCL36objectConstructorGetOwnPropertyNamesEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZN3JSCL41objectConstructorGetOwnPropertyDescriptorEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZN3JSC16JSVariableObject14symbolTableGetERKNS_10IdentifierERNS_18PropertyDescriptorE +__ZN3JSC8JSObject24getOwnPropertyDescriptorEPNS_9ExecStateERKNS_10IdentifierERNS_18PropertyDescriptorE +__ZNK3JSC18PropertyDescriptor20isAccessorDescriptorEv +__ZNK3JSC18PropertyDescriptor8writableEv +__ZNK3JSC18PropertyDescriptor12configurableEv +__ZN3JSC12JSGlobalData6createENS_15ThreadStackTypeE +__ZN3JSC12JSGlobalData10ClientDataD2Ev +__ZN3WTF14ThreadSpecificINS_13WTFThreadDataEE7destroyEPv +__ZN3WTF13WTFThreadDataD1Ev +__ZN7WebCore17AtomicStringTable7destroyEPS0_ +__ZN3JSC15IdentifierTableD1Ev +__ZN3WTF9dayInYearEdi +__ZN3WTF18monthFromDayInYearEib +__ZN3WTF23dayInMonthFromDayInYearEib +__ZN3JSC6Walker4walkENS_7JSValueE +__ZN3WTF9HashTableIPN7WebCore10StringImplES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_EC2ERKSA_ +__ZN3WTF6VectorIPN3JSC7JSArrayELm16EE14expandCapacityEm +__ZN3WTF6VectorIjLm16EE14expandCapacityEm +__ZN3WTF6VectorIN3JSC11WalkerStateELm16EE14expandCapacityEm +__ZL30makeGetterOrSetterPropertyNodePN3JSC12JSGlobalDataERKNS_10IdentifierES4_PNS_13ParameterNodeEPNS_16FunctionBodyNodeERKNS_1 +__ZN3JSC17BytecodeGenerator13emitPutGetterEPNS_10RegisterIDERKNS_10IdentifierES2_ +__ZN3JSC3JIT18emit_op_put_getterEPNS_11InstructionE +_cti_op_put_getter +__ZN3JSCL23booleanProtoFuncValueOfEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZN3JSCL19dateProtoFuncToJSONEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZN3JSC9ExecState9dateTableEPS0_ +__ZN3JSC10Identifier4fromEPNS_9ExecStateEd +__ZN3JSC13StringBuilder6appendEt +__ZN3JSC17BytecodeGenerator13emitPutSetterEPNS_10RegisterIDERKNS_10IdentifierES2_ +__ZN3JSC3JIT18emit_op_put_setterEPNS_11InstructionE +_cti_op_put_setter +__ZN3JSCL23objectConstructorCreateEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZN3JSCL16definePropertiesEPNS_9ExecStateEPNS_8JSObjectES3_ +__ZN3JSCL20toPropertyDescriptorEPNS_9ExecStateENS_7JSValueERNS_18PropertyDescriptorE +__ZN3JSC18PropertyDescriptor13setEnumerableEb +__ZN3WTF6VectorIN3JSC18PropertyDescriptorELm0EE14expandCapacityEm +__ZNK3JSC18PropertyDescriptor16isDataDescriptorEv +__ZN3JSC8JSObject17defineOwnPropertyEPNS_9ExecStateERKNS_10IdentifierERNS_18PropertyDescriptorEb +__ZN3JSCL13putDescriptorEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERNS_18PropertyDescriptorEjNS_7JSValueE +__ZNK3JSC18PropertyDescriptor19isGenericDescriptorEv +__ZN3JSCL31objectConstructorGetPrototypeOfEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZN3JSC18PropertyDescriptor9setGetterENS_7JSValueE +__ZNK3JSC18PropertyDescriptor6getterEv +__ZNK3JSC18PropertyDescriptor6setterEv +__ZN3JSC18PropertyDescriptor15setConfigurableEb +__ZN3JSC18PropertyDescriptor11setWritableEb +__ZN3JSC18PropertyDescriptor9setSetterENS_7JSValueE +__ZN3JSCL33objectConstructorDefinePropertiesEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZNK3JSC18PropertyDescriptor7equalToEPNS_9ExecStateERKS0_ +__ZNK3JSC18PropertyDescriptor15attributesEqualERKS0_ +__ZNK3JSC18PropertyDescriptor22attributesWithOverrideERKS0_ +__ZN3JSCL31objectConstructorDefinePropertyEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZN3JSC9ExecState11regExpTableEPS0_ +__ZN3JSC9Arguments19getOwnPropertyNamesEPNS_9ExecStateERNS_17PropertyNameArrayENS_15EnumerationModeE +__ZN3JSC9ExecState11numberTableEPS0_ +__ZN3JSC9ExecState22regExpConstructorTableEPS0_ +__ZNK3JSC15RegExpPrototype9classInfoEv +__ZNK3JSC10MathObject9classInfoEv +__ZN3JSC9ExecState9mathTableEPS0_ +__ZN3JSC9ExecState9jsonTableEPS0_ __ZN3JSCL20arrayProtoFuncReduceEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE __ZN3JSCL25arrayProtoFuncReduceRightEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE __ZN3JSCL28arrayProtoFuncToLocaleStringEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSCL25arrayProtoFuncLastIndexOfEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSC15AssignErrorNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE -__ZN3JSC8JITStubs16cti_op_new_errorEPPv -__ZN3JSC15AssignErrorNodeD0Ev -__ZN3JSC17BytecodeGenerator18emitUnexpectedLoadEPNS_10RegisterIDEd __ZN3JSC19JSStaticScopeObject3putEPNS_9ExecStateERKNS_10IdentifierENS_7JSValueERNS_15PutPropertySlotE -__ZN3JSC9ExecState9dateTableEPS0_ -__ZNK3JSC15RegExpPrototype9classInfoEv -__ZN3JSC12StringObject14deletePropertyEPNS_9ExecStateERKNS_10IdentifierE -__ZN3JSCL25dateProtoFuncToDateStringEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE __ZN3JSCL25dateProtoFuncToTimeStringEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSCL25numberConstructorNaNValueEPNS_9ExecStateERKNS_10IdentifierERKNS_12PropertySlotE -__ZN3JSCL31dateProtoFuncSetUTCMillisecondsEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSCL26dateProtoFuncSetUTCSecondsEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSCL26dateProtoFuncSetUTCMinutesEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSCL24dateProtoFuncSetUTCMonthEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSCL23throwStackOverflowErrorEPNS_9ExecStateEPNS_12JSGlobalDataEPvRS4_ -__ZN3JSC24createStackOverflowErrorEPNS_9ExecStateE +__ZN3JSC7JSValueC1EPNS_9ExecStateEd __ZN3JSC15DeleteValueNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE -__ZN3JSC15DeleteValueNodeD0Ev __ZN3JSC16PostfixErrorNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE +__ZN3JSC23ThrowableExpressionData14emitThrowErrorERNS_17BytecodeGeneratorENS_9ErrorTypeEPKcRKNS_7UStringE +__ZN3JSC10makeStringINS_7UStringES1_S1_EES1_T_T0_T1_ +__ZN3JSC13tryMakeStringINS_7UStringES1_S1_EEN3WTF10PassRefPtrIN7WebCore10StringImplEEET_T0_T1_ __ZN3JSC15PrefixErrorNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE -__ZN3JSC16PostfixErrorNodeD0Ev -__ZN3JSC15PrefixErrorNodeD0Ev __ZN3JSC23createInvalidParamErrorEPNS_9ExecStateEPKcNS_7JSValueEjPNS_9CodeBlockE +__ZN3JSC10makeStringIPKcS2_S2_EENS_7UStringET_T0_T1_ +__ZN3JSC13tryMakeStringIPKcS2_S2_EEN3WTF10PassRefPtrIN7WebCore10StringImplEEET_T0_T1_ __ZNK3JSC15DotAccessorNode17isDotAccessorNodeEv __ZNK3JSC14ExpressionNode17isDotAccessorNodeEv __ZN3JSC13JSNotAnObject3putEPNS_9ExecStateEjNS_7JSValueE -__ZN3JSC4Heap24setGCProtectNeedsLockingEv -__ZN3JSCL23callFunctionConstructorEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZN3JSC14ArrayPrototype24getOwnPropertyDescriptorEPNS_9ExecStateERKNS_10IdentifierERNS_18PropertyDescriptorE +__ZN3JSC13DatePrototype24getOwnPropertyDescriptorEPNS_9ExecStateERKNS_10IdentifierERNS_18PropertyDescriptorE +__ZN3JSC15StringPrototype24getOwnPropertyDescriptorEPNS_9ExecStateERKNS_10IdentifierERNS_18PropertyDescriptorE +__ZN3JSC12StringObject24getOwnPropertyDescriptorEPNS_9ExecStateERKNS_10IdentifierERNS_18PropertyDescriptorE +__ZN3JSC8JSString27getStringPropertyDescriptorEPNS_9ExecStateERKNS_10IdentifierERNS_18PropertyDescriptorE +__ZN3JSC17NumberConstructor24getOwnPropertyDescriptorEPNS_9ExecStateERKNS_10IdentifierERNS_18PropertyDescriptorE +__ZN3JSC17RegExpConstructor24getOwnPropertyDescriptorEPNS_9ExecStateERKNS_10IdentifierERNS_18PropertyDescriptorE +__ZN3JSCL22regExpConstructorInputEPNS_9ExecStateENS_7JSValueERKNS_10IdentifierE +__ZN3JSC12RegExpObject24getOwnPropertyDescriptorEPNS_9ExecStateERKNS_10IdentifierERNS_18PropertyDescriptorE +__ZN3JSC10MathObject24getOwnPropertyDescriptorEPNS_9ExecStateERKNS_10IdentifierERNS_18PropertyDescriptorE +__ZN3JSC18RegExpMatchesArray24getOwnPropertyDescriptorEPNS_9ExecStateERKNS_10IdentifierERNS_18PropertyDescriptorE +__ZN3JSC10JSFunction24getOwnPropertyDescriptorEPNS_9ExecStateERKNS_10IdentifierERNS_18PropertyDescriptorE +__ZN3JSC11JSByteArray24getOwnPropertyDescriptorEPNS_9ExecStateERKNS_10IdentifierERNS_18PropertyDescriptorE __ZNK3JSC16JSCallbackObjectINS_8JSObjectEE8toStringEPNS_9ExecStateE -__ZN3JSC8JITStubs17cti_op_instanceofEPPv +__ZN3JSC10throwErrorEPNS_9ExecStateENS_9ErrorTypeERKNS_7UStringEilS5_ __ZN3JSC17BytecodeGenerator35emitThrowExpressionTooDeepExceptionEv -__ZN3JSCL25numberConstructorMinValueEPNS_9ExecStateERKNS_10IdentifierERKNS_12PropertySlotE -__ZN3JSCL17mathProtoFuncACosEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZN3JSCL25numberConstructorMinValueEPNS_9ExecStateENS_7JSValueERKNS_10IdentifierE __ZN3JSCL18mathProtoFuncATan2EPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSCL16mathProtoFuncTanEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE __ZN3JSCL28numberProtoFuncToExponentialEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSCL26numberProtoFuncToPrecisionEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSCL12charSequenceEci +__ZN3JSC16parseIntOverflowEPKcii __ZN3JSCL29objectProtoFuncToLocaleStringEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSC6JSCell14toThisJSStringEPNS_9ExecStateE -__ZNK3JSC6JSCell12toThisStringEPNS_9ExecStateE -__ZN3JSCL27objectProtoFuncLookupSetterEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSC8JSObject12lookupSetterEPNS_9ExecStateERKNS_10IdentifierE -__ZN3JSC9ExecState22regExpConstructorTableEPS0_ -__ZN3JSCL24regExpConstructorDollar7EPNS_9ExecStateERKNS_10IdentifierERKNS_12PropertySlotE -__ZN3JSCL24regExpConstructorDollar8EPNS_9ExecStateERKNS_10IdentifierERKNS_12PropertySlotE -__ZN3JSCL24regExpConstructorDollar9EPNS_9ExecStateERKNS_10IdentifierERKNS_12PropertySlotE -__ZN3JSCL22regExpConstructorInputEPNS_9ExecStateERKNS_10IdentifierERKNS_12PropertySlotE +__ZN3JSCL24regExpConstructorDollar5EPNS_9ExecStateENS_7JSValueERKNS_10IdentifierE +__ZN3JSCL24regExpConstructorDollar6EPNS_9ExecStateENS_7JSValueERKNS_10IdentifierE +__ZN3JSCL24regExpConstructorDollar7EPNS_9ExecStateENS_7JSValueERKNS_10IdentifierE +__ZN3JSCL24regExpConstructorDollar8EPNS_9ExecStateENS_7JSValueERKNS_10IdentifierE +__ZN3JSCL24regExpConstructorDollar9EPNS_9ExecStateENS_7JSValueERKNS_10IdentifierE __ZN3JSCL25setRegExpConstructorInputEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueE -__ZN3JSCL26regExpConstructorLastMatchEPNS_9ExecStateERKNS_10IdentifierERKNS_12PropertySlotE -__ZN3JSCL26regExpConstructorLastParenEPNS_9ExecStateERKNS_10IdentifierERKNS_12PropertySlotE -__ZN3JSCL26regExpConstructorMultilineEPNS_9ExecStateERKNS_10IdentifierERKNS_12PropertySlotE +__ZN3JSCL26regExpConstructorLastMatchEPNS_9ExecStateENS_7JSValueERKNS_10IdentifierE +__ZN3JSCL26regExpConstructorLastParenEPNS_9ExecStateENS_7JSValueERKNS_10IdentifierE +__ZNK3JSC17RegExpConstructor12getLastParenEPNS_9ExecStateE +__ZN3JSCL26regExpConstructorMultilineEPNS_9ExecStateENS_7JSValueERKNS_10IdentifierE __ZN3JSCL29setRegExpConstructorMultilineEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueE -__ZN3JSC4Yarr15nondigitsCreateEv +__ZNK3JSC17RegExpConstructor5inputEv +__ZN3JSC10makeStringIPKcS2_EENS_7UStringET_T0_ +__ZN3JSC13tryMakeStringIPKcS2_EEN3WTF10PassRefPtrIN7WebCore10StringImplEEET_T0_ +__ZN3JSC10throwErrorEPNS_9ExecStateENS_9ErrorTypeERKNS_7UStringE __ZNK3JSC19JSStaticScopeObject12toThisObjectEPNS_9ExecStateE +__ZN3JSCL23stringProtoFuncTrimLeftEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZN3JSCL24stringProtoFuncTrimRightEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE __ZN3JSC12JSActivation18getArgumentsGetterEv -__ZN3JSC12JSActivation15argumentsGetterEPNS_9ExecStateERKNS_10IdentifierERKNS_12PropertySlotE -__ZN3JSCL23booleanProtoFuncValueOfEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZN3JSC12JSActivation15argumentsGetterEPNS_9ExecStateENS_7JSValueERKNS_10IdentifierE __ZN3JSCL28stringProtoFuncLocaleCompareEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE __ZN3WTF8Collator11userDefaultEv __ZNK3WTF8Collator7collateEPKtmS2_m __ZNK3WTF8Collator14createCollatorEv __ZN3WTF8CollatorD1Ev __ZN3WTF8Collator15releaseCollatorEv -__ZNK3JSC10MathObject9classInfoEv -__ZN3JSC9ExecState9mathTableEPS0_ +__ZN3JSC9Arguments14deletePropertyEPNS_9ExecStateERKNS_10IdentifierE +__ZN3JSCL26callNativeErrorConstructorEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZN3JSCL21callFunctionPrototypeEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZN3JSC6JSCell11getJSNumberEv +__ZN3JSCL16callRegExpObjectEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE __ZN3WTF6VectorIN3JSC20FunctionRegisterInfoELm0EE14expandCapacityEm __ZN3JSC3JIT25emit_op_profile_will_callEPNS_11InstructionE __ZN3JSC3JIT24emit_op_profile_did_callEPNS_11InstructionE @@ -1873,18 +2052,18 @@ __ZN3JSC16ProfileGeneratorC2ERKNS_7UStringEPNS_9ExecStateEj __ZN3JSC7Profile6createERKNS_7UStringEj __ZN3JSC7ProfileC2ERKNS_7UStringEj __ZN3JSC11ProfileNodeC1ERKNS_14CallIdentifierEPS0_S4_ -__ZN3JSC33getCurrentUTCTimeWithMicrosecondsEv __ZN3JSC16ProfileGenerator24addParentForConsoleStartEPNS_9ExecStateE -__ZN3JSC8Profiler20createCallIdentifierEPNS_12JSGlobalDataENS_7JSValueERKNS_7UStringEi -__ZN3JSC16InternalFunction21calculatedDisplayNameEPNS_12JSGlobalDataE +__ZN3JSC8Profiler20createCallIdentifierEPNS_9ExecStateENS_7JSValueERKNS_7UStringEi +__ZN3JSC16InternalFunction21calculatedDisplayNameEPNS_9ExecStateE +__ZN3JSC16InternalFunction11displayNameEPNS_9ExecStateE __ZN3JSC11ProfileNode10insertNodeEN3WTF10PassRefPtrIS0_EE __ZN3WTF6VectorINS_6RefPtrIN3JSC11ProfileNodeEEELm0EE14expandCapacityEm -__ZN3WTF6VectorINS_6RefPtrIN3JSC16ProfileGeneratorEEELm0EE14expandCapacityEm -__ZN3JSC8JITStubs23cti_op_profile_did_callEPPv +__ZN3WTF6VectorINS_6RefPtrIN3JSC16ProfileGeneratorEEELm0EE15reserveCapacityEm +_cti_op_profile_did_call __ZN3JSC8Profiler10didExecuteEPNS_9ExecStateENS_7JSValueE __ZN3JSC16ProfileGenerator10didExecuteERKNS_14CallIdentifierE __ZN3JSC11ProfileNode10didExecuteEv -__ZN3JSC8JITStubs24cti_op_profile_will_callEPPv +_cti_op_profile_will_call __ZN3JSC8Profiler11willExecuteEPNS_9ExecStateENS_7JSValueE __ZN3JSC16ProfileGenerator11willExecuteERKNS_14CallIdentifierE __ZN3JSC11ProfileNode11willExecuteERKNS_14CallIdentifierE @@ -1893,71 +2072,64 @@ __ZN3JSC16ProfileGenerator13stopProfilingEv __ZN3JSC7Profile7forEachEMNS_11ProfileNodeEFvvE __ZNK3JSC11ProfileNode25traverseNextNodePostOrderEv __ZN3JSC11ProfileNode13stopProfilingEv -__ZN3JSCeqERKNS_7UStringEPKc __ZN3JSC11ProfileNode11removeChildEPS0_ __ZN3JSC11ProfileNode8addChildEN3WTF10PassRefPtrIS0_EE -_JSValueIsObjectOfClass -_JSObjectCallAsConstructor -__ZN3JSC9constructEPNS_9ExecStateENS_7JSValueENS_13ConstructTypeERKNS_13ConstructDataERKNS_7ArgListE -_JSObjectCallAsFunction -__ZN3JSC4Heap14primaryHeapEndEv +__ZN3JSC8Debugger23recompileAllJSFunctionsEPNS_12JSGlobalDataE __ZN3JSC4Heap16primaryHeapBeginEv +__ZN3JSC4Heap14primaryHeapEndEv __ZNK3JSC18JSCallbackFunction9classInfoEv +__ZN3WTF7HashSetIPN3JSC18FunctionExecutableENS_7PtrHashIS3_EENS_10HashTraitsIS3_EEE3addERKS3_ +__ZN3WTF9HashTableIPN3JSC18FunctionExecutableES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E6expandE +__ZN3JSC18FunctionExecutable9recompileEPNS_9ExecStateE __ZN3JSC8Profiler11willExecuteEPNS_9ExecStateERKNS_7UStringEi __ZN3JSC8Profiler10didExecuteEPNS_9ExecStateERKNS_7UStringEi __ZNK3JSC16ProfileGenerator5titleEv +__ZN3JSC9CodeBlock33functionRegisterForBytecodeOffsetEjRi __ZN3JSC7ProfileD0Ev __ZN3WTF10RefCountedIN3JSC11ProfileNodeEE5derefEv -__ZN3JSC4Yarr14RegexGenerator33generatePatternCharacterNonGreedyERNS1_19TermGenerationStateE -__ZN3JSC35createInterruptedExecutionExceptionEPNS_12JSGlobalDataE -__ZNK3JSC25InterruptedExecutionError19isWatchdogExceptionEv -__ZN3JSC25InterruptedExecutionErrorD1Ev -__ZN3JSC12JSGlobalData10ClientDataD2Ev -__ZN3JSC18RegExpMatchesArray16getPropertyNamesEPNS_9ExecStateERNS_17PropertyNameArrayE +__ZN3JSC34createTerminatedExecutionExceptionEPNS_12JSGlobalDataE +__ZNK3JSC24TerminatedExecutionError13exceptionTypeEv +__ZN3JSC24TerminatedExecutionErrorD1Ev __ZN3WTF8CollatorC1EPKc __ZN3WTF8Collator18setOrderLowerFirstEb +_JSValueIsEqual +__ZN3JSC7JSValue13equalSlowCaseEPNS_9ExecStateES0_S0_ +__ZNK3JSC14JSGlobalObject17supportsProfilingEv +__ZNK7WebCore6String12toUIntStrictEPbi +__ZN7WebCore10StringImpl12toUIntStrictEPbi __ZN3WTF12randomNumberEv +__ZNK7WebCore6String8toUInt64EPb +__ZN7WebCore10StringImpl8toUInt64EPb +__ZN7WebCore18charactersToUInt64EPKtmPb +_JSStringGetMaximumUTF8CStringSize __ZN3JSC16JSCallbackObjectINS_8JSObjectEE3putEPNS_9ExecStateERKNS_10IdentifierENS_7JSValueERNS_15PutPropertySlotE -__ZNK3JSC6JSCell9getStringEv -__ZNK3JSC12DateInstance7getTimeERdRi -__ZN3JSC10throwErrorEPNS_9ExecStateENS_9ErrorTypeERKNS_7UStringE -_JSGlobalContextCreate -_JSGlobalContextCreateInGroup -__ZN3JSC4Heap29makeUsableFromMultipleThreadsEv -_JSGlobalContextRetain -__ZN3JSC6JSLock6unlockEb -_JSEvaluateScript -__ZNK3JSC14JSGlobalObject17supportsProfilingEv -_JSGlobalContextRelease -__ZN3JSC14JSGlobalObjectD1Ev -__ZN3JSC14JSGlobalObject18JSGlobalObjectDataD0Ev -__ZN3JSC17FunctionPrototype11getCallDataERNS_8CallDataE -__ZN3JSC15DateConstructor11getCallDataERNS_8CallDataE -__ZN3JSCL8callDateEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE -__ZN3JSC13JSNotAnObject4markEv -_JSObjectIsFunction +__ZN7WebCore6String6numberEm __ZN3JSC4Heap17globalObjectCountEv __ZN3JSC4Heap20protectedObjectCountEv __ZN3JSC4Heap25protectedObjectTypeCountsEv __ZN3WTF9HashTableIPKcSt4pairIS2_jENS_18PairFirstExtractorIS4_EENS_7PtrHashIS2_EENS_14PairHashTraitsINS_10HashTraitsIS2_EENSA_I +__ZNK3JSC6JSCell17isAPIValueWrapperEv +__ZNK3JSC6JSCell22isPropertyNameIteratorEv +__ZN3JSC4Heap16objectTypeCountsEv +__ZNK3JSC22JSPropertyNameIterator22isPropertyNameIteratorEv __ZN3WTF20fastMallocStatisticsEv __ZNK3JSC4Heap10statisticsEv __ZN3WTF27releaseFastMallocFreeMemoryEv -__ZN3JSC10JSFunction16getConstructDataERNS_13ConstructDataE -__ZN3JSC10JSFunction9constructEPNS_9ExecStateERKNS_7ArgListE +_JSStringIsEqualToUTF8CString +__ZN3JSC16JSCallbackObjectINS_8JSObjectEE14callbackGetterEPNS_9ExecStateENS_7JSValueERKNS_10IdentifierE +_JSObjectSetPrivate __ZN3JSC8Debugger6attachEPNS_14JSGlobalObjectE -__ZN3WTF7HashSetIPN3JSC14JSGlobalObjectENS_7PtrHashIS3_EENS_10HashTraitsIS3_EEE3addERKS3_ __ZN3WTF9HashTableIPN3JSC14JSGlobalObjectES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E6rehashEi +__ZN3WTF9HashTableIPN3JSC14SourceProviderESt4pairIS3_PNS1_9ExecStateEENS_18PairFirstExtractorIS7_EENS_7PtrHashIS3_EENS_14PairHa +__ZN3JSC7UString4fromEl __ZN3JSC3JIT13emit_op_debugEPNS_11InstructionE -__ZN3JSC8JITStubs12cti_op_debugEPPv +_cti_op_debug __ZN3JSC11Interpreter5debugEPNS_9ExecStateENS_11DebugHookIDEii +__ZNK3JSC17DebuggerCallFrame4typeEv +__ZNK3JSC17DebuggerCallFrame22calculatedFunctionNameEv +__ZNK3JSC12JSActivation18isActivationObjectEv +__ZNK3JSC17DebuggerCallFrame10thisObjectEv +__ZN3WTF28setMainThreadCallbacksPausedEb +__ZNK3JSC17DebuggerCallFrame8evaluateERKNS_7UStringERNS_7JSValueE __ZN3JSC8Debugger6detachEPNS_14JSGlobalObjectE -__ZN3JSC9CodeBlock33functionRegisterForBytecodeOffsetEjRi -_JSStringIsEqualToUTF8CString -__ZN3JSC16JSCallbackObjectINS_8JSObjectEE14callbackGetterEPNS_9ExecStateERKNS_10IdentifierERKNS_12PropertySlotE -_JSObjectSetPrivate -__ZN3JSC7UString3Rep11computeHashEPKci -__ZN3JSC16JSCallbackObjectINS_8JSObjectEE14deletePropertyEPNS_9ExecStateERKNS_10IdentifierE -_JSGarbageCollect -__ZN3JSC4Heap6isBusyEv -__ZN3JSCL18styleFromArgStringERKNS_7UStringEl +_JSValueIsObjectOfClass diff --git a/JavaScriptCore.pri b/JavaScriptCore.pri index 75737ae..de5505f 100644 --- a/JavaScriptCore.pri +++ b/JavaScriptCore.pri @@ -1,21 +1,28 @@ # JavaScriptCore - Qt4 build info VPATH += $$PWD - +CONFIG(debug, debug|release) { + # Output in JavaScriptCore/ + JAVASCRIPTCORE_DESTDIR = debug + # Use a config-specific target to prevent parallel builds file clashes on Mac + JAVASCRIPTCORE_TARGET = jscored +} else { + JAVASCRIPTCORE_DESTDIR = release + JAVASCRIPTCORE_TARGET = jscore +} CONFIG(standalone_package) { isEmpty(JSC_GENERATED_SOURCES_DIR):JSC_GENERATED_SOURCES_DIR = $$PWD/generated } else { isEmpty(JSC_GENERATED_SOURCES_DIR):JSC_GENERATED_SOURCES_DIR = generated } -CONFIG(debug, debug|release) { - OBJECTS_DIR = obj/debug -} else { # Release - OBJECTS_DIR = obj/release -} +CONFIG(standalone_package): DEFINES *= NDEBUG symbian: { # Need to guarantee this comes before system includes of /epoc32/include MMP_RULES += "USERINCLUDE ../JavaScriptCore/profiler" + LIBS += -lhal + # For hal.h + INCLUDEPATH *= $$MW_LAYER_SYSTEMINCLUDE } INCLUDEPATH = \ @@ -31,8 +38,8 @@ INCLUDEPATH = \ $$PWD/pcre \ $$PWD/profiler \ $$PWD/runtime \ - $$PWD/wrec \ $$PWD/wtf \ + $$PWD/wtf/symbian \ $$PWD/wtf/unicode \ $$PWD/yarr \ $$PWD/API \ @@ -40,11 +47,10 @@ INCLUDEPATH = \ $$JSC_GENERATED_SOURCES_DIR \ $$INCLUDEPATH +win32-*: DEFINES += _HAS_TR1=0 + DEFINES += BUILDING_QT__ BUILDING_JavaScriptCore BUILDING_WTF -win32-* { - LIBS += -lwinmm -} contains(JAVASCRIPTCORE_JIT,yes) { DEFINES+=ENABLE_JIT=1 DEFINES+=ENABLE_YARR_JIT=1 @@ -56,176 +62,50 @@ contains(JAVASCRIPTCORE_JIT,no) { DEFINES+=ENABLE_YARR=0 } -# Rules when JIT enabled (not disabled) -!contains(DEFINES, ENABLE_JIT=0) { - linux*-g++*:greaterThan(QT_GCC_MAJOR_VERSION,3):greaterThan(QT_GCC_MINOR_VERSION,0) { - QMAKE_CXXFLAGS += -fno-stack-protector - QMAKE_CFLAGS += -fno-stack-protector - } -} - wince* { INCLUDEPATH += $$QT_SOURCE_TREE/src/3rdparty/ce-compat - SOURCES += $$QT_SOURCE_TREE/src/3rdparty/ce-compat/ce_time.c DEFINES += WINCEBASIC + + INCLUDEPATH += $$PWD/../JavaScriptCore/os-wince + INCLUDEPATH += $$PWD/../JavaScriptCore/os-win32 } -include(pcre/pcre.pri) -SOURCES += \ - API/JSBase.cpp \ - API/JSCallbackConstructor.cpp \ - API/JSCallbackFunction.cpp \ - API/JSCallbackObject.cpp \ - API/JSClassRef.cpp \ - API/JSContextRef.cpp \ - API/JSObjectRef.cpp \ - API/JSStringRef.cpp \ - API/JSValueRef.cpp \ - API/OpaqueJSString.cpp \ - assembler/ARMAssembler.cpp \ - assembler/MacroAssemblerARM.cpp \ - bytecode/CodeBlock.cpp \ - bytecode/JumpTable.cpp \ - bytecode/Opcode.cpp \ - bytecode/SamplingTool.cpp \ - bytecode/StructureStubInfo.cpp \ - bytecompiler/BytecodeGenerator.cpp \ - bytecompiler/NodesCodegen.cpp \ - debugger/DebuggerActivation.cpp \ - debugger/DebuggerCallFrame.cpp \ - debugger/Debugger.cpp \ - interpreter/CallFrame.cpp \ - interpreter/Interpreter.cpp \ - interpreter/RegisterFile.cpp \ - jit/ExecutableAllocatorPosix.cpp \ - jit/ExecutableAllocatorSymbian.cpp \ - jit/ExecutableAllocatorWin.cpp \ - jit/ExecutableAllocator.cpp \ - jit/JITArithmetic.cpp \ - jit/JITCall.cpp \ - jit/JIT.cpp \ - jit/JITOpcodes.cpp \ - jit/JITPropertyAccess.cpp \ - jit/JITStubs.cpp \ - parser/Lexer.cpp \ - parser/Nodes.cpp \ - parser/ParserArena.cpp \ - parser/Parser.cpp \ - profiler/Profile.cpp \ - profiler/ProfileGenerator.cpp \ - profiler/ProfileNode.cpp \ - profiler/Profiler.cpp \ - runtime/ArgList.cpp \ - runtime/Arguments.cpp \ - runtime/ArrayConstructor.cpp \ - runtime/ArrayPrototype.cpp \ - runtime/BooleanConstructor.cpp \ - runtime/BooleanObject.cpp \ - runtime/BooleanPrototype.cpp \ - runtime/CallData.cpp \ - runtime/Collector.cpp \ - runtime/CommonIdentifiers.cpp \ - runtime/Completion.cpp \ - runtime/ConstructData.cpp \ - runtime/DateConstructor.cpp \ - runtime/DateConversion.cpp \ - runtime/DateInstance.cpp \ - runtime/DatePrototype.cpp \ - runtime/ErrorConstructor.cpp \ - runtime/Error.cpp \ - runtime/ErrorInstance.cpp \ - runtime/ErrorPrototype.cpp \ - runtime/ExceptionHelpers.cpp \ - runtime/Executable.cpp \ - runtime/FunctionConstructor.cpp \ - runtime/FunctionPrototype.cpp \ - runtime/GetterSetter.cpp \ - runtime/GlobalEvalFunction.cpp \ - runtime/Identifier.cpp \ - runtime/InitializeThreading.cpp \ - runtime/InternalFunction.cpp \ - runtime/JSActivation.cpp \ - runtime/JSAPIValueWrapper.cpp \ - runtime/JSArray.cpp \ - runtime/JSByteArray.cpp \ - runtime/JSCell.cpp \ - runtime/JSFunction.cpp \ - runtime/JSGlobalData.cpp \ - runtime/JSGlobalObject.cpp \ - runtime/JSGlobalObjectFunctions.cpp \ - runtime/JSImmediate.cpp \ - runtime/JSLock.cpp \ - runtime/JSNotAnObject.cpp \ - runtime/JSNumberCell.cpp \ - runtime/JSObject.cpp \ - runtime/JSONObject.cpp \ - runtime/JSPropertyNameIterator.cpp \ - runtime/JSStaticScopeObject.cpp \ - runtime/JSString.cpp \ - runtime/JSValue.cpp \ - runtime/JSVariableObject.cpp \ - runtime/JSWrapperObject.cpp \ - runtime/LiteralParser.cpp \ - runtime/Lookup.cpp \ - runtime/MarkStackPosix.cpp \ - runtime/MarkStackSymbian.cpp \ - runtime/MarkStackWin.cpp \ - runtime/MarkStack.cpp \ - runtime/MathObject.cpp \ - runtime/NativeErrorConstructor.cpp \ - runtime/NativeErrorPrototype.cpp \ - runtime/NumberConstructor.cpp \ - runtime/NumberObject.cpp \ - runtime/NumberPrototype.cpp \ - runtime/ObjectConstructor.cpp \ - runtime/ObjectPrototype.cpp \ - runtime/Operations.cpp \ - runtime/PropertyDescriptor.cpp \ - runtime/PropertyNameArray.cpp \ - runtime/PropertySlot.cpp \ - runtime/PrototypeFunction.cpp \ - runtime/RegExpConstructor.cpp \ - runtime/RegExp.cpp \ - runtime/RegExpObject.cpp \ - runtime/RegExpPrototype.cpp \ - runtime/ScopeChain.cpp \ - runtime/SmallStrings.cpp \ - runtime/StringConstructor.cpp \ - runtime/StringObject.cpp \ - runtime/StringPrototype.cpp \ - runtime/StructureChain.cpp \ - runtime/Structure.cpp \ - runtime/TimeoutChecker.cpp \ - runtime/UString.cpp \ - runtime/UStringImpl.cpp \ - wtf/Assertions.cpp \ - wtf/ByteArray.cpp \ - wtf/CurrentTime.cpp \ - wtf/DateMath.cpp \ - wtf/dtoa.cpp \ - wtf/FastMalloc.cpp \ - wtf/HashTable.cpp \ - wtf/MainThread.cpp \ - wtf/qt/MainThreadQt.cpp \ - wtf/qt/ThreadingQt.cpp \ - wtf/RandomNumber.cpp \ - wtf/RefCountedLeakCounter.cpp \ - wtf/ThreadingNone.cpp \ - wtf/Threading.cpp \ - wtf/TypeTraits.cpp \ - wtf/unicode/CollatorDefault.cpp \ - wtf/unicode/icu/CollatorICU.cpp \ - wtf/unicode/UTF8.cpp \ - yarr/RegexCompiler.cpp \ - yarr/RegexInterpreter.cpp \ - yarr/RegexJIT.cpp +defineTest(addJavaScriptCoreLib) { + # Argument is the relative path to JavaScriptCore.pro's qmake output + pathToJavaScriptCoreOutput = $$ARGS/$$JAVASCRIPTCORE_DESTDIR -# Generated files, simply list them for JavaScriptCore -SOURCES += \ - $${JSC_GENERATED_SOURCES_DIR}/Grammar.cpp + win32-msvc*|wince* { + LIBS += -L$$pathToJavaScriptCoreOutput + LIBS += -l$$JAVASCRIPTCORE_TARGET + POST_TARGETDEPS += $${pathToJavaScriptCoreOutput}$${QMAKE_DIR_SEP}$${JAVASCRIPTCORE_TARGET}.lib + } else:symbian { + LIBS += -l$${JAVASCRIPTCORE_TARGET}.lib + # The default symbian build system does not use library paths at all. However when building with + # qmake's symbian makespec that uses Makefiles + QMAKE_LIBDIR += $$pathToJavaScriptCoreOutput + POST_TARGETDEPS += $${pathToJavaScriptCoreOutput}$${QMAKE_DIR_SEP}$${JAVASCRIPTCORE_TARGET}.lib + } else { + # Make sure jscore will be early in the list of libraries to workaround a bug in MinGW + # that can't resolve symbols from QtCore if libjscore comes after. + QMAKE_LIBDIR = $$pathToJavaScriptCoreOutput $$QMAKE_LIBDIR + LIBS += -l$$JAVASCRIPTCORE_TARGET + POST_TARGETDEPS += $${pathToJavaScriptCoreOutput}$${QMAKE_DIR_SEP}lib$${JAVASCRIPTCORE_TARGET}.a + } -!contains(DEFINES, USE_SYSTEM_MALLOC) { - SOURCES += wtf/TCSystemAlloc.cpp -} + win32-* { + LIBS += -lwinmm + } + + # The following line is to prevent qmake from adding jscore to libQtWebKit's prl dependencies. + # The compromise we have to accept by disabling explicitlib is to drop support to link QtWebKit and QtScript + # statically in applications (which isn't used often because, among other things, of licensing obstacles). + CONFIG -= explicitlib + export(QMAKE_LIBDIR) + export(LIBS) + export(POST_TARGETDEPS) + export(CONFIG) + + return(true) +} diff --git a/JavaScriptCore.pro b/JavaScriptCore.pro index 0d6becb..8b0a0ef 100644 --- a/JavaScriptCore.pro +++ b/JavaScriptCore.pro @@ -1,48 +1,46 @@ # JavaScriptCore - qmake build info CONFIG += building-libs include($$PWD/../WebKit.pri) +include(JavaScriptCore.pri) TEMPLATE = lib CONFIG += staticlib -TARGET = JavaScriptCore +# Don't use JavaScriptCore as the target name. qmake would create a JavaScriptCore.vcproj for msvc +# which already exists as a directory +TARGET = $$JAVASCRIPTCORE_TARGET +DESTDIR = $$JAVASCRIPTCORE_DESTDIR +QT += core +QT -= gui CONFIG += depend_includepath contains(QT_CONFIG, embedded):CONFIG += embedded CONFIG(QTDIR_build) { - GENERATED_SOURCES_DIR = $$PWD/generated - OLDDESTDIR = $$DESTDIR - include($$QT_SOURCE_TREE/src/qbase.pri) - INSTALLS = - DESTDIR = $$OLDDESTDIR - DEFINES *= NDEBUG -} - -isEmpty(GENERATED_SOURCES_DIR):GENERATED_SOURCES_DIR = tmp -GENERATED_SOURCES_DIR_SLASH = $${GENERATED_SOURCES_DIR}$${QMAKE_DIR_SEP} - -INCLUDEPATH += $$GENERATED_SOURCES_DIR - -!CONFIG(QTDIR_build) { + # Make sure we compile both debug and release on mac when inside Qt. + # This line was extracted from qbase.pri instead of including the whole file + win32|mac:!macx-xcode:CONFIG += debug_and_release +} else { CONFIG(debug, debug|release) { OBJECTS_DIR = obj/debug } else { # Release OBJECTS_DIR = obj/release } + # Make sure that build_all follows the build_all config in WebCore + mac:contains(QT_CONFIG, qt_framework):!CONFIG(webkit_no_framework):!build_pass:CONFIG += build_all } -CONFIG(release):!CONFIG(QTDIR_build) { - contains(QT_CONFIG, reduce_exports):CONFIG += hide_symbols - unix:contains(QT_CONFIG, reduce_relocations):CONFIG += bsymbolic_functions -} - -linux-*: DEFINES += HAVE_STDINT_H -freebsd-*: DEFINES += HAVE_PTHREAD_NP_H - -DEFINES += BUILD_WEBKIT +# WebCore adds these config only when in a standalone build. +# qbase.pri takes care of that when in a QTDIR_build +# Here we add the config for both cases since we don't include qbase.pri +contains(QT_CONFIG, reduce_exports):CONFIG += hide_symbols +unix:contains(QT_CONFIG, reduce_relocations):CONFIG += bsymbolic_functions -win32-*: DEFINES += _HAS_TR1=0 +CONFIG(QTDIR_build) { + # Remove the following 2 lines if you want debug information in JavaScriptCore + CONFIG -= separate_debug_info + CONFIG += no_debug_info +} # Pick up 3rdparty libraries from INCLUDE/LIB just like with MSVC win32-g++ { @@ -52,11 +50,194 @@ win32-g++ { QMAKE_LIBDIR_POST += $$split(TMPPATH,";") } -DEFINES += WTF_CHANGES=1 +*-g++*:QMAKE_CXXFLAGS_RELEASE -= -O2 +*-g++*:QMAKE_CXXFLAGS_RELEASE += -O3 -include(JavaScriptCore.pri) +# Rules when JIT enabled (not disabled) +!contains(DEFINES, ENABLE_JIT=0) { + linux*-g++*:greaterThan(QT_GCC_MAJOR_VERSION,3):greaterThan(QT_GCC_MINOR_VERSION,0) { + QMAKE_CXXFLAGS += -fno-stack-protector + QMAKE_CFLAGS += -fno-stack-protector + } +} -QMAKE_EXTRA_TARGETS += generated_files +wince* { + SOURCES += $$QT_SOURCE_TREE/src/3rdparty/ce-compat/ce_time.c +} -*-g++*:QMAKE_CXXFLAGS_RELEASE -= -O2 -*-g++*:QMAKE_CXXFLAGS_RELEASE += -O3 +include(pcre/pcre.pri) + +SOURCES += \ + API/JSBase.cpp \ + API/JSCallbackConstructor.cpp \ + API/JSCallbackFunction.cpp \ + API/JSCallbackObject.cpp \ + API/JSClassRef.cpp \ + API/JSContextRef.cpp \ + API/JSObjectRef.cpp \ + API/JSStringRef.cpp \ + API/JSValueRef.cpp \ + API/OpaqueJSString.cpp \ + assembler/ARMAssembler.cpp \ + assembler/MacroAssemblerARM.cpp \ + bytecode/CodeBlock.cpp \ + bytecode/JumpTable.cpp \ + bytecode/Opcode.cpp \ + bytecode/SamplingTool.cpp \ + bytecode/StructureStubInfo.cpp \ + bytecompiler/BytecodeGenerator.cpp \ + bytecompiler/NodesCodegen.cpp \ + debugger/DebuggerActivation.cpp \ + debugger/DebuggerCallFrame.cpp \ + debugger/Debugger.cpp \ + interpreter/CallFrame.cpp \ + interpreter/Interpreter.cpp \ + interpreter/RegisterFile.cpp \ + jit/ExecutableAllocatorFixedVMPool.cpp \ + jit/ExecutableAllocatorPosix.cpp \ + jit/ExecutableAllocatorSymbian.cpp \ + jit/ExecutableAllocatorWin.cpp \ + jit/ExecutableAllocator.cpp \ + jit/JITArithmetic.cpp \ + jit/JITArithmetic32_64.cpp \ + jit/JITCall.cpp \ + jit/JIT.cpp \ + jit/JITOpcodes.cpp \ + jit/JITOpcodes32_64.cpp \ + jit/JITPropertyAccess.cpp \ + jit/JITPropertyAccess32_64.cpp \ + jit/JITStubs.cpp \ + jit/ThunkGenerators.cpp \ + parser/Lexer.cpp \ + parser/Nodes.cpp \ + parser/ParserArena.cpp \ + parser/Parser.cpp \ + profiler/Profile.cpp \ + profiler/ProfileGenerator.cpp \ + profiler/ProfileNode.cpp \ + profiler/Profiler.cpp \ + runtime/ArgList.cpp \ + runtime/Arguments.cpp \ + runtime/ArrayConstructor.cpp \ + runtime/ArrayPrototype.cpp \ + runtime/BooleanConstructor.cpp \ + runtime/BooleanObject.cpp \ + runtime/BooleanPrototype.cpp \ + runtime/CallData.cpp \ + runtime/Collector.cpp \ + runtime/CommonIdentifiers.cpp \ + runtime/Completion.cpp \ + runtime/ConstructData.cpp \ + runtime/DateConstructor.cpp \ + runtime/DateConversion.cpp \ + runtime/DateInstance.cpp \ + runtime/DatePrototype.cpp \ + runtime/ErrorConstructor.cpp \ + runtime/Error.cpp \ + runtime/ErrorInstance.cpp \ + runtime/ErrorPrototype.cpp \ + runtime/ExceptionHelpers.cpp \ + runtime/Executable.cpp \ + runtime/FunctionConstructor.cpp \ + runtime/FunctionPrototype.cpp \ + runtime/GetterSetter.cpp \ + runtime/GlobalEvalFunction.cpp \ + runtime/Identifier.cpp \ + runtime/InitializeThreading.cpp \ + runtime/InternalFunction.cpp \ + runtime/JSActivation.cpp \ + runtime/JSAPIValueWrapper.cpp \ + runtime/JSArray.cpp \ + runtime/JSByteArray.cpp \ + runtime/JSCell.cpp \ + runtime/JSFunction.cpp \ + runtime/JSGlobalData.cpp \ + runtime/JSGlobalObject.cpp \ + runtime/JSGlobalObjectFunctions.cpp \ + runtime/JSImmediate.cpp \ + runtime/JSLock.cpp \ + runtime/JSNotAnObject.cpp \ + runtime/JSNumberCell.cpp \ + runtime/JSObject.cpp \ + runtime/JSONObject.cpp \ + runtime/JSPropertyNameIterator.cpp \ + runtime/JSStaticScopeObject.cpp \ + runtime/JSString.cpp \ + runtime/JSValue.cpp \ + runtime/JSVariableObject.cpp \ + runtime/JSWrapperObject.cpp \ + runtime/LiteralParser.cpp \ + runtime/Lookup.cpp \ + runtime/MarkStackPosix.cpp \ + runtime/MarkStackSymbian.cpp \ + runtime/MarkStackWin.cpp \ + runtime/MarkStack.cpp \ + runtime/MathObject.cpp \ + runtime/NativeErrorConstructor.cpp \ + runtime/NativeErrorPrototype.cpp \ + runtime/NumberConstructor.cpp \ + runtime/NumberObject.cpp \ + runtime/NumberPrototype.cpp \ + runtime/ObjectConstructor.cpp \ + runtime/ObjectPrototype.cpp \ + runtime/Operations.cpp \ + runtime/PropertyDescriptor.cpp \ + runtime/PropertyNameArray.cpp \ + runtime/PropertySlot.cpp \ + runtime/PrototypeFunction.cpp \ + runtime/RegExpConstructor.cpp \ + runtime/RegExp.cpp \ + runtime/RegExpObject.cpp \ + runtime/RegExpPrototype.cpp \ + runtime/RegExpCache.cpp \ + runtime/RopeImpl.cpp \ + runtime/ScopeChain.cpp \ + runtime/SmallStrings.cpp \ + runtime/StringConstructor.cpp \ + runtime/StringObject.cpp \ + runtime/StringPrototype.cpp \ + runtime/StructureChain.cpp \ + runtime/Structure.cpp \ + runtime/TimeoutChecker.cpp \ + runtime/UString.cpp \ + wtf/Assertions.cpp \ + wtf/ByteArray.cpp \ + wtf/CurrentTime.cpp \ + wtf/DateMath.cpp \ + wtf/dtoa.cpp \ + wtf/FastMalloc.cpp \ + wtf/HashTable.cpp \ + wtf/MD5.cpp \ + wtf/MainThread.cpp \ + wtf/qt/MainThreadQt.cpp \ + wtf/qt/StringQt.cpp \ + wtf/qt/ThreadingQt.cpp \ + wtf/RandomNumber.cpp \ + wtf/RefCountedLeakCounter.cpp \ + wtf/symbian/BlockAllocatorSymbian.cpp \ + wtf/ThreadingNone.cpp \ + wtf/Threading.cpp \ + wtf/TypeTraits.cpp \ + wtf/WTFThreadData.cpp \ + wtf/text/AtomicString.cpp \ + wtf/text/CString.cpp \ + wtf/text/StringImpl.cpp \ + wtf/text/StringStatics.cpp \ + wtf/text/WTFString.cpp \ + wtf/unicode/CollatorDefault.cpp \ + wtf/unicode/icu/CollatorICU.cpp \ + wtf/unicode/UTF8.cpp \ + yarr/RegexCompiler.cpp \ + yarr/RegexInterpreter.cpp \ + yarr/RegexJIT.cpp + +# Generated files, simply list them for JavaScriptCore +SOURCES += \ + $${JSC_GENERATED_SOURCES_DIR}/Grammar.cpp + +!contains(DEFINES, USE_SYSTEM_MALLOC) { + SOURCES += wtf/TCSystemAlloc.cpp +} + +# Disable C++0x mode in JSC for those who enabled it in their Qt's mkspec +*-g++*:QMAKE_CXXFLAGS -= -std=c++0x -std=gnu++0x diff --git a/assembler/ARMAssembler.cpp b/assembler/ARMAssembler.cpp index 6dd2b87..a181b7e 100644 --- a/assembler/ARMAssembler.cpp +++ b/assembler/ARMAssembler.cpp @@ -262,28 +262,29 @@ ARMWord ARMAssembler::encodeComplexImm(ARMWord imm, int dest) // Memory load/store helpers -void ARMAssembler::dataTransfer32(bool isLoad, RegisterID srcDst, RegisterID base, int32_t offset) +void ARMAssembler::dataTransfer32(bool isLoad, RegisterID srcDst, RegisterID base, int32_t offset, bool bytes) { + ARMWord transferFlag = bytes ? DT_BYTE : 0; if (offset >= 0) { if (offset <= 0xfff) - dtr_u(isLoad, srcDst, base, offset); + dtr_u(isLoad, srcDst, base, offset | transferFlag); else if (offset <= 0xfffff) { add_r(ARMRegisters::S0, base, OP2_IMM | (offset >> 12) | (10 << 8)); - dtr_u(isLoad, srcDst, ARMRegisters::S0, offset & 0xfff); + dtr_u(isLoad, srcDst, ARMRegisters::S0, (offset & 0xfff) | transferFlag); } else { ARMWord reg = getImm(offset, ARMRegisters::S0); - dtr_ur(isLoad, srcDst, base, reg); + dtr_ur(isLoad, srcDst, base, reg | transferFlag); } } else { offset = -offset; if (offset <= 0xfff) - dtr_d(isLoad, srcDst, base, offset); + dtr_d(isLoad, srcDst, base, offset | transferFlag); else if (offset <= 0xfffff) { sub_r(ARMRegisters::S0, base, OP2_IMM | (offset >> 12) | (10 << 8)); - dtr_d(isLoad, srcDst, ARMRegisters::S0, offset & 0xfff); + dtr_d(isLoad, srcDst, ARMRegisters::S0, (offset & 0xfff) | transferFlag); } else { ARMWord reg = getImm(offset, ARMRegisters::S0); - dtr_dr(isLoad, srcDst, base, reg); + dtr_dr(isLoad, srcDst, base, reg | transferFlag); } } } @@ -356,7 +357,7 @@ void* ARMAssembler::executableCopy(ExecutablePool* allocator) int pos = (*iter) & (~0x1); ARMWord* ldrAddr = reinterpret_cast(data + pos); ARMWord* addr = getLdrImmAddress(ldrAddr); - if (*addr != 0xffffffff) { + if (*addr != InvalidBranchTarget) { if (!(*iter & 1)) { int diff = reinterpret_cast(data + *addr) - (ldrAddr + DefaultPrefetching); diff --git a/assembler/ARMAssembler.h b/assembler/ARMAssembler.h index 6967b37..2ca0949 100644 --- a/assembler/ARMAssembler.h +++ b/assembler/ARMAssembler.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2009 University of Szeged + * Copyright (C) 2009, 2010 University of Szeged * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -27,8 +27,6 @@ #ifndef ARMAssembler_h #define ARMAssembler_h -#include - #if ENABLE(ASSEMBLER) && CPU(ARM_TRADITIONAL) #include "AssemblerBufferWithConstantPool.h" @@ -125,6 +123,7 @@ namespace JSC { FSUBD = 0x0e300b40, FMULD = 0x0e200b00, FCMPD = 0x0eb40b40, + FSQRTD = 0x0eb10bc0, DTR = 0x05000000, LDRH = 0x00100090, STRH = 0x00000090, @@ -133,6 +132,9 @@ namespace JSC { FDTR = 0x0d000b00, B = 0x0a000000, BL = 0x0b000000, +#if WTF_ARM_ARCH_AT_LEAST(5) || defined(__ARM_ARCH_4T__) + BX = 0x012fff10, +#endif FMSR = 0x0e000a10, FMRS = 0x0e100a10, FSITOD = 0x0eb80bc0, @@ -141,6 +143,7 @@ namespace JSC { #if WTF_ARM_ARCH_AT_LEAST(5) CLZ = 0x016f0f10, BKPT = 0xe120070, + BLX = 0x012fff30, #endif #if WTF_ARM_ARCH_AT_LEAST(7) MOVW = 0x03000000, @@ -155,6 +158,7 @@ namespace JSC { SET_CC = (1 << 20), OP2_OFSREG = (1 << 25), DT_UP = (1 << 23), + DT_BYTE = (1 << 22), DT_WB = (1 << 21), // This flag is inlcuded in LDR and STR DT_PRE = (1 << 24), @@ -183,6 +187,7 @@ namespace JSC { }; static const ARMWord INVALID_IMM = 0xf0000000; + static const ARMWord InvalidBranchTarget = 0xffffffff; static const int DefaultPrefetching = 2; class JmpSrc { @@ -422,6 +427,11 @@ namespace JSC { emitInst(static_cast(cc) | FCMPD, dd, 0, dm); } + void fsqrtd_r(int dd, int dm, Condition cc = AL) + { + emitInst(static_cast(cc) | FSQRTD, dd, 0, dm); + } + void ldr_imm(int rd, ARMWord imm, Condition cc = AL) { m_buffer.putIntWithConstantInt(static_cast(cc) | DTR | DT_LOAD | DT_UP | RN(ARMRegisters::pc) | RD(rd), imm, true); @@ -548,6 +558,30 @@ namespace JSC { #endif } + void bx(int rm, Condition cc = AL) + { +#if WTF_ARM_ARCH_AT_LEAST(5) || defined(__ARM_ARCH_4T__) + emitInst(static_cast(cc) | BX, 0, 0, RM(rm)); +#else + mov_r(ARMRegisters::pc, RM(rm), cc); +#endif + } + + JmpSrc blx(int rm, Condition cc = AL) + { +#if WTF_ARM_ARCH_AT_LEAST(5) + int s = m_buffer.uncheckedSize(); + emitInst(static_cast(cc) | BLX, 0, 0, RM(rm)); +#else + ASSERT(rm != 14); + ensureSpace(2 * sizeof(ARMWord), 0); + mov_r(ARMRegisters::lr, ARMRegisters::pc, cc); + int s = m_buffer.uncheckedSize(); + bx(rm, cc); +#endif + return JmpSrc(s); + } + static ARMWord lsl(int reg, ARMWord value) { ASSERT(reg <= ARMRegisters::pc); @@ -620,21 +654,34 @@ namespace JSC { return label(); } - JmpSrc jmp(Condition cc = AL, int useConstantPool = 0) + JmpSrc loadBranchTarget(int rd, Condition cc = AL, int useConstantPool = 0) { ensureSpace(sizeof(ARMWord), sizeof(ARMWord)); int s = m_buffer.uncheckedSize(); - ldr_un_imm(ARMRegisters::pc, 0xffffffff, cc); + ldr_un_imm(rd, InvalidBranchTarget, cc); m_jumps.append(s | (useConstantPool & 0x1)); return JmpSrc(s); } + JmpSrc jmp(Condition cc = AL, int useConstantPool = 0) + { + return loadBranchTarget(ARMRegisters::pc, cc, useConstantPool); + } + void* executableCopy(ExecutablePool* allocator); // Patching helpers static ARMWord* getLdrImmAddress(ARMWord* insn) { +#if WTF_ARM_ARCH_AT_LEAST(5) + // Check for call + if ((*insn & 0x0f7f0000) != 0x051f0000) { + // Must be BLX + ASSERT((*insn & 0x012fff30) == 0x012fff30); + insn--; + } +#endif // Must be an ldr ..., [pc +/- imm] ASSERT((*insn & 0x0f7f0000) == 0x051f0000); @@ -780,7 +827,7 @@ namespace JSC { // Memory load/store helpers - void dataTransfer32(bool isLoad, RegisterID srcDst, RegisterID base, int32_t offset); + void dataTransfer32(bool isLoad, RegisterID srcDst, RegisterID base, int32_t offset, bool bytes = false); void baseIndexTransfer32(bool isLoad, RegisterID srcDst, RegisterID base, RegisterID index, int scale, int32_t offset); void doubleTransfer(bool isLoad, FPRegisterID srcDst, RegisterID base, int32_t offset); diff --git a/assembler/ARMv7Assembler.h b/assembler/ARMv7Assembler.h index 4e394b2..2faa3a6 100644 --- a/assembler/ARMv7Assembler.h +++ b/assembler/ARMv7Assembler.h @@ -1,5 +1,6 @@ /* * Copyright (C) 2009 Apple Inc. All rights reserved. + * Copyright (C) 2010 University of Szeged * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -26,8 +27,6 @@ #ifndef ARMAssembler_h #define ARMAssembler_h -#include - #if ENABLE(ASSEMBLER) && CPU(ARM_THUMB2) #include "AssemblerBuffer.h" @@ -57,107 +56,122 @@ namespace ARMRegisters { r15, pc = r15, } RegisterID; - // s0 == d0 == q0 - // s4 == d2 == q1 - // etc typedef enum { - s0 = 0, - s1 = 1, - s2 = 2, - s3 = 3, - s4 = 4, - s5 = 5, - s6 = 6, - s7 = 7, - s8 = 8, - s9 = 9, - s10 = 10, - s11 = 11, - s12 = 12, - s13 = 13, - s14 = 14, - s15 = 15, - s16 = 16, - s17 = 17, - s18 = 18, - s19 = 19, - s20 = 20, - s21 = 21, - s22 = 22, - s23 = 23, - s24 = 24, - s25 = 25, - s26 = 26, - s27 = 27, - s28 = 28, - s29 = 29, - s30 = 30, - s31 = 31, - d0 = 0 << 1, - d1 = 1 << 1, - d2 = 2 << 1, - d3 = 3 << 1, - d4 = 4 << 1, - d5 = 5 << 1, - d6 = 6 << 1, - d7 = 7 << 1, - d8 = 8 << 1, - d9 = 9 << 1, - d10 = 10 << 1, - d11 = 11 << 1, - d12 = 12 << 1, - d13 = 13 << 1, - d14 = 14 << 1, - d15 = 15 << 1, - d16 = 16 << 1, - d17 = 17 << 1, - d18 = 18 << 1, - d19 = 19 << 1, - d20 = 20 << 1, - d21 = 21 << 1, - d22 = 22 << 1, - d23 = 23 << 1, - d24 = 24 << 1, - d25 = 25 << 1, - d26 = 26 << 1, - d27 = 27 << 1, - d28 = 28 << 1, - d29 = 29 << 1, - d30 = 30 << 1, - d31 = 31 << 1, - q0 = 0 << 2, - q1 = 1 << 2, - q2 = 2 << 2, - q3 = 3 << 2, - q4 = 4 << 2, - q5 = 5 << 2, - q6 = 6 << 2, - q7 = 7 << 2, - q8 = 8 << 2, - q9 = 9 << 2, - q10 = 10 << 2, - q11 = 11 << 2, - q12 = 12 << 2, - q13 = 13 << 2, - q14 = 14 << 2, - q15 = 15 << 2, - q16 = 16 << 2, - q17 = 17 << 2, - q18 = 18 << 2, - q19 = 19 << 2, - q20 = 20 << 2, - q21 = 21 << 2, - q22 = 22 << 2, - q23 = 23 << 2, - q24 = 24 << 2, - q25 = 25 << 2, - q26 = 26 << 2, - q27 = 27 << 2, - q28 = 28 << 2, - q29 = 29 << 2, - q30 = 30 << 2, - q31 = 31 << 2, - } FPRegisterID; + s0, + s1, + s2, + s3, + s4, + s5, + s6, + s7, + s8, + s9, + s10, + s11, + s12, + s13, + s14, + s15, + s16, + s17, + s18, + s19, + s20, + s21, + s22, + s23, + s24, + s25, + s26, + s27, + s28, + s29, + s30, + s31, + } FPSingleRegisterID; + + typedef enum { + d0, + d1, + d2, + d3, + d4, + d5, + d6, + d7, + d8, + d9, + d10, + d11, + d12, + d13, + d14, + d15, + d16, + d17, + d18, + d19, + d20, + d21, + d22, + d23, + d24, + d25, + d26, + d27, + d28, + d29, + d30, + d31, + } FPDoubleRegisterID; + + typedef enum { + q0, + q1, + q2, + q3, + q4, + q5, + q6, + q7, + q8, + q9, + q10, + q11, + q12, + q13, + q14, + q15, + q16, + q17, + q18, + q19, + q20, + q21, + q22, + q23, + q24, + q25, + q26, + q27, + q28, + q29, + q30, + q31, + } FPQuadRegisterID; + + inline FPSingleRegisterID asSingle(FPDoubleRegisterID reg) + { + ASSERT(reg < d16); + return (FPSingleRegisterID)(reg << 1); + } + + inline FPDoubleRegisterID asDouble(FPSingleRegisterID reg) + { + ASSERT(!(reg & 1)); + return (FPDoubleRegisterID)(reg >> 1); + } } class ARMv7Assembler; @@ -355,6 +369,39 @@ private: ThumbImmediateValue m_value; }; +class VFPImmediate { +public: + VFPImmediate(double d) + : m_value(-1) + { + union { + uint64_t i; + double d; + } u; + + u.d = d; + + int sign = static_cast(u.i >> 63); + int exponent = static_cast(u.i >> 52) & 0x7ff; + uint64_t mantissa = u.i & 0x000fffffffffffffull; + + if ((exponent >= 0x3fc) && (exponent <= 0x403) && !(mantissa & 0x0000ffffffffffffull)) + m_value = (sign << 7) | ((exponent & 7) << 4) | (int)(mantissa >> 48); + } + + bool isValid() + { + return m_value != -1; + } + + uint8_t value() + { + return (uint8_t)m_value; + } + +private: + int m_value; +}; typedef enum { SRType_LSL, @@ -399,17 +446,6 @@ private: }; -/* -Some features of the Thumb instruction set are deprecated in ARMv7. Deprecated features affecting -instructions supported by ARMv7-M are as follows: -• use of the PC as or in a 16-bit ADD (SP plus register) instruction -• use of the SP as in a 16-bit ADD (SP plus register) instruction -• use of the SP as in a 16-bit CMP (register) instruction -• use of MOV (register) instructions in which is the SP or PC and is also the SP or PC. -• use of as the lowest-numbered register in the register list of a 16-bit STM instruction with base -register writeback -*/ - class ARMv7Assembler { public: ~ARMv7Assembler() @@ -418,7 +454,9 @@ public: } typedef ARMRegisters::RegisterID RegisterID; - typedef ARMRegisters::FPRegisterID FPRegisterID; + typedef ARMRegisters::FPSingleRegisterID FPSingleRegisterID; + typedef ARMRegisters::FPDoubleRegisterID FPDoubleRegisterID; + typedef ARMRegisters::FPQuadRegisterID FPQuadRegisterID; // (HS, LO, HI, LS) -> (AE, B, A, BE) // (VS, VC) -> (O, NO) @@ -504,53 +542,16 @@ private: return (reg == ARMRegisters::sp) || (reg == ARMRegisters::pc); } - bool isSingleRegister(FPRegisterID reg) - { - // Check that the high bit isn't set (q16+), and that the low bit isn't (s1, s3, etc). - return !(reg & ~31); - } - - bool isDoubleRegister(FPRegisterID reg) - { - // Check that the high bit isn't set (q16+), and that the low bit isn't (s1, s3, etc). - return !(reg & ~(31 << 1)); - } - - bool isQuadRegister(FPRegisterID reg) - { - return !(reg & ~(31 << 2)); - } - - uint32_t singleRegisterNum(FPRegisterID reg) - { - ASSERT(isSingleRegister(reg)); - return reg; - } - - uint32_t doubleRegisterNum(FPRegisterID reg) - { - ASSERT(isDoubleRegister(reg)); - return reg >> 1; - } - - uint32_t quadRegisterNum(FPRegisterID reg) - { - ASSERT(isQuadRegister(reg)); - return reg >> 2; - } - - uint32_t singleRegisterMask(FPRegisterID rd, int highBitsShift, int lowBitShift) + uint32_t singleRegisterMask(FPSingleRegisterID rdNum, int highBitsShift, int lowBitShift) { - uint32_t rdNum = singleRegisterNum(rd); uint32_t rdMask = (rdNum >> 1) << highBitsShift; if (rdNum & 1) rdMask |= 1 << lowBitShift; return rdMask; } - uint32_t doubleRegisterMask(FPRegisterID rd, int highBitShift, int lowBitsShift) + uint32_t doubleRegisterMask(FPDoubleRegisterID rdNum, int highBitShift, int lowBitsShift) { - uint32_t rdNum = doubleRegisterNum(rd); uint32_t rdMask = (rdNum & 0xf) << lowBitsShift; if (rdNum & 16) rdMask |= 1 << highBitShift; @@ -559,22 +560,17 @@ private: typedef enum { OP_ADD_reg_T1 = 0x1800, - OP_ADD_S_reg_T1 = 0x1800, OP_SUB_reg_T1 = 0x1A00, - OP_SUB_S_reg_T1 = 0x1A00, OP_ADD_imm_T1 = 0x1C00, - OP_ADD_S_imm_T1 = 0x1C00, OP_SUB_imm_T1 = 0x1E00, - OP_SUB_S_imm_T1 = 0x1E00, OP_MOV_imm_T1 = 0x2000, OP_CMP_imm_T1 = 0x2800, OP_ADD_imm_T2 = 0x3000, - OP_ADD_S_imm_T2 = 0x3000, OP_SUB_imm_T2 = 0x3800, - OP_SUB_S_imm_T2 = 0x3800, OP_AND_reg_T1 = 0x4000, OP_EOR_reg_T1 = 0x4040, OP_TST_reg_T1 = 0x4200, + OP_RSB_imm_T1 = 0x4240, OP_CMP_reg_T1 = 0x4280, OP_ORR_reg_T1 = 0x4300, OP_MVN_reg_T1 = 0x43C0, @@ -582,11 +578,13 @@ private: OP_MOV_reg_T1 = 0x4600, OP_BLX = 0x4700, OP_BX = 0x4700, - OP_LDRH_reg_T1 = 0x5A00, OP_STR_reg_T1 = 0x5000, OP_LDR_reg_T1 = 0x5800, + OP_LDRH_reg_T1 = 0x5A00, + OP_LDRB_reg_T1 = 0x5C00, OP_STR_imm_T1 = 0x6000, OP_LDR_imm_T1 = 0x6800, + OP_LDRB_imm_T1 = 0x7800, OP_LDRH_imm_T1 = 0x8800, OP_STR_imm_T2 = 0x9000, OP_LDR_imm_T2 = 0x9800, @@ -602,6 +600,7 @@ private: OP_AND_reg_T2 = 0xEA00, OP_TST_reg_T2 = 0xEA10, OP_ORR_reg_T2 = 0xEA40, + OP_ORR_S_reg_T2 = 0xEA50, OP_ASR_imm_T1 = 0xEA4F, OP_LSL_imm_T1 = 0xEA4F, OP_LSR_imm_T1 = 0xEA4F, @@ -613,6 +612,18 @@ private: OP_SUB_reg_T2 = 0xEBA0, OP_SUB_S_reg_T2 = 0xEBB0, OP_CMP_reg_T2 = 0xEBB0, + OP_VSTR = 0xED00, + OP_VLDR = 0xED10, + OP_VMOV_StoC = 0xEE00, + OP_VMOV_CtoS = 0xEE10, + OP_VMUL_T2 = 0xEE20, + OP_VADD_T2 = 0xEE30, + OP_VSUB_T2 = 0xEE30, + OP_VDIV = 0xEE80, + OP_VCMP_T1 = 0xEEB0, + OP_VCVT_FPIVFP = 0xEEB0, + OP_VMOV_IMM_T2 = 0xEEB0, + OP_VMRS = 0xEEB0, OP_B_T4a = 0xF000, OP_AND_imm_T1 = 0xF000, OP_TST_imm = 0xF010, @@ -626,17 +637,21 @@ private: OP_SUB_imm_T3 = 0xF1A0, OP_SUB_S_imm_T3 = 0xF1B0, OP_CMP_imm_T2 = 0xF1B0, + OP_RSB_imm_T2 = 0xF1C0, OP_ADD_imm_T4 = 0xF200, OP_MOV_imm_T3 = 0xF240, OP_SUB_imm_T4 = 0xF2A0, OP_MOVT = 0xF2C0, OP_NOP_T2a = 0xF3AF, + OP_LDRB_imm_T3 = 0xF810, + OP_LDRB_reg_T2 = 0xF810, OP_LDRH_reg_T2 = 0xF830, OP_LDRH_imm_T3 = 0xF830, OP_STR_imm_T4 = 0xF840, OP_STR_reg_T2 = 0xF840, OP_LDR_imm_T4 = 0xF850, OP_LDR_reg_T2 = 0xF850, + OP_LDRB_imm_T2 = 0xF890, OP_LDRH_imm_T2 = 0xF8B0, OP_STR_imm_T3 = 0xF8C0, OP_LDR_imm_T3 = 0xF8D0, @@ -648,8 +663,20 @@ private: } OpcodeID1; typedef enum { - OP_B_T4b = 0x9000, + OP_VADD_T2b = 0x0A00, + OP_VDIVb = 0x0A00, + OP_VLDRb = 0x0A00, + OP_VMOV_IMM_T2b = 0x0A00, + OP_VMUL_T2b = 0x0A00, + OP_VSTRb = 0x0A00, + OP_VMOV_CtoSb = 0x0A10, + OP_VMOV_StoCb = 0x0A10, + OP_VMRSb = 0x0A10, + OP_VCMP_T1b = 0x0A40, + OP_VCVT_FPIVFPb = 0x0A40, + OP_VSUB_T2b = 0x0A40, OP_NOP_T2b = 0x8000, + OP_B_T4b = 0x9000, } OpcodeID2; struct FourFours { @@ -780,10 +807,10 @@ public: if (!((rd | rn) & 8)) { if (imm.isUInt3()) { - m_formatter.oneWordOp7Reg3Reg3Reg3(OP_ADD_S_imm_T1, (RegisterID)imm.getUInt3(), rn, rd); + m_formatter.oneWordOp7Reg3Reg3Reg3(OP_ADD_imm_T1, (RegisterID)imm.getUInt3(), rn, rd); return; } else if ((rd == rn) && imm.isUInt8()) { - m_formatter.oneWordOp5Reg3Imm8(OP_ADD_S_imm_T2, rd, imm.getUInt8()); + m_formatter.oneWordOp5Reg3Imm8(OP_ADD_imm_T2, rd, imm.getUInt8()); return; } } @@ -805,7 +832,7 @@ public: void add_S(RegisterID rd, RegisterID rn, RegisterID rm) { if (!((rd | rn | rm) & 8)) - m_formatter.oneWordOp7Reg3Reg3Reg3(OP_ADD_S_reg_T1, rm, rn, rd); + m_formatter.oneWordOp7Reg3Reg3Reg3(OP_ADD_reg_T1, rm, rn, rd); else add_S(rd, rn, rm, ShiftTypeAndAmount()); } @@ -1080,6 +1107,52 @@ public: m_formatter.twoWordOp12Reg4FourFours(OP_LDRH_reg_T2, rn, FourFours(rt, 0, shift, rm)); } + void ldrb(RegisterID rt, RegisterID rn, ARMThumbImmediate imm) + { + ASSERT(rn != ARMRegisters::pc); // LDR (literal) + ASSERT(imm.isUInt12()); + + if (!((rt | rn) & 8) && imm.isUInt5()) + m_formatter.oneWordOp5Imm5Reg3Reg3(OP_LDRB_imm_T1, imm.getUInt5(), rn, rt); + else + m_formatter.twoWordOp12Reg4Reg4Imm12(OP_LDRB_imm_T2, rn, rt, imm.getUInt12()); + } + + void ldrb(RegisterID rt, RegisterID rn, int offset, bool index, bool wback) + { + ASSERT(rt != ARMRegisters::pc); + ASSERT(rn != ARMRegisters::pc); + ASSERT(index || wback); + ASSERT(!wback | (rt != rn)); + + bool add = true; + if (offset < 0) { + add = false; + offset = -offset; + } + + ASSERT(!(offset & ~0xff)); + + offset |= (wback << 8); + offset |= (add << 9); + offset |= (index << 10); + offset |= (1 << 11); + + m_formatter.twoWordOp12Reg4Reg4Imm12(OP_LDRB_imm_T3, rn, rt, offset); + } + + void ldrb(RegisterID rt, RegisterID rn, RegisterID rm, unsigned shift = 0) + { + ASSERT(rn != ARMRegisters::pc); // LDR (literal) + ASSERT(!BadReg(rm)); + ASSERT(shift <= 3); + + if (!shift && !((rt | rn | rm) & 8)) + m_formatter.oneWordOp7Reg3Reg3Reg3(OP_LDRB_reg_T1, rm, rn, rt); + else + m_formatter.twoWordOp12Reg4FourFours(OP_LDRB_reg_T2, rn, FourFours(rt, 0, shift, rm)); + } + void lsl(RegisterID rd, RegisterID rm, int32_t shiftAmount) { ASSERT(!BadReg(rd)); @@ -1169,6 +1242,12 @@ public: mvn(rd, rm, ShiftTypeAndAmount()); } + void neg(RegisterID rd, RegisterID rm) + { + ARMThumbImmediate zero = ARMThumbImmediate::makeUInt12(0); + sub(rd, zero, rm); + } + void orr(RegisterID rd, RegisterID rn, ARMThumbImmediate imm) { ASSERT(!BadReg(rd)); @@ -1195,6 +1274,24 @@ public: orr(rd, rn, rm, ShiftTypeAndAmount()); } + void orr_S(RegisterID rd, RegisterID rn, RegisterID rm, ShiftTypeAndAmount shift) + { + ASSERT(!BadReg(rd)); + ASSERT(!BadReg(rn)); + ASSERT(!BadReg(rm)); + m_formatter.twoWordOp12Reg4FourFours(OP_ORR_S_reg_T2, rn, FourFours(shift.hi4(), rd, shift.lo4(), rm)); + } + + void orr_S(RegisterID rd, RegisterID rn, RegisterID rm) + { + if ((rd == rn) && !((rd | rm) & 8)) + m_formatter.oneWordOp10Reg3Reg3(OP_ORR_reg_T1, rm, rd); + else if ((rd == rm) && !((rd | rn) & 8)) + m_formatter.oneWordOp10Reg3Reg3(OP_ORR_reg_T1, rn, rd); + else + orr_S(rd, rn, rm, ShiftTypeAndAmount()); + } + void ror(RegisterID rd, RegisterID rm, int32_t shiftAmount) { ASSERT(!BadReg(rd)); @@ -1311,6 +1408,19 @@ public: } } + void sub(RegisterID rd, ARMThumbImmediate imm, RegisterID rn) + { + ASSERT(rd != ARMRegisters::pc); + ASSERT(rn != ARMRegisters::pc); + ASSERT(imm.isValid()); + ASSERT(imm.isUInt12()); + + if (!((rd | rn) & 8) && !imm.getUInt12()) + m_formatter.oneWordOp10Reg3Reg3(OP_RSB_imm_T1, rn, rd); + else + m_formatter.twoWordOp5i6Imm4Reg4EncodedImm(OP_RSB_imm_T2, rn, rd, imm); + } + void sub(RegisterID rd, RegisterID rn, RegisterID rm, ShiftTypeAndAmount shift) { ASSERT((rd != ARMRegisters::sp) || (rn == ARMRegisters::sp)); @@ -1343,10 +1453,10 @@ public: return; } else if (!((rd | rn) & 8)) { if (imm.isUInt3()) { - m_formatter.oneWordOp7Reg3Reg3Reg3(OP_SUB_S_imm_T1, (RegisterID)imm.getUInt3(), rn, rd); + m_formatter.oneWordOp7Reg3Reg3Reg3(OP_SUB_imm_T1, (RegisterID)imm.getUInt3(), rn, rd); return; } else if ((rd == rn) && imm.isUInt8()) { - m_formatter.oneWordOp5Reg3Imm8(OP_SUB_S_imm_T2, rd, imm.getUInt8()); + m_formatter.oneWordOp5Reg3Imm8(OP_SUB_imm_T2, rd, imm.getUInt8()); return; } } @@ -1368,7 +1478,7 @@ public: void sub_S(RegisterID rd, RegisterID rn, RegisterID rm) { if (!((rd | rn | rm) & 8)) - m_formatter.oneWordOp7Reg3Reg3Reg3(OP_SUB_S_reg_T1, rm, rn, rd); + m_formatter.oneWordOp7Reg3Reg3Reg3(OP_SUB_reg_T1, rm, rn, rd); else sub_S(rd, rn, rm, ShiftTypeAndAmount()); } @@ -1396,62 +1506,75 @@ public: m_formatter.oneWordOp10Reg3Reg3(OP_TST_reg_T1, rm, rn); } - void vadd_F64(FPRegisterID rd, FPRegisterID rn, FPRegisterID rm) + void vadd_F64(FPDoubleRegisterID rd, FPDoubleRegisterID rn, FPDoubleRegisterID rm) { - m_formatter.vfpOp(0x0b00ee30 | doubleRegisterMask(rd, 6, 28) | doubleRegisterMask(rn, 23, 0) | doubleRegisterMask(rm, 21, 16)); + m_formatter.vfpOp(OP_VADD_T2, OP_VADD_T2b, true, rn, rd, rm); } - void vcmp_F64(FPRegisterID rd, FPRegisterID rm) + void vcmp_F64(FPDoubleRegisterID rd, FPDoubleRegisterID rm) { - m_formatter.vfpOp(0x0bc0eeb4 | doubleRegisterMask(rd, 6, 28) | doubleRegisterMask(rm, 21, 16)); + m_formatter.vfpOp(OP_VCMP_T1, OP_VCMP_T1b, true, VFPOperand(4), rd, rm); } - void vcvt_F64_S32(FPRegisterID fd, FPRegisterID sm) + void vcvt_F64_S32(FPDoubleRegisterID rd, FPSingleRegisterID rm) { - m_formatter.vfpOp(0x0bc0eeb8 | doubleRegisterMask(fd, 6, 28) | singleRegisterMask(sm, 16, 21)); + // boolean values are 64bit (toInt, unsigned, roundZero) + m_formatter.vfpOp(OP_VCVT_FPIVFP, OP_VCVT_FPIVFPb, true, vcvtOp(false, false, false), rd, rm); } - void vcvt_S32_F64(FPRegisterID sd, FPRegisterID fm) + void vcvtr_S32_F64(FPSingleRegisterID rd, FPDoubleRegisterID rm) { - m_formatter.vfpOp(0x0bc0eebd | singleRegisterMask(sd, 28, 6) | doubleRegisterMask(fm, 21, 16)); + // boolean values are 64bit (toInt, unsigned, roundZero) + m_formatter.vfpOp(OP_VCVT_FPIVFP, OP_VCVT_FPIVFPb, true, vcvtOp(true, false, true), rd, rm); } - void vldr(FPRegisterID rd, RegisterID rn, int32_t imm) + void vdiv_F64(FPDoubleRegisterID rd, FPDoubleRegisterID rn, FPDoubleRegisterID rm) { - vmem(rd, rn, imm, true); + m_formatter.vfpOp(OP_VDIV, OP_VDIVb, true, rn, rd, rm); } - void vmov(RegisterID rd, FPRegisterID sn) + void vldr(FPDoubleRegisterID rd, RegisterID rn, int32_t imm) { - m_formatter.vfpOp(0x0a10ee10 | (rd << 28) | singleRegisterMask(sn, 0, 23)); + m_formatter.vfpMemOp(OP_VLDR, OP_VLDRb, true, rn, rd, imm); } - void vmov(FPRegisterID sn, RegisterID rd) + void vmov_F64_0(FPDoubleRegisterID rd) { - m_formatter.vfpOp(0x0a10ee00 | (rd << 28) | singleRegisterMask(sn, 0, 23)); + m_formatter.vfpOp(OP_VMOV_IMM_T2, OP_VMOV_IMM_T2b, true, VFPOperand(0), rd, VFPOperand(0)); + } + + void vmov(RegisterID rd, FPSingleRegisterID rn) + { + ASSERT(!BadReg(rd)); + m_formatter.vfpOp(OP_VMOV_CtoS, OP_VMOV_CtoSb, false, rn, rd, VFPOperand(0)); } - // move FPSCR flags to APSR. - void vmrs_APSR_nzcv_FPSCR() + void vmov(FPSingleRegisterID rd, RegisterID rn) { - m_formatter.vfpOp(0xfa10eef1); + ASSERT(!BadReg(rn)); + m_formatter.vfpOp(OP_VMOV_StoC, OP_VMOV_StoCb, false, rd, rn, VFPOperand(0)); } - void vmul_F64(FPRegisterID rd, FPRegisterID rn, FPRegisterID rm) + void vmrs(RegisterID reg = ARMRegisters::pc) { - m_formatter.vfpOp(0x0b00ee20 | doubleRegisterMask(rd, 6, 28) | doubleRegisterMask(rn, 23, 0) | doubleRegisterMask(rm, 21, 16)); + ASSERT(reg != ARMRegisters::sp); + m_formatter.vfpOp(OP_VMRS, OP_VMRSb, false, VFPOperand(1), VFPOperand(0x10 | reg), VFPOperand(0)); } - void vstr(FPRegisterID rd, RegisterID rn, int32_t imm) + void vmul_F64(FPDoubleRegisterID rd, FPDoubleRegisterID rn, FPDoubleRegisterID rm) { - vmem(rd, rn, imm, false); + m_formatter.vfpOp(OP_VMUL_T2, OP_VMUL_T2b, true, rn, rd, rm); } - void vsub_F64(FPRegisterID rd, FPRegisterID rn, FPRegisterID rm) + void vstr(FPDoubleRegisterID rd, RegisterID rn, int32_t imm) { - m_formatter.vfpOp(0x0b40ee30 | doubleRegisterMask(rd, 6, 28) | doubleRegisterMask(rn, 23, 0) | doubleRegisterMask(rm, 21, 16)); + m_formatter.vfpMemOp(OP_VSTR, OP_VSTRb, true, rn, rd, imm); } + void vsub_F64(FPDoubleRegisterID rd, FPDoubleRegisterID rn, FPDoubleRegisterID rm) + { + m_formatter.vfpOp(OP_VSUB_T2, OP_VSUB_T2b, true, rn, rd, rm); + } JmpDst label() { @@ -1604,36 +1727,83 @@ public: static void repatchLoadPtrToLEA(void* where) { ASSERT(!(reinterpret_cast(where) & 1)); - uint16_t* loadOp = reinterpret_cast(where) + 4; - ASSERT((*loadOp & 0xfff0) == OP_LDR_reg_T2); - *loadOp = OP_ADD_reg_T3 | (*loadOp & 0xf); - ExecutableAllocator::cacheFlush(loadOp, sizeof(uint16_t)); + ASSERT((loadOp[0] & 0xfff0) == OP_LDR_reg_T2); + ASSERT((loadOp[1] & 0x0ff0) == 0); + int rn = loadOp[0] & 0xf; + int rt = loadOp[1] >> 12; + int rm = loadOp[1] & 0xf; + + loadOp[0] = OP_ADD_reg_T3 | rn; + loadOp[1] = rt << 8 | rm; + ExecutableAllocator::cacheFlush(loadOp, sizeof(uint32_t)); } private: + // VFP operations commonly take one or more 5-bit operands, typically representing a + // floating point register number. This will commonly be encoded in the instruction + // in two parts, with one single bit field, and one 4-bit field. In the case of + // double precision operands the high bit of the register number will be encoded + // separately, and for single precision operands the high bit of the register number + // will be encoded individually. + // VFPOperand encapsulates a 5-bit VFP operand, with bits 0..3 containing the 4-bit + // field to be encoded together in the instruction (the low 4-bits of a double + // register number, or the high 4-bits of a single register number), and bit 4 + // contains the bit value to be encoded individually. + struct VFPOperand { + explicit VFPOperand(uint32_t value) + : m_value(value) + { + ASSERT(!(m_value & ~0x1f)); + } - // Arm vfp addresses can be offset by a 9-bit ones-comp immediate, left shifted by 2. - // (i.e. +/-(0..255) 32-bit words) - void vmem(FPRegisterID rd, RegisterID rn, int32_t imm, bool isLoad) - { - bool up; - uint32_t offset; - if (imm < 0) { - offset = -imm; - up = false; - } else { - offset = imm; - up = true; + VFPOperand(FPDoubleRegisterID reg) + : m_value(reg) + { } - // offset is effectively leftshifted by 2 already (the bottom two bits are zero, and not - // reperesented in the instruction. Left shift by 14, to mov it into position 0x00AA0000. - ASSERT((offset & ~(0xff << 2)) == 0); - offset <<= 14; + VFPOperand(RegisterID reg) + : m_value(reg) + { + } - m_formatter.vfpOp(0x0b00ed00 | offset | (up << 7) | (isLoad << 4) | doubleRegisterMask(rd, 6, 28) | rn); + VFPOperand(FPSingleRegisterID reg) + : m_value(((reg & 1) << 4) | (reg >> 1)) // rotate the lowest bit of 'reg' to the top. + { + } + + uint32_t bits1() + { + return m_value >> 4; + } + + uint32_t bits4() + { + return m_value & 0xf; + } + + uint32_t m_value; + }; + + VFPOperand vcvtOp(bool toInteger, bool isUnsigned, bool isRoundZero) + { + // Cannot specify rounding when converting to float. + ASSERT(toInteger || !isRoundZero); + + uint32_t op = 0x8; + if (toInteger) { + // opc2 indicates both toInteger & isUnsigned. + op |= isUnsigned ? 0x4 : 0x5; + // 'op' field in instruction is isRoundZero + if (isRoundZero) + op |= 0x10; + } else { + // 'op' field in instruction is isUnsigned + if (!isUnsigned) + op |= 0x10; + } + return VFPOperand(op); } static void setInt32(void* code, uint32_t value) @@ -1704,7 +1874,20 @@ private: || (isNOP_T1(instruction - 5) && isNOP_T2(instruction - 4) && isB(instruction - 2)) ); intptr_t relative = reinterpret_cast(target) - (reinterpret_cast(instruction)); - if (((relative << 7) >> 7) == relative) { + + // From Cortex-A8 errata: + // If the 32-bit Thumb-2 branch instruction spans two 4KiB regions and + // the target of the branch falls within the first region it is + // possible for the processor to incorrectly determine the branch + // instruction, and it is also possible in some cases for the processor + // to enter a deadlock state. + // The instruction is spanning two pages if it ends at an address ending 0x002 + bool spansTwo4K = ((reinterpret_cast(instruction) & 0xfff) == 0x002); + // The target is in the first page if the jump branch back by [3..0x1002] bytes + bool targetInFirstPage = (relative >= -0x1002) && (relative < -2); + bool wouldTriggerA8Errata = spansTwo4K && targetInFirstPage; + + if (((relative << 7) >> 7) == relative && !wouldTriggerA8Errata) { // ARM encoding for the top two bits below the sign bit is 'peculiar'. if (relative >= 0) relative ^= 0xC00000; @@ -1810,11 +1993,35 @@ private: m_buffer.putShort((reg2 << 12) | imm); } - void vfpOp(int32_t op) + // Formats up instructions of the pattern: + // 111111111B11aaaa:bbbb222SA2C2cccc + // Where 1s in the pattern come from op1, 2s in the pattern come from op2, S is the provided size bit. + // Operands provide 5 bit values of the form Aaaaa, Bbbbb, Ccccc. + void vfpOp(OpcodeID1 op1, OpcodeID2 op2, bool size, VFPOperand a, VFPOperand b, VFPOperand c) { - m_buffer.putInt(op); + ASSERT(!(op1 & 0x004f)); + ASSERT(!(op2 & 0xf1af)); + m_buffer.putShort(op1 | b.bits1() << 6 | a.bits4()); + m_buffer.putShort(op2 | b.bits4() << 12 | size << 8 | a.bits1() << 7 | c.bits1() << 5 | c.bits4()); } + // Arm vfp addresses can be offset by a 9-bit ones-comp immediate, left shifted by 2. + // (i.e. +/-(0..255) 32-bit words) + void vfpMemOp(OpcodeID1 op1, OpcodeID2 op2, bool size, RegisterID rn, VFPOperand rd, int32_t imm) + { + bool up = true; + if (imm < 0) { + imm = -imm; + up = false; + } + + uint32_t offset = imm; + ASSERT(!(offset & ~0x3fc)); + offset >>= 2; + + m_buffer.putShort(op1 | (up << 7) | rd.bits1() << 6 | rn); + m_buffer.putShort(op2 | rd.bits4() << 12 | size << 8 | offset); + } // Administrative methods: diff --git a/assembler/AbstractMacroAssembler.h b/assembler/AbstractMacroAssembler.h index 198e8d1..aab9089 100644 --- a/assembler/AbstractMacroAssembler.h +++ b/assembler/AbstractMacroAssembler.h @@ -26,8 +26,6 @@ #ifndef AbstractMacroAssembler_h #define AbstractMacroAssembler_h -#include - #include #include #include @@ -51,7 +49,6 @@ public: class Jump; typedef typename AssemblerType::RegisterID RegisterID; - typedef typename AssemblerType::FPRegisterID FPRegisterID; typedef typename AssemblerType::JmpSrc JmpSrc; typedef typename AssemblerType::JmpDst JmpDst; @@ -83,6 +80,17 @@ public: int32_t offset; }; + struct ExtendedAddress { + explicit ExtendedAddress(RegisterID base, intptr_t offset = 0) + : base(base) + , offset(offset) + { + } + + RegisterID base; + intptr_t offset; + }; + // ImplicitAddress: // // This class is used for explicit 'load' and 'store' operations @@ -151,7 +159,7 @@ public: // in a class requiring explicit construction in order to differentiate // from pointers used as absolute addresses to memory operations struct ImmPtr { - explicit ImmPtr(void* value) + explicit ImmPtr(const void* value) : m_value(value) { } @@ -161,7 +169,7 @@ public: return reinterpret_cast(m_value); } - void* m_value; + const void* m_value; }; // Imm32: @@ -173,7 +181,7 @@ public: struct Imm32 { explicit Imm32(int32_t value) : m_value(value) -#if CPU(ARM) +#if CPU(ARM) || CPU(MIPS) , m_isPointer(false) #endif { @@ -182,7 +190,7 @@ public: #if !CPU(X86_64) explicit Imm32(ImmPtr ptr) : m_value(ptr.asIntptr()) -#if CPU(ARM) +#if CPU(ARM) || CPU(MIPS) , m_isPointer(true) #endif { @@ -190,13 +198,14 @@ public: #endif int32_t m_value; -#if CPU(ARM) +#if CPU(ARM) || CPU(MIPS) // We rely on being able to regenerate code to recover exception handling // information. Since ARMv7 supports 16-bit immediates there is a danger // that if pointer values change the layout of the generated code will change. // To avoid this problem, always generate pointers (and thus Imm32s constructed // from ImmPtrs) with a code sequence that is able to represent any pointer // value - don't use a more compact form in these cases. + // Same for MIPS. bool m_isPointer; #endif }; diff --git a/assembler/AssemblerBuffer.h b/assembler/AssemblerBuffer.h index 073906a..e2fb8a1 100644 --- a/assembler/AssemblerBuffer.h +++ b/assembler/AssemblerBuffer.h @@ -26,8 +26,6 @@ #ifndef AssemblerBuffer_h #define AssemblerBuffer_h -#include - #if ENABLE(ASSEMBLER) #include "stdint.h" diff --git a/assembler/AssemblerBufferWithConstantPool.h b/assembler/AssemblerBufferWithConstantPool.h index af3c3be..b1c537e 100644 --- a/assembler/AssemblerBufferWithConstantPool.h +++ b/assembler/AssemblerBufferWithConstantPool.h @@ -27,8 +27,6 @@ #ifndef AssemblerBufferWithConstantPool_h #define AssemblerBufferWithConstantPool_h -#include - #if ENABLE(ASSEMBLER) #include "AssemblerBuffer.h" diff --git a/assembler/CodeLocation.h b/assembler/CodeLocation.h index b910b6f..cab28cd 100644 --- a/assembler/CodeLocation.h +++ b/assembler/CodeLocation.h @@ -26,7 +26,6 @@ #ifndef CodeLocation_h #define CodeLocation_h -#include #include diff --git a/assembler/LinkBuffer.h b/assembler/LinkBuffer.h index 6d08117..47cac5a 100644 --- a/assembler/LinkBuffer.h +++ b/assembler/LinkBuffer.h @@ -26,8 +26,6 @@ #ifndef LinkBuffer_h #define LinkBuffer_h -#include - #if ENABLE(ASSEMBLER) #include diff --git a/assembler/MIPSAssembler.h b/assembler/MIPSAssembler.h new file mode 100644 index 0000000..ea35268 --- /dev/null +++ b/assembler/MIPSAssembler.h @@ -0,0 +1,944 @@ +/* + * Copyright (C) 2009 Apple Inc. All rights reserved. + * Copyright (C) 2009 University of Szeged + * All rights reserved. + * Copyright (C) 2010 MIPS Technologies, Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY MIPS TECHNOLOGIES, INC. ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL MIPS TECHNOLOGIES, INC. OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef MIPSAssembler_h +#define MIPSAssembler_h + +#if ENABLE(ASSEMBLER) && CPU(MIPS) + +#include "AssemblerBuffer.h" +#include +#include + +namespace JSC { + +typedef uint32_t MIPSWord; + +namespace MIPSRegisters { +typedef enum { + r0 = 0, + r1, + r2, + r3, + r4, + r5, + r6, + r7, + r8, + r9, + r10, + r11, + r12, + r13, + r14, + r15, + r16, + r17, + r18, + r19, + r20, + r21, + r22, + r23, + r24, + r25, + r26, + r27, + r28, + r29, + r30, + r31, + zero = r0, + at = r1, + v0 = r2, + v1 = r3, + a0 = r4, + a1 = r5, + a2 = r6, + a3 = r7, + t0 = r8, + t1 = r9, + t2 = r10, + t3 = r11, + t4 = r12, + t5 = r13, + t6 = r14, + t7 = r15, + s0 = r16, + s1 = r17, + s2 = r18, + s3 = r19, + s4 = r20, + s5 = r21, + s6 = r22, + s7 = r23, + t8 = r24, + t9 = r25, + k0 = r26, + k1 = r27, + gp = r28, + sp = r29, + fp = r30, + ra = r31 +} RegisterID; + +typedef enum { + f0, + f1, + f2, + f3, + f4, + f5, + f6, + f7, + f8, + f9, + f10, + f11, + f12, + f13, + f14, + f15, + f16, + f17, + f18, + f19, + f20, + f21, + f22, + f23, + f24, + f25, + f26, + f27, + f28, + f29, + f30, + f31 +} FPRegisterID; + +} // namespace MIPSRegisters + +class MIPSAssembler { +public: + typedef MIPSRegisters::RegisterID RegisterID; + typedef MIPSRegisters::FPRegisterID FPRegisterID; + typedef SegmentedVector Jumps; + + MIPSAssembler() + { + } + + // MIPS instruction opcode field position + enum { + OP_SH_RD = 11, + OP_SH_RT = 16, + OP_SH_RS = 21, + OP_SH_SHAMT = 6, + OP_SH_CODE = 16, + OP_SH_FD = 6, + OP_SH_FS = 11, + OP_SH_FT = 16 + }; + + class JmpSrc { + friend class MIPSAssembler; + public: + JmpSrc() + : m_offset(-1) + { + } + + private: + JmpSrc(int offset) + : m_offset(offset) + { + } + + int m_offset; + }; + + class JmpDst { + friend class MIPSAssembler; + public: + JmpDst() + : m_offset(-1) + , m_used(false) + { + } + + bool isUsed() const { return m_used; } + void used() { m_used = true; } + private: + JmpDst(int offset) + : m_offset(offset) + , m_used(false) + { + ASSERT(m_offset == offset); + } + + int m_offset : 31; + int m_used : 1; + }; + + void emitInst(MIPSWord op) + { + void* oldBase = m_buffer.data(); + + m_buffer.putInt(op); + + void* newBase = m_buffer.data(); + if (oldBase != newBase) + relocateJumps(oldBase, newBase); + } + + void nop() + { + emitInst(0x00000000); + } + + /* Need to insert one load data delay nop for mips1. */ + void loadDelayNop() + { +#if WTF_MIPS_ISA(1) + nop(); +#endif + } + + /* Need to insert one coprocessor access delay nop for mips1. */ + void copDelayNop() + { +#if WTF_MIPS_ISA(1) + nop(); +#endif + } + + void move(RegisterID rd, RegisterID rs) + { + /* addu */ + emitInst(0x00000021 | (rd << OP_SH_RD) | (rs << OP_SH_RS)); + } + + /* Set an immediate value to a register. This may generate 1 or 2 + instructions. */ + void li(RegisterID dest, int imm) + { + if (imm >= -32768 && imm <= 32767) + addiu(dest, MIPSRegisters::zero, imm); + else if (imm >= 0 && imm < 65536) + ori(dest, MIPSRegisters::zero, imm); + else { + lui(dest, imm >> 16); + if (imm & 0xffff) + ori(dest, dest, imm); + } + } + + void lui(RegisterID rt, int imm) + { + emitInst(0x3c000000 | (rt << OP_SH_RT) | (imm & 0xffff)); + } + + void addiu(RegisterID rt, RegisterID rs, int imm) + { + emitInst(0x24000000 | (rt << OP_SH_RT) | (rs << OP_SH_RS) + | (imm & 0xffff)); + } + + void addu(RegisterID rd, RegisterID rs, RegisterID rt) + { + emitInst(0x00000021 | (rd << OP_SH_RD) | (rs << OP_SH_RS) + | (rt << OP_SH_RT)); + } + + void subu(RegisterID rd, RegisterID rs, RegisterID rt) + { + emitInst(0x00000023 | (rd << OP_SH_RD) | (rs << OP_SH_RS) + | (rt << OP_SH_RT)); + } + + void mult(RegisterID rs, RegisterID rt) + { + emitInst(0x00000018 | (rs << OP_SH_RS) | (rt << OP_SH_RT)); + } + + void mfhi(RegisterID rd) + { + emitInst(0x00000010 | (rd << OP_SH_RD)); + } + + void mflo(RegisterID rd) + { + emitInst(0x00000012 | (rd << OP_SH_RD)); + } + + void mul(RegisterID rd, RegisterID rs, RegisterID rt) + { +#if WTF_MIPS_ISA_AT_LEAST(32) + emitInst(0x70000002 | (rd << OP_SH_RD) | (rs << OP_SH_RS) + | (rt << OP_SH_RT)); +#else + mult(rs, rt); + mflo(rd); +#endif + } + + void andInsn(RegisterID rd, RegisterID rs, RegisterID rt) + { + emitInst(0x00000024 | (rd << OP_SH_RD) | (rs << OP_SH_RS) + | (rt << OP_SH_RT)); + } + + void andi(RegisterID rt, RegisterID rs, int imm) + { + emitInst(0x30000000 | (rt << OP_SH_RT) | (rs << OP_SH_RS) + | (imm & 0xffff)); + } + + void nor(RegisterID rd, RegisterID rs, RegisterID rt) + { + emitInst(0x00000027 | (rd << OP_SH_RD) | (rs << OP_SH_RS) + | (rt << OP_SH_RT)); + } + + void orInsn(RegisterID rd, RegisterID rs, RegisterID rt) + { + emitInst(0x00000025 | (rd << OP_SH_RD) | (rs << OP_SH_RS) + | (rt << OP_SH_RT)); + } + + void ori(RegisterID rt, RegisterID rs, int imm) + { + emitInst(0x34000000 | (rt << OP_SH_RT) | (rs << OP_SH_RS) + | (imm & 0xffff)); + } + + void xorInsn(RegisterID rd, RegisterID rs, RegisterID rt) + { + emitInst(0x00000026 | (rd << OP_SH_RD) | (rs << OP_SH_RS) + | (rt << OP_SH_RT)); + } + + void xori(RegisterID rt, RegisterID rs, int imm) + { + emitInst(0x38000000 | (rt << OP_SH_RT) | (rs << OP_SH_RS) + | (imm & 0xffff)); + } + + void slt(RegisterID rd, RegisterID rs, RegisterID rt) + { + emitInst(0x0000002a | (rd << OP_SH_RD) | (rs << OP_SH_RS) + | (rt << OP_SH_RT)); + } + + void sltu(RegisterID rd, RegisterID rs, RegisterID rt) + { + emitInst(0x0000002b | (rd << OP_SH_RD) | (rs << OP_SH_RS) + | (rt << OP_SH_RT)); + } + + void sltiu(RegisterID rt, RegisterID rs, int imm) + { + emitInst(0x2c000000 | (rt << OP_SH_RT) | (rs << OP_SH_RS) + | (imm & 0xffff)); + } + + void sll(RegisterID rd, RegisterID rt, int shamt) + { + emitInst(0x00000000 | (rd << OP_SH_RD) | (rt << OP_SH_RT) + | ((shamt & 0x1f) << OP_SH_SHAMT)); + } + + void sllv(RegisterID rd, RegisterID rt, int rs) + { + emitInst(0x00000004 | (rd << OP_SH_RD) | (rt << OP_SH_RT) + | (rs << OP_SH_RS)); + } + + void sra(RegisterID rd, RegisterID rt, int shamt) + { + emitInst(0x00000003 | (rd << OP_SH_RD) | (rt << OP_SH_RT) + | ((shamt & 0x1f) << OP_SH_SHAMT)); + } + + void srav(RegisterID rd, RegisterID rt, RegisterID rs) + { + emitInst(0x00000007 | (rd << OP_SH_RD) | (rt << OP_SH_RT) + | (rs << OP_SH_RS)); + } + + void lbu(RegisterID rt, RegisterID rs, int offset) + { + emitInst(0x90000000 | (rt << OP_SH_RT) | (rs << OP_SH_RS) + | (offset & 0xffff)); + loadDelayNop(); + } + + void lw(RegisterID rt, RegisterID rs, int offset) + { + emitInst(0x8c000000 | (rt << OP_SH_RT) | (rs << OP_SH_RS) + | (offset & 0xffff)); + loadDelayNop(); + } + + void lwl(RegisterID rt, RegisterID rs, int offset) + { + emitInst(0x88000000 | (rt << OP_SH_RT) | (rs << OP_SH_RS) + | (offset & 0xffff)); + loadDelayNop(); + } + + void lwr(RegisterID rt, RegisterID rs, int offset) + { + emitInst(0x98000000 | (rt << OP_SH_RT) | (rs << OP_SH_RS) + | (offset & 0xffff)); + loadDelayNop(); + } + + void lhu(RegisterID rt, RegisterID rs, int offset) + { + emitInst(0x94000000 | (rt << OP_SH_RT) | (rs << OP_SH_RS) + | (offset & 0xffff)); + loadDelayNop(); + } + + void sw(RegisterID rt, RegisterID rs, int offset) + { + emitInst(0xac000000 | (rt << OP_SH_RT) | (rs << OP_SH_RS) + | (offset & 0xffff)); + } + + void jr(RegisterID rs) + { + emitInst(0x00000008 | (rs << OP_SH_RS)); + } + + void jalr(RegisterID rs) + { + emitInst(0x0000f809 | (rs << OP_SH_RS)); + } + + void jal() + { + emitInst(0x0c000000); + } + + void bkpt() + { + int value = 512; /* BRK_BUG */ + emitInst(0x0000000d | ((value & 0x3ff) << OP_SH_CODE)); + } + + void bgez(RegisterID rs, int imm) + { + emitInst(0x04010000 | (rs << OP_SH_RS) | (imm & 0xffff)); + } + + void bltz(RegisterID rs, int imm) + { + emitInst(0x04000000 | (rs << OP_SH_RS) | (imm & 0xffff)); + } + + void beq(RegisterID rs, RegisterID rt, int imm) + { + emitInst(0x10000000 | (rs << OP_SH_RS) | (rt << OP_SH_RT) | (imm & 0xffff)); + } + + void bne(RegisterID rs, RegisterID rt, int imm) + { + emitInst(0x14000000 | (rs << OP_SH_RS) | (rt << OP_SH_RT) | (imm & 0xffff)); + } + + void bc1t() + { + emitInst(0x45010000); + } + + void bc1f() + { + emitInst(0x45000000); + } + + JmpSrc newJmpSrc() + { + return JmpSrc(m_buffer.size()); + } + + void appendJump() + { + m_jumps.append(m_buffer.size()); + } + + void addd(FPRegisterID fd, FPRegisterID fs, FPRegisterID ft) + { + emitInst(0x46200000 | (fd << OP_SH_FD) | (fs << OP_SH_FS) + | (ft << OP_SH_FT)); + } + + void subd(FPRegisterID fd, FPRegisterID fs, FPRegisterID ft) + { + emitInst(0x46200001 | (fd << OP_SH_FD) | (fs << OP_SH_FS) + | (ft << OP_SH_FT)); + } + + void muld(FPRegisterID fd, FPRegisterID fs, FPRegisterID ft) + { + emitInst(0x46200002 | (fd << OP_SH_FD) | (fs << OP_SH_FS) + | (ft << OP_SH_FT)); + } + + void lwc1(FPRegisterID ft, RegisterID rs, int offset) + { + emitInst(0xc4000000 | (ft << OP_SH_FT) | (rs << OP_SH_RS) + | (offset & 0xffff)); + copDelayNop(); + } + + void ldc1(FPRegisterID ft, RegisterID rs, int offset) + { + emitInst(0xd4000000 | (ft << OP_SH_FT) | (rs << OP_SH_RS) + | (offset & 0xffff)); + } + + void swc1(FPRegisterID ft, RegisterID rs, int offset) + { + emitInst(0xe4000000 | (ft << OP_SH_FT) | (rs << OP_SH_RS) + | (offset & 0xffff)); + } + + void sdc1(FPRegisterID ft, RegisterID rs, int offset) + { + emitInst(0xf4000000 | (ft << OP_SH_FT) | (rs << OP_SH_RS) + | (offset & 0xffff)); + } + + void mtc1(RegisterID rt, FPRegisterID fs) + { + emitInst(0x44800000 | (fs << OP_SH_FS) | (rt << OP_SH_RT)); + copDelayNop(); + } + + void mfc1(RegisterID rt, FPRegisterID fs) + { + emitInst(0x44000000 | (fs << OP_SH_FS) | (rt << OP_SH_RT)); + copDelayNop(); + } + + void truncwd(FPRegisterID fd, FPRegisterID fs) + { + emitInst(0x4620000d | (fd << OP_SH_FD) | (fs << OP_SH_FS)); + } + + void cvtdw(FPRegisterID fd, FPRegisterID fs) + { + emitInst(0x46800021 | (fd << OP_SH_FD) | (fs << OP_SH_FS)); + } + + void ceqd(FPRegisterID fs, FPRegisterID ft) + { + emitInst(0x46200032 | (fs << OP_SH_FS) | (ft << OP_SH_FT)); + copDelayNop(); + } + + void cngtd(FPRegisterID fs, FPRegisterID ft) + { + emitInst(0x4620003f | (fs << OP_SH_FS) | (ft << OP_SH_FT)); + copDelayNop(); + } + + void cnged(FPRegisterID fs, FPRegisterID ft) + { + emitInst(0x4620003d | (fs << OP_SH_FS) | (ft << OP_SH_FT)); + copDelayNop(); + } + + void cltd(FPRegisterID fs, FPRegisterID ft) + { + emitInst(0x4620003c | (fs << OP_SH_FS) | (ft << OP_SH_FT)); + copDelayNop(); + } + + void cled(FPRegisterID fs, FPRegisterID ft) + { + emitInst(0x4620003e | (fs << OP_SH_FS) | (ft << OP_SH_FT)); + copDelayNop(); + } + + void cueqd(FPRegisterID fs, FPRegisterID ft) + { + emitInst(0x46200033 | (fs << OP_SH_FS) | (ft << OP_SH_FT)); + copDelayNop(); + } + + void coled(FPRegisterID fs, FPRegisterID ft) + { + emitInst(0x46200036 | (fs << OP_SH_FS) | (ft << OP_SH_FT)); + copDelayNop(); + } + + void coltd(FPRegisterID fs, FPRegisterID ft) + { + emitInst(0x46200034 | (fs << OP_SH_FS) | (ft << OP_SH_FT)); + copDelayNop(); + } + + void culed(FPRegisterID fs, FPRegisterID ft) + { + emitInst(0x46200037 | (fs << OP_SH_FS) | (ft << OP_SH_FT)); + copDelayNop(); + } + + void cultd(FPRegisterID fs, FPRegisterID ft) + { + emitInst(0x46200035 | (fs << OP_SH_FS) | (ft << OP_SH_FT)); + copDelayNop(); + } + + // General helpers + + JmpDst label() + { + return JmpDst(m_buffer.size()); + } + + JmpDst align(int alignment) + { + while (!m_buffer.isAligned(alignment)) + bkpt(); + + return label(); + } + + static void* getRelocatedAddress(void* code, JmpSrc jump) + { + ASSERT(jump.m_offset != -1); + void* b = reinterpret_cast((reinterpret_cast(code)) + jump.m_offset); + return b; + } + + static void* getRelocatedAddress(void* code, JmpDst label) + { + void* b = reinterpret_cast((reinterpret_cast(code)) + label.m_offset); + return b; + } + + static int getDifferenceBetweenLabels(JmpDst from, JmpDst to) + { + return to.m_offset - from.m_offset; + } + + static int getDifferenceBetweenLabels(JmpDst from, JmpSrc to) + { + return to.m_offset - from.m_offset; + } + + static int getDifferenceBetweenLabels(JmpSrc from, JmpDst to) + { + return to.m_offset - from.m_offset; + } + + // Assembler admin methods: + + size_t size() const + { + return m_buffer.size(); + } + + void* executableCopy(ExecutablePool* allocator) + { + void *result = m_buffer.executableCopy(allocator); + if (!result) + return 0; + + relocateJumps(m_buffer.data(), result); + return result; + } + + static unsigned getCallReturnOffset(JmpSrc call) + { + // The return address is after a call and a delay slot instruction + return call.m_offset; + } + + // Linking & patching: + // + // 'link' and 'patch' methods are for use on unprotected code - such as the code + // within the AssemblerBuffer, and code being patched by the patch buffer. Once + // code has been finalized it is (platform support permitting) within a non- + // writable region of memory; to modify the code in an execute-only execuable + // pool the 'repatch' and 'relink' methods should be used. + + void linkJump(JmpSrc from, JmpDst to) + { + ASSERT(to.m_offset != -1); + ASSERT(from.m_offset != -1); + MIPSWord* insn = reinterpret_cast(reinterpret_cast(m_buffer.data()) + from.m_offset); + MIPSWord* toPos = reinterpret_cast(reinterpret_cast(m_buffer.data()) + to.m_offset); + + ASSERT(!(*(insn - 1)) && !(*(insn - 2)) && !(*(insn - 3)) && !(*(insn - 5))); + insn = insn - 6; + linkWithOffset(insn, toPos); + } + + static void linkJump(void* code, JmpSrc from, void* to) + { + ASSERT(from.m_offset != -1); + MIPSWord* insn = reinterpret_cast(reinterpret_cast(code) + from.m_offset); + + ASSERT(!(*(insn - 1)) && !(*(insn - 2)) && !(*(insn - 3)) && !(*(insn - 5))); + insn = insn - 6; + linkWithOffset(insn, to); + } + + static void linkCall(void* code, JmpSrc from, void* to) + { + MIPSWord* insn = reinterpret_cast(reinterpret_cast(code) + from.m_offset); + linkCallInternal(insn, to); + } + + static void linkPointer(void* code, JmpDst from, void* to) + { + MIPSWord* insn = reinterpret_cast(reinterpret_cast(code) + from.m_offset); + ASSERT((*insn & 0xffe00000) == 0x3c000000); // lui + *insn = (*insn & 0xffff0000) | ((reinterpret_cast(to) >> 16) & 0xffff); + insn++; + ASSERT((*insn & 0xfc000000) == 0x34000000); // ori + *insn = (*insn & 0xffff0000) | (reinterpret_cast(to) & 0xffff); + } + + static void relinkJump(void* from, void* to) + { + MIPSWord* insn = reinterpret_cast(from); + + ASSERT(!(*(insn - 1)) && !(*(insn - 5))); + insn = insn - 6; + int flushSize = linkWithOffset(insn, to); + + ExecutableAllocator::cacheFlush(insn, flushSize); + } + + static void relinkCall(void* from, void* to) + { + void* start; + int size = linkCallInternal(from, to); + if (size == sizeof(MIPSWord)) + start = reinterpret_cast(reinterpret_cast(from) - 2 * sizeof(MIPSWord)); + else + start = reinterpret_cast(reinterpret_cast(from) - 4 * sizeof(MIPSWord)); + + ExecutableAllocator::cacheFlush(start, size); + } + + static void repatchInt32(void* from, int32_t to) + { + MIPSWord* insn = reinterpret_cast(from); + ASSERT((*insn & 0xffe00000) == 0x3c000000); // lui + *insn = (*insn & 0xffff0000) | ((to >> 16) & 0xffff); + insn++; + ASSERT((*insn & 0xfc000000) == 0x34000000); // ori + *insn = (*insn & 0xffff0000) | (to & 0xffff); + insn--; + ExecutableAllocator::cacheFlush(insn, 2 * sizeof(MIPSWord)); + } + + static void repatchPointer(void* from, void* to) + { + repatchInt32(from, reinterpret_cast(to)); + } + + static void repatchLoadPtrToLEA(void* from) + { + MIPSWord* insn = reinterpret_cast(from); + insn = insn + 3; + ASSERT((*insn & 0xfc000000) == 0x8c000000); // lw + /* lw -> addiu */ + *insn = 0x24000000 | (*insn & 0x03ffffff); + + ExecutableAllocator::cacheFlush(insn, sizeof(MIPSWord)); + } + +private: + + /* Update each jump in the buffer of newBase. */ + void relocateJumps(void* oldBase, void* newBase) + { + // Check each jump + for (Jumps::Iterator iter = m_jumps.begin(); iter != m_jumps.end(); ++iter) { + int pos = *iter; + MIPSWord* insn = reinterpret_cast(reinterpret_cast(newBase) + pos); + insn = insn + 2; + // Need to make sure we have 5 valid instructions after pos + if ((unsigned int)pos >= m_buffer.size() - 5 * sizeof(MIPSWord)) + continue; + + if ((*insn & 0xfc000000) == 0x08000000) { // j + int offset = *insn & 0x03ffffff; + int oldInsnAddress = (int)insn - (int)newBase + (int)oldBase; + int topFourBits = (oldInsnAddress + 4) >> 28; + int oldTargetAddress = (topFourBits << 28) | (offset << 2); + int newTargetAddress = oldTargetAddress - (int)oldBase + (int)newBase; + int newInsnAddress = (int)insn; + if (((newInsnAddress + 4) >> 28) == (newTargetAddress >> 28)) + *insn = 0x08000000 | ((newTargetAddress >> 2) & 0x3ffffff); + else { + /* lui */ + *insn = 0x3c000000 | (MIPSRegisters::t9 << OP_SH_RT) | ((newTargetAddress >> 16) & 0xffff); + /* ori */ + *(insn + 1) = 0x34000000 | (MIPSRegisters::t9 << OP_SH_RT) | (MIPSRegisters::t9 << OP_SH_RS) | (newTargetAddress & 0xffff); + /* jr */ + *(insn + 2) = 0x00000008 | (MIPSRegisters::t9 << OP_SH_RS); + } + } else if ((*insn & 0xffe00000) == 0x3c000000) { // lui + int high = (*insn & 0xffff) << 16; + int low = *(insn + 1) & 0xffff; + int oldTargetAddress = high | low; + int newTargetAddress = oldTargetAddress - (int)oldBase + (int)newBase; + /* lui */ + *insn = 0x3c000000 | (MIPSRegisters::t9 << OP_SH_RT) | ((newTargetAddress >> 16) & 0xffff); + /* ori */ + *(insn + 1) = 0x34000000 | (MIPSRegisters::t9 << OP_SH_RT) | (MIPSRegisters::t9 << OP_SH_RS) | (newTargetAddress & 0xffff); + } + } + } + + static int linkWithOffset(MIPSWord* insn, void* to) + { + ASSERT((*insn & 0xfc000000) == 0x10000000 // beq + || (*insn & 0xfc000000) == 0x14000000 // bne + || (*insn & 0xffff0000) == 0x45010000 // bc1t + || (*insn & 0xffff0000) == 0x45000000); // bc1f + intptr_t diff = (reinterpret_cast(to) + - reinterpret_cast(insn) - 4) >> 2; + + if (diff < -32768 || diff > 32767 || *(insn + 2) != 0x10000003) { + /* + Convert the sequence: + beq $2, $3, target + nop + b 1f + nop + nop + nop + 1: + + to the new sequence if possible: + bne $2, $3, 1f + nop + j target + nop + nop + nop + 1: + + OR to the new sequence: + bne $2, $3, 1f + nop + lui $25, target >> 16 + ori $25, $25, target & 0xffff + jr $25 + nop + 1: + + Note: beq/bne/bc1t/bc1f are converted to bne/beq/bc1f/bc1t. + */ + + if (*(insn + 2) == 0x10000003) { + if ((*insn & 0xfc000000) == 0x10000000) // beq + *insn = (*insn & 0x03ff0000) | 0x14000005; // bne + else if ((*insn & 0xfc000000) == 0x14000000) // bne + *insn = (*insn & 0x03ff0000) | 0x10000005; // beq + else if ((*insn & 0xffff0000) == 0x45010000) // bc1t + *insn = 0x45000005; // bc1f + else if ((*insn & 0xffff0000) == 0x45000000) // bc1f + *insn = 0x45010005; // bc1t + else + ASSERT(0); + } + + insn = insn + 2; + if ((reinterpret_cast(insn) + 4) >> 28 + == reinterpret_cast(to) >> 28) { + *insn = 0x08000000 | ((reinterpret_cast(to) >> 2) & 0x3ffffff); + *(insn + 1) = 0; + return 4 * sizeof(MIPSWord); + } + + intptr_t newTargetAddress = reinterpret_cast(to); + /* lui */ + *insn = 0x3c000000 | (MIPSRegisters::t9 << OP_SH_RT) | ((newTargetAddress >> 16) & 0xffff); + /* ori */ + *(insn + 1) = 0x34000000 | (MIPSRegisters::t9 << OP_SH_RT) | (MIPSRegisters::t9 << OP_SH_RS) | (newTargetAddress & 0xffff); + /* jr */ + *(insn + 2) = 0x00000008 | (MIPSRegisters::t9 << OP_SH_RS); + return 5 * sizeof(MIPSWord); + } + + *insn = (*insn & 0xffff0000) | (diff & 0xffff); + return sizeof(MIPSWord); + } + + static int linkCallInternal(void* from, void* to) + { + MIPSWord* insn = reinterpret_cast(from); + insn = insn - 4; + + if ((*(insn + 2) & 0xfc000000) == 0x0c000000) { // jal + if ((reinterpret_cast(from) - 4) >> 28 + == reinterpret_cast(to) >> 28) { + *(insn + 2) = 0x0c000000 | ((reinterpret_cast(to) >> 2) & 0x3ffffff); + return sizeof(MIPSWord); + } + + /* lui $25, (to >> 16) & 0xffff */ + *insn = 0x3c000000 | (MIPSRegisters::t9 << OP_SH_RT) | ((reinterpret_cast(to) >> 16) & 0xffff); + /* ori $25, $25, to & 0xffff */ + *(insn + 1) = 0x34000000 | (MIPSRegisters::t9 << OP_SH_RT) | (MIPSRegisters::t9 << OP_SH_RS) | (reinterpret_cast(to) & 0xffff); + /* jalr $25 */ + *(insn + 2) = 0x0000f809 | (MIPSRegisters::t9 << OP_SH_RS); + return 3 * sizeof(MIPSWord); + } + + ASSERT((*insn & 0xffe00000) == 0x3c000000); // lui + ASSERT((*(insn + 1) & 0xfc000000) == 0x34000000); // ori + + /* lui */ + *insn = (*insn & 0xffff0000) | ((reinterpret_cast(to) >> 16) & 0xffff); + /* ori */ + *(insn + 1) = (*(insn + 1) & 0xffff0000) | (reinterpret_cast(to) & 0xffff); + return 2 * sizeof(MIPSWord); + } + + AssemblerBuffer m_buffer; + Jumps m_jumps; +}; + +} // namespace JSC + +#endif // ENABLE(ASSEMBLER) && CPU(MIPS) + +#endif // MIPSAssembler_h diff --git a/assembler/MacroAssembler.h b/assembler/MacroAssembler.h index 76bd205..ce1be78 100644 --- a/assembler/MacroAssembler.h +++ b/assembler/MacroAssembler.h @@ -26,8 +26,6 @@ #ifndef MacroAssembler_h #define MacroAssembler_h -#include - #if ENABLE(ASSEMBLER) #if CPU(ARM_THUMB2) @@ -38,6 +36,12 @@ namespace JSC { typedef MacroAssemblerARMv7 MacroAssemblerBase; }; #include "MacroAssemblerARM.h" namespace JSC { typedef MacroAssemblerARM MacroAssemblerBase; }; +#elif CPU(MIPS) +#include "MacroAssemblerMIPS.h" +namespace JSC { +typedef MacroAssemblerMIPS MacroAssemblerBase; +}; + #elif CPU(X86) #include "MacroAssemblerX86.h" namespace JSC { typedef MacroAssemblerX86 MacroAssemblerBase; }; @@ -327,6 +331,11 @@ public: { return branchSub32(cond, imm, dest); } + using MacroAssemblerBase::branchTest8; + Jump branchTest8(Condition cond, ExtendedAddress address, Imm32 mask = Imm32(-1)) + { + return MacroAssemblerBase::branchTest8(cond, Address(address.base, address.offset), mask); + } #endif }; diff --git a/assembler/MacroAssemblerARM.h b/assembler/MacroAssemblerARM.h index 21b8de8..2a053d4 100644 --- a/assembler/MacroAssemblerARM.h +++ b/assembler/MacroAssemblerARM.h @@ -1,6 +1,6 @@ /* * Copyright (C) 2008 Apple Inc. - * Copyright (C) 2009 University of Szeged + * Copyright (C) 2009, 2010 University of Szeged * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -28,8 +28,6 @@ #ifndef MacroAssemblerARM_h #define MacroAssemblerARM_h -#include - #if ENABLE(ASSEMBLER) && CPU(ARM_TRADITIONAL) #include "ARMAssembler.h" @@ -42,6 +40,8 @@ class MacroAssemblerARM : public AbstractMacroAssembler { static const int DoubleConditionBitSpecial = 0x10; COMPILE_ASSERT(!(DoubleConditionBitSpecial & DoubleConditionMask), DoubleConditionBitSpecial_should_not_interfere_with_ARMAssembler_Condition_codes); public: + typedef ARMRegisters::FPRegisterID FPRegisterID; + enum Condition { Equal = ARMAssembler::EQ, NotEqual = ARMAssembler::NE, @@ -180,6 +180,20 @@ public: { m_assembler.movs_r(dest, m_assembler.asr(dest, imm.m_value & 0x1f)); } + + void urshift32(RegisterID shift_amount, RegisterID dest) + { + ARMWord w = ARMAssembler::getOp2(0x1f); + ASSERT(w != ARMAssembler::INVALID_IMM); + m_assembler.and_r(ARMRegisters::S0, shift_amount, w); + + m_assembler.movs_r(dest, m_assembler.lsr_r(dest, ARMRegisters::S0)); + } + + void urshift32(Imm32 imm, RegisterID dest) + { + m_assembler.movs_r(dest, m_assembler.lsr(dest, imm.m_value & 0x1f)); + } void sub32(RegisterID src, RegisterID dest) { @@ -214,6 +228,11 @@ public: m_assembler.eors_r(dest, dest, m_assembler.getImm(imm.m_value, ARMRegisters::S0)); } + void load8(ImplicitAddress address, RegisterID dest) + { + m_assembler.dataTransfer32(true, dest, address.base, address.offset, true); + } + void load32(ImplicitAddress address, RegisterID dest) { m_assembler.dataTransfer32(true, dest, address.base, address.offset); @@ -256,6 +275,14 @@ public: else m_assembler.ldrh_d(dest, ARMRegisters::S0, ARMAssembler::getOp2Byte(-address.offset)); } + + void load16(ImplicitAddress address, RegisterID dest) + { + if (address.offset >= 0) + m_assembler.ldrh_u(dest, address.base, ARMAssembler::getOp2Byte(address.offset)); + else + m_assembler.ldrh_d(dest, address.base, ARMAssembler::getOp2Byte(-address.offset)); + } DataLabel32 store32WithAddressOffsetPatch(RegisterID src, Address address) { @@ -359,6 +386,12 @@ public: move(src, dest); } + Jump branch8(Condition cond, Address left, Imm32 right) + { + load8(left, ARMRegisters::S1); + return branch32(cond, ARMRegisters::S1, right); + } + Jump branch32(Condition cond, RegisterID left, RegisterID right, int useConstantPool = 0) { m_assembler.cmp_r(left, right); @@ -422,6 +455,12 @@ public: return m_assembler.jmp(ARMCondition(cond)); } + Jump branchTest8(Condition cond, Address address, Imm32 mask = Imm32(-1)) + { + load8(address, ARMRegisters::S1); + return branchTest32(cond, ARMRegisters::S1, mask); + } + Jump branchTest32(Condition cond, RegisterID reg, RegisterID mask) { ASSERT((cond == Zero) || (cond == NonZero)); @@ -459,7 +498,7 @@ public: void jump(RegisterID target) { - move(target, ARMRegisters::pc); + m_assembler.bx(target); } void jump(Address address) @@ -530,6 +569,13 @@ public: return Jump(m_assembler.jmp(ARMCondition(cond))); } + Jump branchNeg32(Condition cond, RegisterID srcDest) + { + ASSERT((cond == Overflow) || (cond == Signed) || (cond == Zero) || (cond == NonZero)); + neg32(srcDest); + return Jump(m_assembler.jmp(ARMCondition(cond))); + } + Jump branchOr32(Condition cond, RegisterID src, RegisterID dest) { ASSERT((cond == Signed) || (cond == Zero) || (cond == NonZero)); @@ -544,14 +590,19 @@ public: Call nearCall() { +#if WTF_ARM_ARCH_AT_LEAST(5) + ensureSpace(2 * sizeof(ARMWord), sizeof(ARMWord)); + m_assembler.loadBranchTarget(ARMRegisters::S1, ARMAssembler::AL, true); + return Call(m_assembler.blx(ARMRegisters::S1), Call::LinkableNear); +#else prepareCall(); return Call(m_assembler.jmp(ARMAssembler::AL, true), Call::LinkableNear); +#endif } Call call(RegisterID target) { - prepareCall(); - move(ARMRegisters::pc, target); + m_assembler.blx(target); JmpSrc jmpSrc; return Call(jmpSrc, Call::None); } @@ -563,7 +614,7 @@ public: void ret() { - m_assembler.mov_r(ARMRegisters::pc, linkRegister); + m_assembler.bx(linkRegister); } void set32(Condition cond, RegisterID left, RegisterID right, RegisterID dest) @@ -659,8 +710,14 @@ public: Call call() { +#if WTF_ARM_ARCH_AT_LEAST(5) + ensureSpace(2 * sizeof(ARMWord), sizeof(ARMWord)); + m_assembler.loadBranchTarget(ARMRegisters::S1, ARMAssembler::AL, true); + return Call(m_assembler.blx(ARMRegisters::S1), Call::Linkable); +#else prepareCall(); return Call(m_assembler.jmp(ARMAssembler::AL, true), Call::Linkable); +#endif } Call tailRecursiveCall() @@ -718,12 +775,17 @@ public: return false; } + bool supportsFloatingPointSqrt() const + { + return s_isVFPPresent; + } + void loadDouble(ImplicitAddress address, FPRegisterID dest) { m_assembler.doubleTransfer(true, dest, address.base, address.offset); } - void loadDouble(void* address, FPRegisterID dest) + void loadDouble(const void* address, FPRegisterID dest) { m_assembler.ldr_un_imm(ARMRegisters::S0, (ARMWord)address); m_assembler.fdtr_u(true, dest, ARMRegisters::S0, 0); @@ -779,6 +841,11 @@ public: mulDouble(ARMRegisters::SD0, dest); } + void sqrtDouble(FPRegisterID src, FPRegisterID dest) + { + m_assembler.fsqrtd_r(dest, src); + } + void convertInt32ToDouble(RegisterID src, FPRegisterID dest) { m_assembler.fmsr_r(dest, src); @@ -864,44 +931,56 @@ protected: void prepareCall() { +#if WTF_ARM_ARCH_VERSION < 5 ensureSpace(2 * sizeof(ARMWord), sizeof(ARMWord)); m_assembler.mov_r(linkRegister, ARMRegisters::pc); +#endif } void call32(RegisterID base, int32_t offset) { +#if WTF_ARM_ARCH_AT_LEAST(5) + int targetReg = ARMRegisters::S1; +#else + int targetReg = ARMRegisters::pc; +#endif + int tmpReg = ARMRegisters::S1; + if (base == ARMRegisters::sp) offset += 4; if (offset >= 0) { if (offset <= 0xfff) { prepareCall(); - m_assembler.dtr_u(true, ARMRegisters::pc, base, offset); + m_assembler.dtr_u(true, targetReg, base, offset); } else if (offset <= 0xfffff) { - m_assembler.add_r(ARMRegisters::S0, base, ARMAssembler::OP2_IMM | (offset >> 12) | (10 << 8)); + m_assembler.add_r(tmpReg, base, ARMAssembler::OP2_IMM | (offset >> 12) | (10 << 8)); prepareCall(); - m_assembler.dtr_u(true, ARMRegisters::pc, ARMRegisters::S0, offset & 0xfff); + m_assembler.dtr_u(true, targetReg, tmpReg, offset & 0xfff); } else { - ARMWord reg = m_assembler.getImm(offset, ARMRegisters::S0); + ARMWord reg = m_assembler.getImm(offset, tmpReg); prepareCall(); - m_assembler.dtr_ur(true, ARMRegisters::pc, base, reg); + m_assembler.dtr_ur(true, targetReg, base, reg); } } else { offset = -offset; if (offset <= 0xfff) { prepareCall(); - m_assembler.dtr_d(true, ARMRegisters::pc, base, offset); + m_assembler.dtr_d(true, targetReg, base, offset); } else if (offset <= 0xfffff) { - m_assembler.sub_r(ARMRegisters::S0, base, ARMAssembler::OP2_IMM | (offset >> 12) | (10 << 8)); + m_assembler.sub_r(tmpReg, base, ARMAssembler::OP2_IMM | (offset >> 12) | (10 << 8)); prepareCall(); - m_assembler.dtr_d(true, ARMRegisters::pc, ARMRegisters::S0, offset & 0xfff); + m_assembler.dtr_d(true, targetReg, tmpReg, offset & 0xfff); } else { - ARMWord reg = m_assembler.getImm(offset, ARMRegisters::S0); + ARMWord reg = m_assembler.getImm(offset, tmpReg); prepareCall(); - m_assembler.dtr_dr(true, ARMRegisters::pc, base, reg); + m_assembler.dtr_dr(true, targetReg, base, reg); } } +#if WTF_ARM_ARCH_AT_LEAST(5) + m_assembler.blx(targetReg); +#endif } private: diff --git a/assembler/MacroAssemblerARMv7.h b/assembler/MacroAssemblerARMv7.h index 5d6513b..b9cc856 100644 --- a/assembler/MacroAssemblerARMv7.h +++ b/assembler/MacroAssemblerARMv7.h @@ -1,5 +1,6 @@ /* * Copyright (C) 2009 Apple Inc. All rights reserved. + * Copyright (C) 2010 University of Szeged * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -26,8 +27,6 @@ #ifndef MacroAssemblerARMv7_h #define MacroAssemblerARMv7_h -#include - #if ENABLE(ASSEMBLER) #include "ARMv7Assembler.h" @@ -39,10 +38,13 @@ class MacroAssemblerARMv7 : public AbstractMacroAssembler { // FIXME: switch dataTempRegister & addressTempRegister, or possibly use r7? // - dTR is likely used more than aTR, and we'll get better instruction // encoding if it's in the low 8 registers. - static const ARMRegisters::RegisterID dataTempRegister = ARMRegisters::ip; + static const RegisterID dataTempRegister = ARMRegisters::ip; static const RegisterID addressTempRegister = ARMRegisters::r3; - static const FPRegisterID fpTempRegister = ARMRegisters::d7; + static const ARMRegisters::FPDoubleRegisterID fpTempRegister = ARMRegisters::d7; + inline ARMRegisters::FPSingleRegisterID fpTempRegisterAsSingle() { return ARMRegisters::asSingle(fpTempRegister); } + +public: struct ArmAddress { enum AddressType { HasOffset, @@ -74,6 +76,7 @@ class MacroAssemblerARMv7 : public AbstractMacroAssembler { }; public: + typedef ARMRegisters::FPDoubleRegisterID FPRegisterID; static const Scale ScalePtr = TimesFour; @@ -223,6 +226,11 @@ public: m_assembler.smull(dest, dataTempRegister, src, dataTempRegister); } + void neg32(RegisterID srcDest) + { + m_assembler.neg(srcDest, srcDest); + } + void not32(RegisterID srcDest) { m_assembler.mvn(srcDest, srcDest); @@ -258,6 +266,21 @@ public: { m_assembler.asr(dest, dest, imm.m_value & 0x1f); } + + void urshift32(RegisterID shift_amount, RegisterID dest) + { + // Clamp the shift to the range 0..31 + ARMThumbImmediate armImm = ARMThumbImmediate::makeEncodedImm(0x1f); + ASSERT(armImm.isValid()); + m_assembler.ARM_and(dataTempRegister, shift_amount, armImm); + + m_assembler.lsr(dest, dest, dataTempRegister); + } + + void urshift32(Imm32 imm, RegisterID dest) + { + m_assembler.lsr(dest, dest, imm.m_value & 0x1f); + } void sub32(RegisterID src, RegisterID dest) { @@ -368,6 +391,20 @@ private: } } + void load8(ArmAddress address, RegisterID dest) + { + if (address.type == ArmAddress::HasIndex) + m_assembler.ldrb(dest, address.base, address.u.index, address.u.scale); + else if (address.u.offset >= 0) { + ARMThumbImmediate armImm = ARMThumbImmediate::makeUInt12(address.u.offset); + ASSERT(armImm.isValid()); + m_assembler.ldrb(dest, address.base, armImm); + } else { + ASSERT(address.u.offset >= -255); + m_assembler.ldrb(dest, address.base, address.u.offset, true, false); + } + } + void store32(RegisterID src, ArmAddress address) { if (address.type == ArmAddress::HasIndex) @@ -404,6 +441,11 @@ public: m_assembler.ldr(dest, addressTempRegister, ARMThumbImmediate::makeUInt16(0)); } + void load8(ImplicitAddress address, RegisterID dest) + { + load8(setupArmAddress(address), dest); + } + DataLabel32 load32WithAddressOffsetPatch(Address address, RegisterID dest) { DataLabel32 label = moveWithPatch(Imm32(address.offset), dataTempRegister); @@ -423,6 +465,17 @@ public: { m_assembler.ldrh(dest, makeBaseIndexBase(address), address.index, address.scale); } + + void load16(ImplicitAddress address, RegisterID dest) + { + ARMThumbImmediate armImm = ARMThumbImmediate::makeUInt12(address.offset); + if (armImm.isValid()) + m_assembler.ldrh(dest, address.base, armImm); + else { + move(Imm32(address.offset), dataTempRegister); + m_assembler.ldrh(dest, address.base, dataTempRegister); + } + } DataLabel32 store32WithAddressOffsetPatch(RegisterID src, Address address) { @@ -476,6 +529,11 @@ public: // In short, FIXME:. bool supportsFloatingPointTruncate() const { return false; } + bool supportsFloatingPointSqrt() const + { + return false; + } + void loadDouble(ImplicitAddress address, FPRegisterID dest) { RegisterID base = address.base; @@ -491,6 +549,12 @@ public: m_assembler.vldr(dest, base, offset); } + void loadDouble(const void* address, FPRegisterID dest) + { + move(ImmPtr(address), addressTempRegister); + m_assembler.vldr(dest, addressTempRegister, 0); + } + void storeDouble(FPRegisterID src, ImplicitAddress address) { RegisterID base = address.base; @@ -517,6 +581,11 @@ public: addDouble(fpTempRegister, dest); } + void divDouble(FPRegisterID src, FPRegisterID dest) + { + m_assembler.vdiv_F64(dest, dest, src); + } + void subDouble(FPRegisterID src, FPRegisterID dest) { m_assembler.vsub_F64(dest, dest, src); @@ -539,16 +608,37 @@ public: mulDouble(fpTempRegister, dest); } + void sqrtDouble(FPRegisterID, FPRegisterID) + { + ASSERT_NOT_REACHED(); + } + void convertInt32ToDouble(RegisterID src, FPRegisterID dest) { - m_assembler.vmov(fpTempRegister, src); - m_assembler.vcvt_F64_S32(dest, fpTempRegister); + m_assembler.vmov(fpTempRegisterAsSingle(), src); + m_assembler.vcvt_F64_S32(dest, fpTempRegisterAsSingle()); + } + + void convertInt32ToDouble(Address address, FPRegisterID dest) + { + // Fixme: load directly into the fpr! + load32(address, dataTempRegister); + m_assembler.vmov(fpTempRegisterAsSingle(), dataTempRegister); + m_assembler.vcvt_F64_S32(dest, fpTempRegisterAsSingle()); + } + + void convertInt32ToDouble(AbsoluteAddress address, FPRegisterID dest) + { + // Fixme: load directly into the fpr! + load32(address.m_ptr, dataTempRegister); + m_assembler.vmov(fpTempRegisterAsSingle(), dataTempRegister); + m_assembler.vcvt_F64_S32(dest, fpTempRegisterAsSingle()); } Jump branchDouble(DoubleCondition cond, FPRegisterID left, FPRegisterID right) { m_assembler.vcmp_F64(left, right); - m_assembler.vmrs_APSR_nzcv_FPSCR(); + m_assembler.vmrs(); if (cond == DoubleNotEqual) { // ConditionNE jumps if NotEqual *or* unordered - force the unordered cases not to jump. @@ -575,6 +665,27 @@ public: return jump(); } + // Convert 'src' to an integer, and places the resulting 'dest'. + // If the result is not representable as a 32 bit value, branch. + // May also branch for some values that are representable in 32 bits + // (specifically, in this case, 0). + void branchConvertDoubleToInt32(FPRegisterID src, RegisterID dest, JumpList& failureCases, FPRegisterID) + { + m_assembler.vcvtr_S32_F64(fpTempRegisterAsSingle(), src); + m_assembler.vmov(dest, fpTempRegisterAsSingle()); + + // Convert the integer result back to float & compare to the original value - if not equal or unordered (NaN) then jump. + m_assembler.vcvt_F64_S32(fpTempRegister, fpTempRegisterAsSingle()); + failureCases.append(branchDouble(DoubleNotEqualOrUnordered, src, fpTempRegister)); + + // If the result is zero, it might have been -0.0, and the double comparison won't catch this! + failureCases.append(branchTest32(Zero, dest)); + } + + void zeroDouble(FPRegisterID dest) + { + m_assembler.vmov_F64_0(dest); + } // Stack manipulation operations: // @@ -793,6 +904,19 @@ public: return branch32(cond, addressTempRegister, Imm32(right.m_value << 16)); } + Jump branch8(Condition cond, RegisterID left, Imm32 right) + { + compare32(left, right); + return Jump(makeBranch(cond)); + } + + Jump branch8(Condition cond, Address left, Imm32 right) + { + // use addressTempRegister incase the branch8 we call uses dataTempRegister. :-/ + load8(left, addressTempRegister); + return branch8(cond, addressTempRegister, right); + } + Jump branchTest32(Condition cond, RegisterID reg, RegisterID mask) { ASSERT((cond == Zero) || (cond == NonZero)); @@ -823,6 +947,21 @@ public: return branchTest32(cond, addressTempRegister, mask); } + Jump branchTest8(Condition cond, RegisterID reg, Imm32 mask = Imm32(-1)) + { + ASSERT((cond == Zero) || (cond == NonZero)); + test32(reg, mask); + return Jump(makeBranch(cond)); + } + + Jump branchTest8(Condition cond, Address address, Imm32 mask = Imm32(-1)) + { + ASSERT((cond == Zero) || (cond == NonZero)); + // use addressTempRegister incase the branchTest8 we call uses dataTempRegister. :-/ + load8(address, addressTempRegister); + return branchTest8(cond, addressTempRegister, mask); + } + Jump jump() { return Jump(makeJump()); @@ -888,6 +1027,13 @@ public: return branch32(NotEqual, addressTempRegister, dataTempRegister); } + Jump branchOr32(Condition cond, RegisterID src, RegisterID dest) + { + ASSERT((cond == Signed) || (cond == Zero) || (cond == NonZero)); + m_assembler.orr_S(dest, dest, src); + return Jump(makeBranch(cond)); + } + Jump branchSub32(Condition cond, RegisterID src, RegisterID dest) { ASSERT((cond == Overflow) || (cond == Signed) || (cond == Zero) || (cond == NonZero)); @@ -952,6 +1098,12 @@ public: m_assembler.mov(dest, ARMThumbImmediate::makeUInt16(0)); } + void set32(Condition cond, Address left, RegisterID right, RegisterID dest) + { + load32(left, dataTempRegister); + set32(cond, dataTempRegister, right, dest); + } + void set32(Condition cond, RegisterID left, Imm32 right, RegisterID dest) { compare32(left, right); @@ -960,6 +1112,21 @@ public: m_assembler.mov(dest, ARMThumbImmediate::makeUInt16(0)); } + void set8(Condition cond, RegisterID left, RegisterID right, RegisterID dest) + { + set32(cond, left, right, dest); + } + + void set8(Condition cond, Address left, RegisterID right, RegisterID dest) + { + set32(cond, left, right, dest); + } + + void set8(Condition cond, RegisterID left, Imm32 right, RegisterID dest) + { + set32(cond, left, right, dest); + } + // FIXME: // The mask should be optional... paerhaps the argument order should be // dest-src, operations always have a dest? ... possibly not true, considering @@ -973,6 +1140,14 @@ public: m_assembler.mov(dest, ARMThumbImmediate::makeUInt16(0)); } + void setTest8(Condition cond, Address address, Imm32 mask, RegisterID dest) + { + load8(address, dataTempRegister); + test32(dataTempRegister, mask); + m_assembler.it(armV7Condition(cond), false); + m_assembler.mov(dest, ARMThumbImmediate::makeUInt16(1)); + m_assembler.mov(dest, ARMThumbImmediate::makeUInt16(0)); + } DataLabel32 moveWithPatch(Imm32 imm, RegisterID dst) { diff --git a/assembler/MacroAssemblerCodeRef.h b/assembler/MacroAssemblerCodeRef.h index cae8bf6..543b0fa 100644 --- a/assembler/MacroAssemblerCodeRef.h +++ b/assembler/MacroAssemblerCodeRef.h @@ -26,8 +26,6 @@ #ifndef MacroAssemblerCodeRef_h #define MacroAssemblerCodeRef_h -#include - #include "ExecutableAllocator.h" #include "PassRefPtr.h" #include "RefPtr.h" diff --git a/assembler/MacroAssemblerMIPS.h b/assembler/MacroAssemblerMIPS.h new file mode 100644 index 0000000..9853c34 --- /dev/null +++ b/assembler/MacroAssemblerMIPS.h @@ -0,0 +1,1711 @@ +/* + * Copyright (C) 2008 Apple Inc. All rights reserved. + * Copyright (C) 2010 MIPS Technologies, Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY MIPS TECHNOLOGIES, INC. ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL MIPS TECHNOLOGIES, INC. OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef MacroAssemblerMIPS_h +#define MacroAssemblerMIPS_h + +#if ENABLE(ASSEMBLER) && CPU(MIPS) + +#include "AbstractMacroAssembler.h" +#include "MIPSAssembler.h" + +namespace JSC { + +class MacroAssemblerMIPS : public AbstractMacroAssembler { +public: + + MacroAssemblerMIPS() + : m_fixedWidth(false) + { + } + + static const Scale ScalePtr = TimesFour; + + // For storing immediate number + static const RegisterID immTempRegister = MIPSRegisters::t0; + // For storing data loaded from the memory + static const RegisterID dataTempRegister = MIPSRegisters::t1; + // For storing address base + static const RegisterID addrTempRegister = MIPSRegisters::t2; + // For storing compare result + static const RegisterID cmpTempRegister = MIPSRegisters::t3; + + // FP temp register + static const FPRegisterID fpTempRegister = MIPSRegisters::f16; + + enum Condition { + Equal, + NotEqual, + Above, + AboveOrEqual, + Below, + BelowOrEqual, + GreaterThan, + GreaterThanOrEqual, + LessThan, + LessThanOrEqual, + Overflow, + Signed, + Zero, + NonZero + }; + + enum DoubleCondition { + DoubleEqual, + DoubleNotEqual, + DoubleGreaterThan, + DoubleGreaterThanOrEqual, + DoubleLessThan, + DoubleLessThanOrEqual, + DoubleEqualOrUnordered, + DoubleNotEqualOrUnordered, + DoubleGreaterThanOrUnordered, + DoubleGreaterThanOrEqualOrUnordered, + DoubleLessThanOrUnordered, + DoubleLessThanOrEqualOrUnordered + }; + + static const RegisterID stackPointerRegister = MIPSRegisters::sp; + static const RegisterID returnAddressRegister = MIPSRegisters::ra; + + // Integer arithmetic operations: + // + // Operations are typically two operand - operation(source, srcDst) + // For many operations the source may be an Imm32, the srcDst operand + // may often be a memory location (explictly described using an Address + // object). + + void add32(RegisterID src, RegisterID dest) + { + m_assembler.addu(dest, dest, src); + } + + void add32(Imm32 imm, RegisterID dest) + { + add32(imm, dest, dest); + } + + void add32(Imm32 imm, RegisterID src, RegisterID dest) + { + if (!imm.m_isPointer && imm.m_value >= -32768 && imm.m_value <= 32767 + && !m_fixedWidth) { + /* + addiu dest, src, imm + */ + m_assembler.addiu(dest, src, imm.m_value); + } else { + /* + li immTemp, imm + addu dest, src, immTemp + */ + move(imm, immTempRegister); + m_assembler.addu(dest, src, immTempRegister); + } + } + + void add32(Imm32 imm, Address address) + { + if (address.offset >= -32768 && address.offset <= 32767 + && !m_fixedWidth) { + /* + lw dataTemp, offset(base) + li immTemp, imm + addu dataTemp, dataTemp, immTemp + sw dataTemp, offset(base) + */ + m_assembler.lw(dataTempRegister, address.base, address.offset); + if (!imm.m_isPointer + && imm.m_value >= -32768 && imm.m_value <= 32767 + && !m_fixedWidth) + m_assembler.addiu(dataTempRegister, dataTempRegister, + imm.m_value); + else { + move(imm, immTempRegister); + m_assembler.addu(dataTempRegister, dataTempRegister, + immTempRegister); + } + m_assembler.sw(dataTempRegister, address.base, address.offset); + } else { + /* + lui addrTemp, (offset + 0x8000) >> 16 + addu addrTemp, addrTemp, base + lw dataTemp, (offset & 0xffff)(addrTemp) + li immtemp, imm + addu dataTemp, dataTemp, immTemp + sw dataTemp, (offset & 0xffff)(addrTemp) + */ + m_assembler.lui(addrTempRegister, (address.offset + 0x8000) >> 16); + m_assembler.addu(addrTempRegister, addrTempRegister, address.base); + m_assembler.lw(dataTempRegister, addrTempRegister, address.offset); + + if (imm.m_value >= -32768 && imm.m_value <= 32767 && !m_fixedWidth) + m_assembler.addiu(dataTempRegister, dataTempRegister, + imm.m_value); + else { + move(imm, immTempRegister); + m_assembler.addu(dataTempRegister, dataTempRegister, + immTempRegister); + } + m_assembler.sw(dataTempRegister, addrTempRegister, address.offset); + } + } + + void add32(Address src, RegisterID dest) + { + load32(src, dataTempRegister); + add32(dataTempRegister, dest); + } + + void add32(RegisterID src, Address dest) + { + if (dest.offset >= -32768 && dest.offset <= 32767 && !m_fixedWidth) { + /* + lw dataTemp, offset(base) + addu dataTemp, dataTemp, src + sw dataTemp, offset(base) + */ + m_assembler.lw(dataTempRegister, dest.base, dest.offset); + m_assembler.addu(dataTempRegister, dataTempRegister, src); + m_assembler.sw(dataTempRegister, dest.base, dest.offset); + } else { + /* + lui addrTemp, (offset + 0x8000) >> 16 + addu addrTemp, addrTemp, base + lw dataTemp, (offset & 0xffff)(addrTemp) + addu dataTemp, dataTemp, src + sw dataTemp, (offset & 0xffff)(addrTemp) + */ + m_assembler.lui(addrTempRegister, (dest.offset + 0x8000) >> 16); + m_assembler.addu(addrTempRegister, addrTempRegister, dest.base); + m_assembler.lw(dataTempRegister, addrTempRegister, dest.offset); + m_assembler.addu(dataTempRegister, dataTempRegister, src); + m_assembler.sw(dataTempRegister, addrTempRegister, dest.offset); + } + } + + void add32(Imm32 imm, AbsoluteAddress address) + { + /* + li addrTemp, address + li immTemp, imm + lw dataTemp, 0(addrTemp) + addu dataTemp, dataTemp, immTemp + sw dataTemp, 0(addrTemp) + */ + move(ImmPtr(address.m_ptr), addrTempRegister); + m_assembler.lw(dataTempRegister, addrTempRegister, 0); + if (!imm.m_isPointer && imm.m_value >= -32768 && imm.m_value <= 32767 + && !m_fixedWidth) + m_assembler.addiu(dataTempRegister, dataTempRegister, imm.m_value); + else { + move(imm, immTempRegister); + m_assembler.addu(dataTempRegister, dataTempRegister, immTempRegister); + } + m_assembler.sw(dataTempRegister, addrTempRegister, 0); + } + + void and32(RegisterID src, RegisterID dest) + { + m_assembler.andInsn(dest, dest, src); + } + + void and32(Imm32 imm, RegisterID dest) + { + if (!imm.m_isPointer && !imm.m_value && !m_fixedWidth) + move(MIPSRegisters::zero, dest); + else if (!imm.m_isPointer && imm.m_value > 0 && imm.m_value < 65535 + && !m_fixedWidth) + m_assembler.andi(dest, dest, imm.m_value); + else { + /* + li immTemp, imm + and dest, dest, immTemp + */ + move(imm, immTempRegister); + m_assembler.andInsn(dest, dest, immTempRegister); + } + } + + void lshift32(Imm32 imm, RegisterID dest) + { + m_assembler.sll(dest, dest, imm.m_value); + } + + void lshift32(RegisterID shiftAmount, RegisterID dest) + { + m_assembler.sllv(dest, dest, shiftAmount); + } + + void mul32(RegisterID src, RegisterID dest) + { + m_assembler.mul(dest, dest, src); + } + + void mul32(Imm32 imm, RegisterID src, RegisterID dest) + { + if (!imm.m_isPointer && !imm.m_value && !m_fixedWidth) + move(MIPSRegisters::zero, dest); + else if (!imm.m_isPointer && imm.m_value == 1 && !m_fixedWidth) + move(src, dest); + else { + /* + li dataTemp, imm + mul dest, src, dataTemp + */ + move(imm, dataTempRegister); + m_assembler.mul(dest, src, dataTempRegister); + } + } + + void not32(RegisterID srcDest) + { + m_assembler.nor(srcDest, srcDest, MIPSRegisters::zero); + } + + void or32(RegisterID src, RegisterID dest) + { + m_assembler.orInsn(dest, dest, src); + } + + void or32(Imm32 imm, RegisterID dest) + { + if (!imm.m_isPointer && !imm.m_value && !m_fixedWidth) + return; + + if (!imm.m_isPointer && imm.m_value > 0 && imm.m_value < 65535 + && !m_fixedWidth) { + m_assembler.ori(dest, dest, imm.m_value); + return; + } + + /* + li dataTemp, imm + or dest, dest, dataTemp + */ + move(imm, dataTempRegister); + m_assembler.orInsn(dest, dest, dataTempRegister); + } + + void rshift32(RegisterID shiftAmount, RegisterID dest) + { + m_assembler.srav(dest, dest, shiftAmount); + } + + void rshift32(Imm32 imm, RegisterID dest) + { + m_assembler.sra(dest, dest, imm.m_value); + } + + void sub32(RegisterID src, RegisterID dest) + { + m_assembler.subu(dest, dest, src); + } + + void sub32(Imm32 imm, RegisterID dest) + { + if (!imm.m_isPointer && imm.m_value >= -32767 && imm.m_value <= 32768 + && !m_fixedWidth) { + /* + addiu dest, src, imm + */ + m_assembler.addiu(dest, dest, -imm.m_value); + } else { + /* + li immTemp, imm + subu dest, src, immTemp + */ + move(imm, immTempRegister); + m_assembler.subu(dest, dest, immTempRegister); + } + } + + void sub32(Imm32 imm, Address address) + { + if (address.offset >= -32768 && address.offset <= 32767 + && !m_fixedWidth) { + /* + lw dataTemp, offset(base) + li immTemp, imm + subu dataTemp, dataTemp, immTemp + sw dataTemp, offset(base) + */ + m_assembler.lw(dataTempRegister, address.base, address.offset); + if (!imm.m_isPointer + && imm.m_value >= -32767 && imm.m_value <= 32768 + && !m_fixedWidth) + m_assembler.addiu(dataTempRegister, dataTempRegister, + -imm.m_value); + else { + move(imm, immTempRegister); + m_assembler.subu(dataTempRegister, dataTempRegister, + immTempRegister); + } + m_assembler.sw(dataTempRegister, address.base, address.offset); + } else { + /* + lui addrTemp, (offset + 0x8000) >> 16 + addu addrTemp, addrTemp, base + lw dataTemp, (offset & 0xffff)(addrTemp) + li immtemp, imm + subu dataTemp, dataTemp, immTemp + sw dataTemp, (offset & 0xffff)(addrTemp) + */ + m_assembler.lui(addrTempRegister, (address.offset + 0x8000) >> 16); + m_assembler.addu(addrTempRegister, addrTempRegister, address.base); + m_assembler.lw(dataTempRegister, addrTempRegister, address.offset); + + if (!imm.m_isPointer + && imm.m_value >= -32767 && imm.m_value <= 32768 + && !m_fixedWidth) + m_assembler.addiu(dataTempRegister, dataTempRegister, + -imm.m_value); + else { + move(imm, immTempRegister); + m_assembler.subu(dataTempRegister, dataTempRegister, + immTempRegister); + } + m_assembler.sw(dataTempRegister, addrTempRegister, address.offset); + } + } + + void sub32(Address src, RegisterID dest) + { + load32(src, dataTempRegister); + sub32(dataTempRegister, dest); + } + + void sub32(Imm32 imm, AbsoluteAddress address) + { + /* + li addrTemp, address + li immTemp, imm + lw dataTemp, 0(addrTemp) + subu dataTemp, dataTemp, immTemp + sw dataTemp, 0(addrTemp) + */ + move(ImmPtr(address.m_ptr), addrTempRegister); + m_assembler.lw(dataTempRegister, addrTempRegister, 0); + + if (!imm.m_isPointer && imm.m_value >= -32767 && imm.m_value <= 32768 + && !m_fixedWidth) { + m_assembler.addiu(dataTempRegister, dataTempRegister, + -imm.m_value); + } else { + move(imm, immTempRegister); + m_assembler.subu(dataTempRegister, dataTempRegister, immTempRegister); + } + m_assembler.sw(dataTempRegister, addrTempRegister, 0); + } + + void xor32(RegisterID src, RegisterID dest) + { + m_assembler.xorInsn(dest, dest, src); + } + + void xor32(Imm32 imm, RegisterID dest) + { + /* + li immTemp, imm + xor dest, dest, immTemp + */ + move(imm, immTempRegister); + m_assembler.xorInsn(dest, dest, immTempRegister); + } + + // Memory access operations: + // + // Loads are of the form load(address, destination) and stores of the form + // store(source, address). The source for a store may be an Imm32. Address + // operand objects to loads and store will be implicitly constructed if a + // register is passed. + + /* Need to use zero-extened load byte for load8. */ + void load8(ImplicitAddress address, RegisterID dest) + { + if (address.offset >= -32768 && address.offset <= 32767 + && !m_fixedWidth) + m_assembler.lbu(dest, address.base, address.offset); + else { + /* + lui addrTemp, (offset + 0x8000) >> 16 + addu addrTemp, addrTemp, base + lbu dest, (offset & 0xffff)(addrTemp) + */ + m_assembler.lui(addrTempRegister, (address.offset + 0x8000) >> 16); + m_assembler.addu(addrTempRegister, addrTempRegister, address.base); + m_assembler.lbu(dest, addrTempRegister, address.offset); + } + } + + void load32(ImplicitAddress address, RegisterID dest) + { + if (address.offset >= -32768 && address.offset <= 32767 + && !m_fixedWidth) + m_assembler.lw(dest, address.base, address.offset); + else { + /* + lui addrTemp, (offset + 0x8000) >> 16 + addu addrTemp, addrTemp, base + lw dest, (offset & 0xffff)(addrTemp) + */ + m_assembler.lui(addrTempRegister, (address.offset + 0x8000) >> 16); + m_assembler.addu(addrTempRegister, addrTempRegister, address.base); + m_assembler.lw(dest, addrTempRegister, address.offset); + } + } + + void load32(BaseIndex address, RegisterID dest) + { + if (address.offset >= -32768 && address.offset <= 32767 + && !m_fixedWidth) { + /* + sll addrTemp, address.index, address.scale + addu addrTemp, addrTemp, address.base + lw dest, address.offset(addrTemp) + */ + m_assembler.sll(addrTempRegister, address.index, address.scale); + m_assembler.addu(addrTempRegister, addrTempRegister, address.base); + m_assembler.lw(dest, addrTempRegister, address.offset); + } else { + /* + sll addrTemp, address.index, address.scale + addu addrTemp, addrTemp, address.base + lui immTemp, (address.offset + 0x8000) >> 16 + addu addrTemp, addrTemp, immTemp + lw dest, (address.offset & 0xffff)(at) + */ + m_assembler.sll(addrTempRegister, address.index, address.scale); + m_assembler.addu(addrTempRegister, addrTempRegister, address.base); + m_assembler.lui(immTempRegister, (address.offset + 0x8000) >> 16); + m_assembler.addu(addrTempRegister, addrTempRegister, + immTempRegister); + m_assembler.lw(dest, addrTempRegister, address.offset); + } + } + + void load32WithUnalignedHalfWords(BaseIndex address, RegisterID dest) + { + if (address.offset >= -32768 && address.offset <= 32764 + && !m_fixedWidth) { + /* + sll addrTemp, address.index, address.scale + addu addrTemp, addrTemp, address.base + (Big-Endian) + lwl dest, address.offset(addrTemp) + lwr dest, address.offset+3(addrTemp) + (Little-Endian) + lwl dest, address.offset+3(addrTemp) + lwr dest, address.offset(addrTemp) + */ + m_assembler.sll(addrTempRegister, address.index, address.scale); + m_assembler.addu(addrTempRegister, addrTempRegister, address.base); +#if CPU(BIG_ENDIAN) + m_assembler.lwl(dest, addrTempRegister, address.offset); + m_assembler.lwr(dest, addrTempRegister, address.offset + 3); +#else + m_assembler.lwl(dest, addrTempRegister, address.offset + 3); + m_assembler.lwr(dest, addrTempRegister, address.offset); + +#endif + } else { + /* + sll addrTemp, address.index, address.scale + addu addrTemp, addrTemp, address.base + lui immTemp, address.offset >> 16 + ori immTemp, immTemp, address.offset & 0xffff + addu addrTemp, addrTemp, immTemp + (Big-Endian) + lw dest, 0(at) + lw dest, 3(at) + (Little-Endian) + lw dest, 3(at) + lw dest, 0(at) + */ + m_assembler.sll(addrTempRegister, address.index, address.scale); + m_assembler.addu(addrTempRegister, addrTempRegister, address.base); + m_assembler.lui(immTempRegister, address.offset >> 16); + m_assembler.ori(immTempRegister, immTempRegister, address.offset); + m_assembler.addu(addrTempRegister, addrTempRegister, + immTempRegister); +#if CPU(BIG_ENDIAN) + m_assembler.lwl(dest, addrTempRegister, 0); + m_assembler.lwr(dest, addrTempRegister, 3); +#else + m_assembler.lwl(dest, addrTempRegister, 3); + m_assembler.lwr(dest, addrTempRegister, 0); +#endif + } + } + + void load32(void* address, RegisterID dest) + { + /* + li addrTemp, address + lw dest, 0(addrTemp) + */ + move(ImmPtr(address), addrTempRegister); + m_assembler.lw(dest, addrTempRegister, 0); + } + + DataLabel32 load32WithAddressOffsetPatch(Address address, RegisterID dest) + { + m_fixedWidth = true; + /* + lui addrTemp, address.offset >> 16 + ori addrTemp, addrTemp, address.offset & 0xffff + addu addrTemp, addrTemp, address.base + lw dest, 0(addrTemp) + */ + DataLabel32 dataLabel(this); + move(Imm32(address.offset), addrTempRegister); + m_assembler.addu(addrTempRegister, addrTempRegister, address.base); + m_assembler.lw(dest, addrTempRegister, 0); + m_fixedWidth = false; + return dataLabel; + } + + Label loadPtrWithPatchToLEA(Address address, RegisterID dest) + { + m_fixedWidth = true; + /* + lui addrTemp, address.offset >> 16 + ori addrTemp, addrTemp, address.offset & 0xffff + addu addrTemp, addrTemp, address.base + lw dest, 0(addrTemp) + */ + Label label(this); + move(Imm32(address.offset), addrTempRegister); + m_assembler.addu(addrTempRegister, addrTempRegister, address.base); + m_assembler.lw(dest, addrTempRegister, 0); + m_fixedWidth = false; + return label; + } + + Label loadPtrWithAddressOffsetPatch(Address address, RegisterID dest) + { + return loadPtrWithPatchToLEA(address, dest); + } + + /* Need to use zero-extened load half-word for load16. */ + void load16(BaseIndex address, RegisterID dest) + { + if (address.offset >= -32768 && address.offset <= 32767 + && !m_fixedWidth) { + /* + sll addrTemp, address.index, address.scale + addu addrTemp, addrTemp, address.base + lhu dest, address.offset(addrTemp) + */ + m_assembler.sll(addrTempRegister, address.index, address.scale); + m_assembler.addu(addrTempRegister, addrTempRegister, address.base); + m_assembler.lhu(dest, addrTempRegister, address.offset); + } else { + /* + sll addrTemp, address.index, address.scale + addu addrTemp, addrTemp, address.base + lui immTemp, (address.offset + 0x8000) >> 16 + addu addrTemp, addrTemp, immTemp + lhu dest, (address.offset & 0xffff)(addrTemp) + */ + m_assembler.sll(addrTempRegister, address.index, address.scale); + m_assembler.addu(addrTempRegister, addrTempRegister, address.base); + m_assembler.lui(immTempRegister, (address.offset + 0x8000) >> 16); + m_assembler.addu(addrTempRegister, addrTempRegister, + immTempRegister); + m_assembler.lhu(dest, addrTempRegister, address.offset); + } + } + + DataLabel32 store32WithAddressOffsetPatch(RegisterID src, Address address) + { + m_fixedWidth = true; + /* + lui addrTemp, address.offset >> 16 + ori addrTemp, addrTemp, address.offset & 0xffff + addu addrTemp, addrTemp, address.base + sw src, 0(addrTemp) + */ + DataLabel32 dataLabel(this); + move(Imm32(address.offset), addrTempRegister); + m_assembler.addu(addrTempRegister, addrTempRegister, address.base); + m_assembler.sw(src, addrTempRegister, 0); + m_fixedWidth = false; + return dataLabel; + } + + void store32(RegisterID src, ImplicitAddress address) + { + if (address.offset >= -32768 && address.offset <= 32767 + && !m_fixedWidth) + m_assembler.sw(src, address.base, address.offset); + else { + /* + lui addrTemp, (offset + 0x8000) >> 16 + addu addrTemp, addrTemp, base + sw src, (offset & 0xffff)(addrTemp) + */ + m_assembler.lui(addrTempRegister, (address.offset + 0x8000) >> 16); + m_assembler.addu(addrTempRegister, addrTempRegister, address.base); + m_assembler.sw(src, addrTempRegister, address.offset); + } + } + + void store32(RegisterID src, BaseIndex address) + { + if (address.offset >= -32768 && address.offset <= 32767 + && !m_fixedWidth) { + /* + sll addrTemp, address.index, address.scale + addu addrTemp, addrTemp, address.base + sw src, address.offset(addrTemp) + */ + m_assembler.sll(addrTempRegister, address.index, address.scale); + m_assembler.addu(addrTempRegister, addrTempRegister, address.base); + m_assembler.sw(src, addrTempRegister, address.offset); + } else { + /* + sll addrTemp, address.index, address.scale + addu addrTemp, addrTemp, address.base + lui immTemp, (address.offset + 0x8000) >> 16 + addu addrTemp, addrTemp, immTemp + sw src, (address.offset & 0xffff)(at) + */ + m_assembler.sll(addrTempRegister, address.index, address.scale); + m_assembler.addu(addrTempRegister, addrTempRegister, address.base); + m_assembler.lui(immTempRegister, (address.offset + 0x8000) >> 16); + m_assembler.addu(addrTempRegister, addrTempRegister, + immTempRegister); + m_assembler.sw(src, addrTempRegister, address.offset); + } + } + + void store32(Imm32 imm, ImplicitAddress address) + { + if (address.offset >= -32768 && address.offset <= 32767 + && !m_fixedWidth) { + if (!imm.m_isPointer && !imm.m_value) + m_assembler.sw(MIPSRegisters::zero, address.base, + address.offset); + else { + move(imm, immTempRegister); + m_assembler.sw(immTempRegister, address.base, address.offset); + } + } else { + /* + lui addrTemp, (offset + 0x8000) >> 16 + addu addrTemp, addrTemp, base + sw immTemp, (offset & 0xffff)(addrTemp) + */ + m_assembler.lui(addrTempRegister, (address.offset + 0x8000) >> 16); + m_assembler.addu(addrTempRegister, addrTempRegister, address.base); + if (!imm.m_isPointer && !imm.m_value && !m_fixedWidth) + m_assembler.sw(MIPSRegisters::zero, addrTempRegister, + address.offset); + else { + move(imm, immTempRegister); + m_assembler.sw(immTempRegister, addrTempRegister, + address.offset); + } + } + } + + void store32(RegisterID src, void* address) + { + /* + li addrTemp, address + sw src, 0(addrTemp) + */ + move(ImmPtr(address), addrTempRegister); + m_assembler.sw(src, addrTempRegister, 0); + } + + void store32(Imm32 imm, void* address) + { + /* + li immTemp, imm + li addrTemp, address + sw src, 0(addrTemp) + */ + if (!imm.m_isPointer && !imm.m_value && !m_fixedWidth) { + move(ImmPtr(address), addrTempRegister); + m_assembler.sw(MIPSRegisters::zero, addrTempRegister, 0); + } else { + move(imm, immTempRegister); + move(ImmPtr(address), addrTempRegister); + m_assembler.sw(immTempRegister, addrTempRegister, 0); + } + } + + // Floating-point operations: + + bool supportsFloatingPoint() const + { +#if WTF_MIPS_DOUBLE_FLOAT + return true; +#else + return false; +#endif + } + + bool supportsFloatingPointTruncate() const + { +#if WTF_MIPS_DOUBLE_FLOAT && WTF_MIPS_ISA_AT_LEAST(2) + return true; +#else + return false; +#endif + } + + // Stack manipulation operations: + // + // The ABI is assumed to provide a stack abstraction to memory, + // containing machine word sized units of data. Push and pop + // operations add and remove a single register sized unit of data + // to or from the stack. Peek and poke operations read or write + // values on the stack, without moving the current stack position. + + void pop(RegisterID dest) + { + m_assembler.lw(dest, MIPSRegisters::sp, 0); + m_assembler.addiu(MIPSRegisters::sp, MIPSRegisters::sp, 4); + } + + void push(RegisterID src) + { + m_assembler.addiu(MIPSRegisters::sp, MIPSRegisters::sp, -4); + m_assembler.sw(src, MIPSRegisters::sp, 0); + } + + void push(Address address) + { + load32(address, dataTempRegister); + push(dataTempRegister); + } + + void push(Imm32 imm) + { + move(imm, immTempRegister); + push(immTempRegister); + } + + // Register move operations: + // + // Move values in registers. + + void move(Imm32 imm, RegisterID dest) + { + if (!imm.m_isPointer && !imm.m_value && !m_fixedWidth) + move(MIPSRegisters::zero, dest); + else if (imm.m_isPointer || m_fixedWidth) { + m_assembler.lui(dest, imm.m_value >> 16); + m_assembler.ori(dest, dest, imm.m_value); + } else + m_assembler.li(dest, imm.m_value); + } + + void move(RegisterID src, RegisterID dest) + { + if (src != dest || m_fixedWidth) + m_assembler.move(dest, src); + } + + void move(ImmPtr imm, RegisterID dest) + { + move(Imm32(imm), dest); + } + + void swap(RegisterID reg1, RegisterID reg2) + { + move(reg1, immTempRegister); + move(reg2, reg1); + move(immTempRegister, reg2); + } + + void signExtend32ToPtr(RegisterID src, RegisterID dest) + { + if (src != dest || m_fixedWidth) + move(src, dest); + } + + void zeroExtend32ToPtr(RegisterID src, RegisterID dest) + { + if (src != dest || m_fixedWidth) + move(src, dest); + } + + // Forwards / external control flow operations: + // + // This set of jump and conditional branch operations return a Jump + // object which may linked at a later point, allow forwards jump, + // or jumps that will require external linkage (after the code has been + // relocated). + // + // For branches, signed <, >, <= and >= are denoted as l, g, le, and ge + // respecitvely, for unsigned comparisons the names b, a, be, and ae are + // used (representing the names 'below' and 'above'). + // + // Operands to the comparision are provided in the expected order, e.g. + // jle32(reg1, Imm32(5)) will branch if the value held in reg1, when + // treated as a signed 32bit value, is less than or equal to 5. + // + // jz and jnz test whether the first operand is equal to zero, and take + // an optional second operand of a mask under which to perform the test. + + Jump branch8(Condition cond, Address left, Imm32 right) + { + // Make sure the immediate value is unsigned 8 bits. + ASSERT(!(right.m_value & 0xFFFFFF00)); + load8(left, dataTempRegister); + move(right, immTempRegister); + return branch32(cond, dataTempRegister, immTempRegister); + } + + Jump branch32(Condition cond, RegisterID left, RegisterID right) + { + if (cond == Equal || cond == Zero) + return branchEqual(left, right); + if (cond == NotEqual || cond == NonZero) + return branchNotEqual(left, right); + if (cond == Above) { + m_assembler.sltu(cmpTempRegister, right, left); + return branchNotEqual(cmpTempRegister, MIPSRegisters::zero); + } + if (cond == AboveOrEqual) { + m_assembler.sltu(cmpTempRegister, left, right); + return branchEqual(cmpTempRegister, MIPSRegisters::zero); + } + if (cond == Below) { + m_assembler.sltu(cmpTempRegister, left, right); + return branchNotEqual(cmpTempRegister, MIPSRegisters::zero); + } + if (cond == BelowOrEqual) { + m_assembler.sltu(cmpTempRegister, right, left); + return branchEqual(cmpTempRegister, MIPSRegisters::zero); + } + if (cond == GreaterThan) { + m_assembler.slt(cmpTempRegister, right, left); + return branchNotEqual(cmpTempRegister, MIPSRegisters::zero); + } + if (cond == GreaterThanOrEqual) { + m_assembler.slt(cmpTempRegister, left, right); + return branchEqual(cmpTempRegister, MIPSRegisters::zero); + } + if (cond == LessThan) { + m_assembler.slt(cmpTempRegister, left, right); + return branchNotEqual(cmpTempRegister, MIPSRegisters::zero); + } + if (cond == LessThanOrEqual) { + m_assembler.slt(cmpTempRegister, right, left); + return branchEqual(cmpTempRegister, MIPSRegisters::zero); + } + if (cond == Overflow) { + /* + xor cmpTemp, left, right + bgez No_overflow, cmpTemp # same sign bit -> no overflow + nop + subu cmpTemp, left, right + xor cmpTemp, cmpTemp, left + bgez No_overflow, cmpTemp # same sign bit -> no overflow + nop + b Overflow + nop + nop + nop + nop + nop + No_overflow: + */ + m_assembler.xorInsn(cmpTempRegister, left, right); + m_assembler.bgez(cmpTempRegister, 11); + m_assembler.nop(); + m_assembler.subu(cmpTempRegister, left, right); + m_assembler.xorInsn(cmpTempRegister, cmpTempRegister, left); + m_assembler.bgez(cmpTempRegister, 7); + m_assembler.nop(); + return jump(); + } + if (cond == Signed) { + m_assembler.subu(cmpTempRegister, left, right); + // Check if the result is negative. + m_assembler.slt(cmpTempRegister, cmpTempRegister, + MIPSRegisters::zero); + return branchNotEqual(cmpTempRegister, MIPSRegisters::zero); + } + ASSERT(0); + + return Jump(); + } + + Jump branch32(Condition cond, RegisterID left, Imm32 right) + { + move(right, immTempRegister); + return branch32(cond, left, immTempRegister); + } + + Jump branch32(Condition cond, RegisterID left, Address right) + { + load32(right, dataTempRegister); + return branch32(cond, left, dataTempRegister); + } + + Jump branch32(Condition cond, Address left, RegisterID right) + { + load32(left, dataTempRegister); + return branch32(cond, dataTempRegister, right); + } + + Jump branch32(Condition cond, Address left, Imm32 right) + { + load32(left, dataTempRegister); + move(right, immTempRegister); + return branch32(cond, dataTempRegister, immTempRegister); + } + + Jump branch32(Condition cond, BaseIndex left, Imm32 right) + { + load32(left, dataTempRegister); + // Be careful that the previous load32() uses immTempRegister. + // So, we need to put move() after load32(). + move(right, immTempRegister); + return branch32(cond, dataTempRegister, immTempRegister); + } + + Jump branch32WithUnalignedHalfWords(Condition cond, BaseIndex left, Imm32 right) + { + load32WithUnalignedHalfWords(left, dataTempRegister); + // Be careful that the previous load32WithUnalignedHalfWords() + // uses immTempRegister. + // So, we need to put move() after load32WithUnalignedHalfWords(). + move(right, immTempRegister); + return branch32(cond, dataTempRegister, immTempRegister); + } + + Jump branch32(Condition cond, AbsoluteAddress left, RegisterID right) + { + load32(left.m_ptr, dataTempRegister); + return branch32(cond, dataTempRegister, right); + } + + Jump branch32(Condition cond, AbsoluteAddress left, Imm32 right) + { + load32(left.m_ptr, dataTempRegister); + move(right, immTempRegister); + return branch32(cond, dataTempRegister, immTempRegister); + } + + Jump branch16(Condition cond, BaseIndex left, RegisterID right) + { + load16(left, dataTempRegister); + return branch32(cond, dataTempRegister, right); + } + + Jump branch16(Condition cond, BaseIndex left, Imm32 right) + { + ASSERT(!(right.m_value & 0xFFFF0000)); + load16(left, dataTempRegister); + // Be careful that the previous load16() uses immTempRegister. + // So, we need to put move() after load16(). + move(right, immTempRegister); + return branch32(cond, dataTempRegister, immTempRegister); + } + + Jump branchTest32(Condition cond, RegisterID reg, RegisterID mask) + { + ASSERT((cond == Zero) || (cond == NonZero)); + m_assembler.andInsn(cmpTempRegister, reg, mask); + if (cond == Zero) + return branchEqual(cmpTempRegister, MIPSRegisters::zero); + return branchNotEqual(cmpTempRegister, MIPSRegisters::zero); + } + + Jump branchTest32(Condition cond, RegisterID reg, Imm32 mask = Imm32(-1)) + { + ASSERT((cond == Zero) || (cond == NonZero)); + if (mask.m_value == -1 && !m_fixedWidth) { + if (cond == Zero) + return branchEqual(reg, MIPSRegisters::zero); + return branchNotEqual(reg, MIPSRegisters::zero); + } + move(mask, immTempRegister); + return branchTest32(cond, reg, immTempRegister); + } + + Jump branchTest32(Condition cond, Address address, Imm32 mask = Imm32(-1)) + { + load32(address, dataTempRegister); + return branchTest32(cond, dataTempRegister, mask); + } + + Jump branchTest32(Condition cond, BaseIndex address, Imm32 mask = Imm32(-1)) + { + load32(address, dataTempRegister); + return branchTest32(cond, dataTempRegister, mask); + } + + Jump branchTest8(Condition cond, Address address, Imm32 mask = Imm32(-1)) + { + load8(address, dataTempRegister); + return branchTest32(cond, dataTempRegister, mask); + } + + Jump jump() + { + return branchEqual(MIPSRegisters::zero, MIPSRegisters::zero); + } + + void jump(RegisterID target) + { + m_assembler.jr(target); + m_assembler.nop(); + } + + void jump(Address address) + { + m_fixedWidth = true; + load32(address, MIPSRegisters::t9); + m_assembler.jr(MIPSRegisters::t9); + m_assembler.nop(); + m_fixedWidth = false; + } + + // Arithmetic control flow operations: + // + // This set of conditional branch operations branch based + // on the result of an arithmetic operation. The operation + // is performed as normal, storing the result. + // + // * jz operations branch if the result is zero. + // * jo operations branch if the (signed) arithmetic + // operation caused an overflow to occur. + + Jump branchAdd32(Condition cond, RegisterID src, RegisterID dest) + { + ASSERT((cond == Overflow) || (cond == Signed) || (cond == Zero) || (cond == NonZero)); + if (cond == Overflow) { + /* + move dest, dataTemp + xor cmpTemp, dataTemp, src + bltz cmpTemp, No_overflow # diff sign bit -> no overflow + addu dest, dataTemp, src + xor cmpTemp, dest, dataTemp + bgez cmpTemp, No_overflow # same sign big -> no overflow + nop + b Overflow + nop + nop + nop + nop + nop + No_overflow: + */ + move(dest, dataTempRegister); + m_assembler.xorInsn(cmpTempRegister, dataTempRegister, src); + m_assembler.bltz(cmpTempRegister, 10); + m_assembler.addu(dest, dataTempRegister, src); + m_assembler.xorInsn(cmpTempRegister, dest, dataTempRegister); + m_assembler.bgez(cmpTempRegister, 7); + m_assembler.nop(); + return jump(); + } + if (cond == Signed) { + add32(src, dest); + // Check if dest is negative. + m_assembler.slt(cmpTempRegister, dest, MIPSRegisters::zero); + return branchNotEqual(cmpTempRegister, MIPSRegisters::zero); + } + if (cond == Zero) { + add32(src, dest); + return branchEqual(dest, MIPSRegisters::zero); + } + if (cond == NonZero) { + add32(src, dest); + return branchNotEqual(dest, MIPSRegisters::zero); + } + ASSERT(0); + return Jump(); + } + + Jump branchAdd32(Condition cond, Imm32 imm, RegisterID dest) + { + move(imm, immTempRegister); + return branchAdd32(cond, immTempRegister, dest); + } + + Jump branchMul32(Condition cond, RegisterID src, RegisterID dest) + { + ASSERT((cond == Overflow) || (cond == Signed) || (cond == Zero) || (cond == NonZero)); + if (cond == Overflow) { + /* + mult src, dest + mfhi dataTemp + mflo dest + sra addrTemp, dest, 31 + beq dataTemp, addrTemp, No_overflow # all sign bits (bit 63 to bit 31) are the same -> no overflow + nop + b Overflow + nop + nop + nop + nop + nop + No_overflow: + */ + m_assembler.mult(src, dest); + m_assembler.mfhi(dataTempRegister); + m_assembler.mflo(dest); + m_assembler.sra(addrTempRegister, dest, 31); + m_assembler.beq(dataTempRegister, addrTempRegister, 7); + m_assembler.nop(); + return jump(); + } + if (cond == Signed) { + mul32(src, dest); + // Check if dest is negative. + m_assembler.slt(cmpTempRegister, dest, MIPSRegisters::zero); + return branchNotEqual(cmpTempRegister, MIPSRegisters::zero); + } + if (cond == Zero) { + mul32(src, dest); + return branchEqual(dest, MIPSRegisters::zero); + } + if (cond == NonZero) { + mul32(src, dest); + return branchNotEqual(dest, MIPSRegisters::zero); + } + ASSERT(0); + return Jump(); + } + + Jump branchMul32(Condition cond, Imm32 imm, RegisterID src, RegisterID dest) + { + move(imm, immTempRegister); + move(src, dest); + return branchMul32(cond, immTempRegister, dest); + } + + Jump branchSub32(Condition cond, RegisterID src, RegisterID dest) + { + ASSERT((cond == Overflow) || (cond == Signed) || (cond == Zero) || (cond == NonZero)); + if (cond == Overflow) { + /* + move dest, dataTemp + xor cmpTemp, dataTemp, src + bgez cmpTemp, No_overflow # same sign bit -> no overflow + subu dest, dataTemp, src + xor cmpTemp, dest, dataTemp + bgez cmpTemp, No_overflow # same sign bit -> no overflow + nop + b Overflow + nop + nop + nop + nop + nop + No_overflow: + */ + move(dest, dataTempRegister); + m_assembler.xorInsn(cmpTempRegister, dataTempRegister, src); + m_assembler.bgez(cmpTempRegister, 10); + m_assembler.subu(dest, dataTempRegister, src); + m_assembler.xorInsn(cmpTempRegister, dest, dataTempRegister); + m_assembler.bgez(cmpTempRegister, 7); + m_assembler.nop(); + return jump(); + } + if (cond == Signed) { + sub32(src, dest); + // Check if dest is negative. + m_assembler.slt(cmpTempRegister, dest, MIPSRegisters::zero); + return branchNotEqual(cmpTempRegister, MIPSRegisters::zero); + } + if (cond == Zero) { + sub32(src, dest); + return branchEqual(dest, MIPSRegisters::zero); + } + if (cond == NonZero) { + sub32(src, dest); + return branchNotEqual(dest, MIPSRegisters::zero); + } + ASSERT(0); + return Jump(); + } + + Jump branchSub32(Condition cond, Imm32 imm, RegisterID dest) + { + move(imm, immTempRegister); + return branchSub32(cond, immTempRegister, dest); + } + + // Miscellaneous operations: + + void breakpoint() + { + m_assembler.bkpt(); + } + + Call nearCall() + { + /* We need two words for relaxation. */ + m_assembler.nop(); + m_assembler.nop(); + m_assembler.jal(); + m_assembler.nop(); + return Call(m_assembler.newJmpSrc(), Call::LinkableNear); + } + + Call call() + { + m_assembler.lui(MIPSRegisters::t9, 0); + m_assembler.ori(MIPSRegisters::t9, MIPSRegisters::t9, 0); + m_assembler.jalr(MIPSRegisters::t9); + m_assembler.nop(); + return Call(m_assembler.newJmpSrc(), Call::Linkable); + } + + Call call(RegisterID target) + { + m_assembler.jalr(target); + m_assembler.nop(); + return Call(m_assembler.newJmpSrc(), Call::None); + } + + Call call(Address address) + { + m_fixedWidth = true; + load32(address, MIPSRegisters::t9); + m_assembler.jalr(MIPSRegisters::t9); + m_assembler.nop(); + m_fixedWidth = false; + return Call(m_assembler.newJmpSrc(), Call::None); + } + + void ret() + { + m_assembler.jr(MIPSRegisters::ra); + m_assembler.nop(); + } + + void set32(Condition cond, RegisterID left, RegisterID right, RegisterID dest) + { + if (cond == Equal || cond == Zero) { + m_assembler.xorInsn(dest, left, right); + m_assembler.sltiu(dest, dest, 1); + } else if (cond == NotEqual || cond == NonZero) { + m_assembler.xorInsn(dest, left, right); + m_assembler.sltu(dest, MIPSRegisters::zero, dest); + } else if (cond == Above) + m_assembler.sltu(dest, right, left); + else if (cond == AboveOrEqual) { + m_assembler.sltu(dest, left, right); + m_assembler.xori(dest, dest, 1); + } else if (cond == Below) + m_assembler.sltu(dest, left, right); + else if (cond == BelowOrEqual) { + m_assembler.sltu(dest, right, left); + m_assembler.xori(dest, dest, 1); + } else if (cond == GreaterThan) + m_assembler.slt(dest, right, left); + else if (cond == GreaterThanOrEqual) { + m_assembler.slt(dest, left, right); + m_assembler.xori(dest, dest, 1); + } else if (cond == LessThan) + m_assembler.slt(dest, left, right); + else if (cond == LessThanOrEqual) { + m_assembler.slt(dest, right, left); + m_assembler.xori(dest, dest, 1); + } else if (cond == Overflow) { + /* + xor cmpTemp, left, right + bgez Done, cmpTemp # same sign bit -> no overflow + move dest, 0 + subu cmpTemp, left, right + xor cmpTemp, cmpTemp, left # diff sign bit -> overflow + slt dest, cmpTemp, 0 + Done: + */ + m_assembler.xorInsn(cmpTempRegister, left, right); + m_assembler.bgez(cmpTempRegister, 4); + m_assembler.move(dest, MIPSRegisters::zero); + m_assembler.subu(cmpTempRegister, left, right); + m_assembler.xorInsn(cmpTempRegister, cmpTempRegister, left); + m_assembler.slt(dest, cmpTempRegister, MIPSRegisters::zero); + } else if (cond == Signed) { + m_assembler.subu(dest, left, right); + // Check if the result is negative. + m_assembler.slt(dest, dest, MIPSRegisters::zero); + } + } + + void set32(Condition cond, RegisterID left, Imm32 right, RegisterID dest) + { + move(right, immTempRegister); + set32(cond, left, immTempRegister, dest); + } + + void setTest8(Condition cond, Address address, Imm32 mask, RegisterID dest) + { + ASSERT((cond == Zero) || (cond == NonZero)); + load8(address, dataTempRegister); + if (mask.m_value == -1 && !m_fixedWidth) { + if (cond == Zero) + m_assembler.sltiu(dest, dataTempRegister, 1); + else + m_assembler.sltu(dest, MIPSRegisters::zero, dataTempRegister); + } else { + move(mask, immTempRegister); + m_assembler.andInsn(cmpTempRegister, dataTempRegister, + immTempRegister); + if (cond == Zero) + m_assembler.sltiu(dest, cmpTempRegister, 1); + else + m_assembler.sltu(dest, MIPSRegisters::zero, cmpTempRegister); + } + } + + void setTest32(Condition cond, Address address, Imm32 mask, RegisterID dest) + { + ASSERT((cond == Zero) || (cond == NonZero)); + load32(address, dataTempRegister); + if (mask.m_value == -1 && !m_fixedWidth) { + if (cond == Zero) + m_assembler.sltiu(dest, dataTempRegister, 1); + else + m_assembler.sltu(dest, MIPSRegisters::zero, dataTempRegister); + } else { + move(mask, immTempRegister); + m_assembler.andInsn(cmpTempRegister, dataTempRegister, + immTempRegister); + if (cond == Zero) + m_assembler.sltiu(dest, cmpTempRegister, 1); + else + m_assembler.sltu(dest, MIPSRegisters::zero, cmpTempRegister); + } + } + + DataLabel32 moveWithPatch(Imm32 imm, RegisterID dest) + { + m_fixedWidth = true; + DataLabel32 label(this); + move(imm, dest); + m_fixedWidth = false; + return label; + } + + DataLabelPtr moveWithPatch(ImmPtr initialValue, RegisterID dest) + { + m_fixedWidth = true; + DataLabelPtr label(this); + move(initialValue, dest); + m_fixedWidth = false; + return label; + } + + Jump branchPtrWithPatch(Condition cond, RegisterID left, DataLabelPtr& dataLabel, ImmPtr initialRightValue = ImmPtr(0)) + { + m_fixedWidth = true; + dataLabel = moveWithPatch(initialRightValue, immTempRegister); + Jump temp = branch32(cond, left, immTempRegister); + m_fixedWidth = false; + return temp; + } + + Jump branchPtrWithPatch(Condition cond, Address left, DataLabelPtr& dataLabel, ImmPtr initialRightValue = ImmPtr(0)) + { + m_fixedWidth = true; + load32(left, dataTempRegister); + dataLabel = moveWithPatch(initialRightValue, immTempRegister); + Jump temp = branch32(cond, dataTempRegister, immTempRegister); + m_fixedWidth = false; + return temp; + } + + DataLabelPtr storePtrWithPatch(ImmPtr initialValue, ImplicitAddress address) + { + m_fixedWidth = true; + DataLabelPtr dataLabel = moveWithPatch(initialValue, dataTempRegister); + store32(dataTempRegister, address); + m_fixedWidth = false; + return dataLabel; + } + + DataLabelPtr storePtrWithPatch(ImplicitAddress address) + { + return storePtrWithPatch(ImmPtr(0), address); + } + + Call tailRecursiveCall() + { + // Like a normal call, but don't update the returned address register + m_fixedWidth = true; + move(Imm32(0), MIPSRegisters::t9); + m_assembler.jr(MIPSRegisters::t9); + m_assembler.nop(); + m_fixedWidth = false; + return Call(m_assembler.newJmpSrc(), Call::Linkable); + } + + Call makeTailRecursiveCall(Jump oldJump) + { + oldJump.link(this); + return tailRecursiveCall(); + } + + void loadDouble(ImplicitAddress address, FPRegisterID dest) + { +#if WTF_MIPS_ISA(1) + /* + li addrTemp, address.offset + addu addrTemp, addrTemp, base + lwc1 dest, 0(addrTemp) + lwc1 dest+1, 4(addrTemp) + */ + move(Imm32(address.offset), addrTempRegister); + m_assembler.addu(addrTempRegister, addrTempRegister, address.base); + m_assembler.lwc1(dest, addrTempRegister, 0); + m_assembler.lwc1(FPRegisterID(dest + 1), addrTempRegister, 4); +#else + if (address.offset >= -32768 && address.offset <= 32767 + && !m_fixedWidth) { + m_assembler.ldc1(dest, address.base, address.offset); + } else { + /* + lui addrTemp, (offset + 0x8000) >> 16 + addu addrTemp, addrTemp, base + ldc1 dest, (offset & 0xffff)(addrTemp) + */ + m_assembler.lui(addrTempRegister, (address.offset + 0x8000) >> 16); + m_assembler.addu(addrTempRegister, addrTempRegister, address.base); + m_assembler.ldc1(dest, addrTempRegister, address.offset); + } +#endif + } + + void storeDouble(FPRegisterID src, ImplicitAddress address) + { +#if WTF_MIPS_ISA(1) + /* + li addrTemp, address.offset + addu addrTemp, addrTemp, base + swc1 dest, 0(addrTemp) + swc1 dest+1, 4(addrTemp) + */ + move(Imm32(address.offset), addrTempRegister); + m_assembler.addu(addrTempRegister, addrTempRegister, address.base); + m_assembler.swc1(src, addrTempRegister, 0); + m_assembler.swc1(FPRegisterID(src + 1), addrTempRegister, 4); +#else + if (address.offset >= -32768 && address.offset <= 32767 + && !m_fixedWidth) + m_assembler.sdc1(src, address.base, address.offset); + else { + /* + lui addrTemp, (offset + 0x8000) >> 16 + addu addrTemp, addrTemp, base + sdc1 src, (offset & 0xffff)(addrTemp) + */ + m_assembler.lui(addrTempRegister, (address.offset + 0x8000) >> 16); + m_assembler.addu(addrTempRegister, addrTempRegister, address.base); + m_assembler.sdc1(src, addrTempRegister, address.offset); + } +#endif + } + + void addDouble(FPRegisterID src, FPRegisterID dest) + { + m_assembler.addd(dest, dest, src); + } + + void addDouble(Address src, FPRegisterID dest) + { + loadDouble(src, fpTempRegister); + m_assembler.addd(dest, dest, fpTempRegister); + } + + void subDouble(FPRegisterID src, FPRegisterID dest) + { + m_assembler.subd(dest, dest, src); + } + + void subDouble(Address src, FPRegisterID dest) + { + loadDouble(src, fpTempRegister); + m_assembler.subd(dest, dest, fpTempRegister); + } + + void mulDouble(FPRegisterID src, FPRegisterID dest) + { + m_assembler.muld(dest, dest, src); + } + + void mulDouble(Address src, FPRegisterID dest) + { + loadDouble(src, fpTempRegister); + m_assembler.muld(dest, dest, fpTempRegister); + } + + void convertInt32ToDouble(RegisterID src, FPRegisterID dest) + { + m_assembler.mtc1(src, fpTempRegister); + m_assembler.cvtdw(dest, fpTempRegister); + } + + void insertRelaxationWords() + { + /* We need four words for relaxation. */ + m_assembler.beq(MIPSRegisters::zero, MIPSRegisters::zero, 3); // Jump over nops; + m_assembler.nop(); + m_assembler.nop(); + m_assembler.nop(); + } + + Jump branchTrue() + { + m_assembler.appendJump(); + m_assembler.bc1t(); + m_assembler.nop(); + insertRelaxationWords(); + return Jump(m_assembler.newJmpSrc()); + } + + Jump branchFalse() + { + m_assembler.appendJump(); + m_assembler.bc1f(); + m_assembler.nop(); + insertRelaxationWords(); + return Jump(m_assembler.newJmpSrc()); + } + + Jump branchEqual(RegisterID rs, RegisterID rt) + { + m_assembler.appendJump(); + m_assembler.beq(rs, rt, 0); + m_assembler.nop(); + insertRelaxationWords(); + return Jump(m_assembler.newJmpSrc()); + } + + Jump branchNotEqual(RegisterID rs, RegisterID rt) + { + m_assembler.appendJump(); + m_assembler.bne(rs, rt, 0); + m_assembler.nop(); + insertRelaxationWords(); + return Jump(m_assembler.newJmpSrc()); + } + + Jump branchDouble(DoubleCondition cond, FPRegisterID left, FPRegisterID right) + { + if (cond == DoubleEqual) { + m_assembler.ceqd(left, right); + return branchTrue(); + } + if (cond == DoubleNotEqual) { + m_assembler.ceqd(left, right); + return branchFalse(); // false + } + if (cond == DoubleGreaterThan) { + m_assembler.cngtd(left, right); + return branchFalse(); // false + } + if (cond == DoubleGreaterThanOrEqual) { + m_assembler.cnged(right, left); + return branchFalse(); // false + } + if (cond == DoubleLessThan) { + m_assembler.cltd(left, right); + return branchTrue(); + } + if (cond == DoubleLessThanOrEqual) { + m_assembler.cled(left, right); + return branchTrue(); + } + if (cond == DoubleEqualOrUnordered) { + m_assembler.cueqd(left, right); + return branchTrue(); + } + if (cond == DoubleGreaterThanOrUnordered) { + m_assembler.coled(left, right); + return branchFalse(); // false + } + if (cond == DoubleGreaterThanOrEqualOrUnordered) { + m_assembler.coltd(left, right); + return branchFalse(); // false + } + if (cond == DoubleLessThanOrUnordered) { + m_assembler.cultd(left, right); + return branchTrue(); + } + if (cond == DoubleLessThanOrEqualOrUnordered) { + m_assembler.culed(left, right); + return branchTrue(); + } + ASSERT(0); + + return Jump(); + } + + // Truncates 'src' to an integer, and places the resulting 'dest'. + // If the result is not representable as a 32 bit value, branch. + // May also branch for some values that are representable in 32 bits + // (specifically, in this case, INT_MAX 0x7fffffff). + Jump branchTruncateDoubleToInt32(FPRegisterID src, RegisterID dest) + { + m_assembler.truncwd(fpTempRegister, src); + m_assembler.mfc1(dest, fpTempRegister); + return branch32(Equal, dest, Imm32(0x7fffffff)); + } + +private: + // If m_fixedWidth is true, we will generate a fixed number of instructions. + // Otherwise, we can emit any number of instructions. + bool m_fixedWidth; + + friend class LinkBuffer; + friend class RepatchBuffer; + + static void linkCall(void* code, Call call, FunctionPtr function) + { + MIPSAssembler::linkCall(code, call.m_jmp, function.value()); + } + + static void repatchCall(CodeLocationCall call, CodeLocationLabel destination) + { + MIPSAssembler::relinkCall(call.dataLocation(), destination.executableAddress()); + } + + static void repatchCall(CodeLocationCall call, FunctionPtr destination) + { + MIPSAssembler::relinkCall(call.dataLocation(), destination.executableAddress()); + } + +}; + +} + +#endif // ENABLE(ASSEMBLER) && CPU(MIPS) + +#endif // MacroAssemblerMIPS_h diff --git a/assembler/MacroAssemblerX86.h b/assembler/MacroAssemblerX86.h index ca7c31a..0918996 100644 --- a/assembler/MacroAssemblerX86.h +++ b/assembler/MacroAssemblerX86.h @@ -26,8 +26,6 @@ #ifndef MacroAssemblerX86_h #define MacroAssemblerX86_h -#include - #if ENABLE(ASSEMBLER) && CPU(X86) #include "MacroAssemblerX86Common.h" @@ -89,7 +87,7 @@ public: m_assembler.movl_mr(address, dest); } - void loadDouble(void* address, FPRegisterID dest) + void loadDouble(const void* address, FPRegisterID dest) { ASSERT(isSSE2Present()); m_assembler.movsd_mr(address, dest); @@ -174,6 +172,7 @@ public: bool supportsFloatingPoint() const { return m_isSSE2Present; } // See comment on MacroAssemblerARMv7::supportsFloatingPointTruncate() bool supportsFloatingPointTruncate() const { return m_isSSE2Present; } + bool supportsFloatingPointSqrt() const { return m_isSSE2Present; } private: const bool m_isSSE2Present; diff --git a/assembler/MacroAssemblerX86Common.h b/assembler/MacroAssemblerX86Common.h index 449df86..cb86da7 100644 --- a/assembler/MacroAssemblerX86Common.h +++ b/assembler/MacroAssemblerX86Common.h @@ -26,8 +26,6 @@ #ifndef MacroAssemblerX86Common_h #define MacroAssemblerX86Common_h -#include - #if ENABLE(ASSEMBLER) #include "X86Assembler.h" @@ -41,6 +39,7 @@ class MacroAssemblerX86Common : public AbstractMacroAssembler { static const int DoubleConditionBits = DoubleConditionBitInvert | DoubleConditionBitSpecial; public: + typedef X86Assembler::FPRegisterID FPRegisterID; enum Condition { Equal = X86Assembler::ConditionE, @@ -251,6 +250,33 @@ public: { m_assembler.sarl_i8r(imm.m_value, dest); } + + void urshift32(RegisterID shift_amount, RegisterID dest) + { + // On x86 we can only shift by ecx; if asked to shift by another register we'll + // need rejig the shift amount into ecx first, and restore the registers afterwards. + if (shift_amount != X86Registers::ecx) { + swap(shift_amount, X86Registers::ecx); + + // E.g. transform "shrl %eax, %eax" -> "xchgl %eax, %ecx; shrl %ecx, %ecx; xchgl %eax, %ecx" + if (dest == shift_amount) + m_assembler.shrl_CLr(X86Registers::ecx); + // E.g. transform "shrl %eax, %ecx" -> "xchgl %eax, %ecx; shrl %ecx, %eax; xchgl %eax, %ecx" + else if (dest == X86Registers::ecx) + m_assembler.shrl_CLr(shift_amount); + // E.g. transform "shrl %eax, %ebx" -> "xchgl %eax, %ecx; shrl %ecx, %ebx; xchgl %eax, %ecx" + else + m_assembler.shrl_CLr(dest); + + swap(shift_amount, X86Registers::ecx); + } else + m_assembler.shrl_CLr(dest); + } + + void urshift32(Imm32 imm, RegisterID dest) + { + m_assembler.shrl_i8r(imm.m_value, dest); + } void sub32(RegisterID src, RegisterID dest) { @@ -303,6 +329,10 @@ public: m_assembler.xorl_mr(src.offset, src.base, dest); } + void sqrtDouble(FPRegisterID src, FPRegisterID dst) + { + m_assembler.sqrtsd_rr(src, dst); + } // Memory access operations: // @@ -336,6 +366,11 @@ public: { m_assembler.movzwl_mr(address.offset, address.base, address.index, address.scale, dest); } + + void load16(Address address, RegisterID dest) + { + m_assembler.movzwl_mr(address.offset, address.base, dest); + } DataLabel32 store32WithAddressOffsetPatch(RegisterID src, Address address) { @@ -620,6 +655,12 @@ public: // an optional second operand of a mask under which to perform the test. public: + Jump branch8(Condition cond, Address left, Imm32 right) + { + m_assembler.cmpb_im(right.m_value, left.offset, left.base); + return Jump(m_assembler.jCC(x86Condition(cond))); + } + Jump branch32(Condition cond, RegisterID left, RegisterID right) { m_assembler.cmpl_rr(right, left); @@ -717,6 +758,26 @@ public: m_assembler.testl_i32m(mask.m_value, address.offset, address.base, address.index, address.scale); return Jump(m_assembler.jCC(x86Condition(cond))); } + + Jump branchTest8(Condition cond, Address address, Imm32 mask = Imm32(-1)) + { + ASSERT((cond == Zero) || (cond == NonZero)); + if (mask.m_value == -1) + m_assembler.cmpb_im(0, address.offset, address.base); + else + m_assembler.testb_im(mask.m_value, address.offset, address.base); + return Jump(m_assembler.jCC(x86Condition(cond))); + } + + Jump branchTest8(Condition cond, BaseIndex address, Imm32 mask = Imm32(-1)) + { + ASSERT((cond == Zero) || (cond == NonZero)); + if (mask.m_value == -1) + m_assembler.cmpb_im(0, address.offset, address.base, address.index, address.scale); + else + m_assembler.testb_im(mask.m_value, address.offset, address.base, address.index, address.scale); + return Jump(m_assembler.jCC(x86Condition(cond))); + } Jump jump() { @@ -836,6 +897,13 @@ public: return Jump(m_assembler.jCC(x86Condition(cond))); } + Jump branchNeg32(Condition cond, RegisterID srcDest) + { + ASSERT((cond == Overflow) || (cond == Zero) || (cond == NonZero)); + neg32(srcDest); + return Jump(m_assembler.jCC(x86Condition(cond))); + } + Jump branchOr32(Condition cond, RegisterID src, RegisterID dest) { ASSERT((cond == Signed) || (cond == Zero) || (cond == NonZero)); @@ -917,10 +985,11 @@ public: void setTest8(Condition cond, Address address, Imm32 mask, RegisterID dest) { if (mask.m_value == -1) - m_assembler.cmpl_im(0, address.offset, address.base); + m_assembler.cmpb_im(0, address.offset, address.base); else - m_assembler.testl_i32m(mask.m_value, address.offset, address.base); + m_assembler.testb_im(mask.m_value, address.offset, address.base); m_assembler.setCC_r(x86Condition(cond), dest); + m_assembler.movzbl_rr(dest, dest); } void setTest32(Condition cond, Address address, Imm32 mask, RegisterID dest) diff --git a/assembler/MacroAssemblerX86_64.h b/assembler/MacroAssemblerX86_64.h index ec93f8c..168c93f 100644 --- a/assembler/MacroAssemblerX86_64.h +++ b/assembler/MacroAssemblerX86_64.h @@ -26,8 +26,6 @@ #ifndef MacroAssemblerX86_64_h #define MacroAssemblerX86_64_h -#include - #if ENABLE(ASSEMBLER) && CPU(X86_64) #include "MacroAssemblerX86Common.h" @@ -88,7 +86,7 @@ public: } } - void loadDouble(void* address, FPRegisterID dest) + void loadDouble(const void* address, FPRegisterID dest) { move(ImmPtr(address), scratchRegister); loadDouble(scratchRegister, dest); @@ -411,6 +409,14 @@ public: return label; } + using MacroAssemblerX86Common::branchTest8; + Jump branchTest8(Condition cond, ExtendedAddress address, Imm32 mask = Imm32(-1)) + { + ImmPtr addr(reinterpret_cast(address.offset)); + MacroAssemblerX86Common::move(addr, scratchRegister); + return MacroAssemblerX86Common::branchTest8(cond, BaseIndex(scratchRegister, address.base, TimesOne), mask); + } + Label loadPtrWithPatchToLEA(Address address, RegisterID dest) { Label label(this); @@ -421,6 +427,7 @@ public: bool supportsFloatingPoint() const { return true; } // See comment on MacroAssemblerARMv7::supportsFloatingPointTruncate() bool supportsFloatingPointTruncate() const { return true; } + bool supportsFloatingPointSqrt() const { return true; } private: friend class LinkBuffer; diff --git a/assembler/RepatchBuffer.h b/assembler/RepatchBuffer.h index 89cbf06..72cf6b2 100644 --- a/assembler/RepatchBuffer.h +++ b/assembler/RepatchBuffer.h @@ -26,8 +26,6 @@ #ifndef RepatchBuffer_h #define RepatchBuffer_h -#include - #if ENABLE(ASSEMBLER) #include diff --git a/assembler/X86Assembler.h b/assembler/X86Assembler.h index ab3d05f..20d72f5 100644 --- a/assembler/X86Assembler.h +++ b/assembler/X86Assembler.h @@ -26,8 +26,6 @@ #ifndef X86Assembler_h #define X86Assembler_h -#include - #if ENABLE(ASSEMBLER) && (CPU(X86) || CPU(X86_64)) #include "AssemblerBuffer.h" @@ -130,6 +128,7 @@ private: PRE_SSE_66 = 0x66, OP_PUSH_Iz = 0x68, OP_IMUL_GvEvIz = 0x69, + OP_GROUP1_EbIb = 0x80, OP_GROUP1_EvIz = 0x81, OP_GROUP1_EvIb = 0x83, OP_TEST_EvGv = 0x85, @@ -168,6 +167,7 @@ private: OP2_MULSD_VsdWsd = 0x59, OP2_SUBSD_VsdWsd = 0x5C, OP2_DIVSD_VsdWsd = 0x5E, + OP2_SQRTSD_VsdWsd = 0x51, OP2_XORPD_VpdWpd = 0x57, OP2_MOVD_VdEd = 0x6E, OP2_MOVD_EdVd = 0x7E, @@ -201,6 +201,7 @@ private: GROUP1A_OP_POP = 0, GROUP2_OP_SHL = 4, + GROUP2_OP_SHR = 5, GROUP2_OP_SAR = 7, GROUP3_OP_TEST = 0, @@ -673,6 +674,21 @@ public: { m_formatter.oneByteOp(OP_GROUP2_EvCL, GROUP2_OP_SAR, dst); } + + void shrl_i8r(int imm, RegisterID dst) + { + if (imm == 1) + m_formatter.oneByteOp(OP_GROUP2_Ev1, GROUP2_OP_SHR, dst); + else { + m_formatter.oneByteOp(OP_GROUP2_EvIb, GROUP2_OP_SHR, dst); + m_formatter.immediate8(imm); + } + } + + void shrl_CLr(RegisterID dst) + { + m_formatter.oneByteOp(OP_GROUP2_EvCL, GROUP2_OP_SHR, dst); + } void shll_i8r(int imm, RegisterID dst) { @@ -760,7 +776,7 @@ public: m_formatter.oneByteOp(OP_GROUP1_EvIz, GROUP1_OP_CMP, dst); m_formatter.immediate32(imm); } - + void cmpl_im(int imm, int offset, RegisterID base) { if (CAN_SIGN_EXTEND_8_32(imm)) { @@ -771,6 +787,18 @@ public: m_formatter.immediate32(imm); } } + + void cmpb_im(int imm, int offset, RegisterID base) + { + m_formatter.oneByteOp(OP_GROUP1_EbIb, GROUP1_OP_CMP, base, offset); + m_formatter.immediate8(imm); + } + + void cmpb_im(int imm, int offset, RegisterID base, RegisterID index, int scale) + { + m_formatter.oneByteOp(OP_GROUP1_EbIb, GROUP1_OP_CMP, base, index, scale, offset); + m_formatter.immediate8(imm); + } void cmpl_im(int imm, int offset, RegisterID base, RegisterID index, int scale) { @@ -890,6 +918,18 @@ public: m_formatter.oneByteOp(OP_GROUP3_EvIz, GROUP3_OP_TEST, base, offset); m_formatter.immediate32(imm); } + + void testb_im(int imm, int offset, RegisterID base) + { + m_formatter.oneByteOp(OP_GROUP3_EbIb, GROUP3_OP_TEST, base, offset); + m_formatter.immediate8(imm); + } + + void testb_im(int imm, int offset, RegisterID base, RegisterID index, int scale) + { + m_formatter.oneByteOp(OP_GROUP3_EbIb, GROUP3_OP_TEST, base, index, scale, offset); + m_formatter.immediate8(imm); + } void testl_i32m(int imm, int offset, RegisterID base, RegisterID index, int scale) { @@ -1370,7 +1410,7 @@ public: } #if !CPU(X86_64) - void movsd_mr(void* address, XMMRegisterID dst) + void movsd_mr(const void* address, XMMRegisterID dst) { m_formatter.prefix(PRE_SSE_F2); m_formatter.twoByteOp(OP2_MOVSD_VsdWsd, (RegisterID)dst, address); @@ -1438,6 +1478,12 @@ public: m_formatter.twoByteOp(OP2_XORPD_VpdWpd, (RegisterID)dst, (RegisterID)src); } + void sqrtsd_rr(XMMRegisterID src, XMMRegisterID dst) + { + m_formatter.prefix(PRE_SSE_F2); + m_formatter.twoByteOp(OP2_SQRTSD_VsdWsd, (RegisterID)dst, (RegisterID)src); + } + // Misc instructions: void int3() @@ -1723,7 +1769,7 @@ private: } #if !CPU(X86_64) - void twoByteOp(TwoByteOpcodeID opcode, int reg, void* address) + void twoByteOp(TwoByteOpcodeID opcode, int reg, const void* address) { m_buffer.ensureSpace(maxInstructionSize); m_buffer.putByteUnchecked(OP_2BYTE_ESCAPE); @@ -2034,7 +2080,7 @@ private: } #if !CPU(X86_64) - void memoryModRM(int reg, void* address) + void memoryModRM(int reg, const void* address) { // noBase + ModRmMemoryNoDisp means noBase + ModRmMemoryDisp32! putModRm(ModRmMemoryNoDisp, reg, noBase); diff --git a/bytecode/CodeBlock.cpp b/bytecode/CodeBlock.cpp index fd56ece..8cefb1b 100644 --- a/bytecode/CodeBlock.cpp +++ b/bytecode/CodeBlock.cpp @@ -49,8 +49,8 @@ namespace JSC { static UString escapeQuotes(const UString& str) { UString result = str; - int pos = 0; - while ((pos = result.find('\"', pos)) >= 0) { + unsigned pos = 0; + while ((pos = result.find('\"', pos)) != UString::NotFound) { result = makeString(result.substr(0, pos), "\"\\\"\"", result.substr(pos + 1)); pos += 4; } @@ -141,7 +141,7 @@ void CodeBlock::printUnaryOp(ExecState* exec, int location, Vector: int r0 = (++it)->u.operand; int r1 = (++it)->u.operand; - printf("[%4d] %s\t\t %s, %s\n", location, op, registerName(exec, r0).c_str(), registerName(exec, r1).c_str()); + printf("[%4d] %s\t\t %s, %s\n", location, op, registerName(exec, r0).data(), registerName(exec, r1).data()); } void CodeBlock::printBinaryOp(ExecState* exec, int location, Vector::const_iterator& it, const char* op) const @@ -149,14 +149,14 @@ void CodeBlock::printBinaryOp(ExecState* exec, int location, Vector int r0 = (++it)->u.operand; int r1 = (++it)->u.operand; int r2 = (++it)->u.operand; - printf("[%4d] %s\t\t %s, %s, %s\n", location, op, registerName(exec, r0).c_str(), registerName(exec, r1).c_str(), registerName(exec, r2).c_str()); + printf("[%4d] %s\t\t %s, %s, %s\n", location, op, registerName(exec, r0).data(), registerName(exec, r1).data(), registerName(exec, r2).data()); } void CodeBlock::printConditionalJump(ExecState* exec, const Vector::const_iterator&, Vector::const_iterator& it, int location, const char* op) const { int r0 = (++it)->u.operand; int offset = (++it)->u.operand; - printf("[%4d] %s\t\t %s, %d(->%d)\n", location, op, registerName(exec, r0).c_str(), offset, location + offset); + printf("[%4d] %s\t\t %s, %d(->%d)\n", location, op, registerName(exec, r0).data(), offset, location + offset); } void CodeBlock::printGetByIdOp(ExecState* exec, int location, Vector::const_iterator& it, const char* op) const @@ -164,7 +164,7 @@ void CodeBlock::printGetByIdOp(ExecState* exec, int location, Vectoru.operand; int r1 = (++it)->u.operand; int id0 = (++it)->u.operand; - printf("[%4d] %s\t %s, %s, %s\n", location, op, registerName(exec, r0).c_str(), registerName(exec, r1).c_str(), idName(id0, m_identifiers[id0]).c_str()); + printf("[%4d] %s\t %s, %s, %s\n", location, op, registerName(exec, r0).data(), registerName(exec, r1).data(), idName(id0, m_identifiers[id0]).data()); it += 4; } @@ -173,14 +173,14 @@ void CodeBlock::printPutByIdOp(ExecState* exec, int location, Vectoru.operand; int id0 = (++it)->u.operand; int r1 = (++it)->u.operand; - printf("[%4d] %s\t %s, %s, %s\n", location, op, registerName(exec, r0).c_str(), idName(id0, m_identifiers[id0]).c_str(), registerName(exec, r1).c_str()); + printf("[%4d] %s\t %s, %s, %s\n", location, op, registerName(exec, r0).data(), idName(id0, m_identifiers[id0]).data(), registerName(exec, r1).data()); it += 4; } #if ENABLE(JIT) static bool isGlobalResolve(OpcodeID opcodeID) { - return opcodeID == op_resolve_global; + return opcodeID == op_resolve_global || opcodeID == op_resolve_global_dynamic; } static bool isPropertyAccess(OpcodeID opcodeID) @@ -223,32 +223,32 @@ static unsigned instructionOffsetForNth(ExecState* exec, const VectorgetOpcode(op_get_by_id_proto)) { - printf(" [%4d] %s: %s, %s\n", instructionOffset, "get_by_id_proto", pointerToSourceString(vPC[4].u.structure).UTF8String().c_str(), pointerToSourceString(vPC[5].u.structure).UTF8String().c_str()); + printf(" [%4d] %s: %s, %s\n", instructionOffset, "get_by_id_proto", pointerToSourceString(vPC[4].u.structure).UTF8String().data(), pointerToSourceString(vPC[5].u.structure).UTF8String().data()); return; } if (vPC[0].u.opcode == interpreter->getOpcode(op_put_by_id_transition)) { - printf(" [%4d] %s: %s, %s, %s\n", instructionOffset, "put_by_id_transition", pointerToSourceString(vPC[4].u.structure).UTF8String().c_str(), pointerToSourceString(vPC[5].u.structure).UTF8String().c_str(), pointerToSourceString(vPC[6].u.structureChain).UTF8String().c_str()); + printf(" [%4d] %s: %s, %s, %s\n", instructionOffset, "put_by_id_transition", pointerToSourceString(vPC[4].u.structure).UTF8String().data(), pointerToSourceString(vPC[5].u.structure).UTF8String().data(), pointerToSourceString(vPC[6].u.structureChain).UTF8String().data()); return; } if (vPC[0].u.opcode == interpreter->getOpcode(op_get_by_id_chain)) { - printf(" [%4d] %s: %s, %s\n", instructionOffset, "get_by_id_chain", pointerToSourceString(vPC[4].u.structure).UTF8String().c_str(), pointerToSourceString(vPC[5].u.structureChain).UTF8String().c_str()); + printf(" [%4d] %s: %s, %s\n", instructionOffset, "get_by_id_chain", pointerToSourceString(vPC[4].u.structure).UTF8String().data(), pointerToSourceString(vPC[5].u.structureChain).UTF8String().data()); return; } if (vPC[0].u.opcode == interpreter->getOpcode(op_put_by_id)) { @@ -317,6 +317,10 @@ void CodeBlock::printStructures(const Instruction* vPC) const printStructure("resolve_global", vPC, 4); return; } + if (vPC[0].u.opcode == interpreter->getOpcode(op_resolve_global_dynamic)) { + printStructure("resolve_global_dynamic", vPC, 4); + return; + } // These m_instructions doesn't ref Structures. ASSERT(vPC[0].u.opcode == interpreter->getOpcode(op_get_by_id_generic) || vPC[0].u.opcode == interpreter->getOpcode(op_put_by_id_generic) || vPC[0].u.opcode == interpreter->getOpcode(op_call) || vPC[0].u.opcode == interpreter->getOpcode(op_call_eval) || vPC[0].u.opcode == interpreter->getOpcode(op_construct)); @@ -482,7 +486,7 @@ void CodeBlock::dump(ExecState* exec, const Vector::const_iterator& } case op_enter_with_activation: { int r0 = (++it)->u.operand; - printf("[%4d] enter_with_activation %s\n", location, registerName(exec, r0).c_str()); + printf("[%4d] enter_with_activation %s\n", location, registerName(exec, r0).data()); break; } case op_create_arguments: { @@ -495,31 +499,31 @@ void CodeBlock::dump(ExecState* exec, const Vector::const_iterator& } case op_convert_this: { int r0 = (++it)->u.operand; - printf("[%4d] convert_this %s\n", location, registerName(exec, r0).c_str()); + printf("[%4d] convert_this %s\n", location, registerName(exec, r0).data()); break; } case op_new_object: { int r0 = (++it)->u.operand; - printf("[%4d] new_object\t %s\n", location, registerName(exec, r0).c_str()); + printf("[%4d] new_object\t %s\n", location, registerName(exec, r0).data()); break; } case op_new_array: { int dst = (++it)->u.operand; int argv = (++it)->u.operand; int argc = (++it)->u.operand; - printf("[%4d] new_array\t %s, %s, %d\n", location, registerName(exec, dst).c_str(), registerName(exec, argv).c_str(), argc); + printf("[%4d] new_array\t %s, %s, %d\n", location, registerName(exec, dst).data(), registerName(exec, argv).data(), argc); break; } case op_new_regexp: { int r0 = (++it)->u.operand; int re0 = (++it)->u.operand; - printf("[%4d] new_regexp\t %s, %s\n", location, registerName(exec, r0).c_str(), regexpName(re0, regexp(re0)).c_str()); + printf("[%4d] new_regexp\t %s, %s\n", location, registerName(exec, r0).data(), regexpName(re0, regexp(re0)).data()); break; } case op_mov: { int r0 = (++it)->u.operand; int r1 = (++it)->u.operand; - printf("[%4d] mov\t\t %s, %s\n", location, registerName(exec, r0).c_str(), registerName(exec, r1).c_str()); + printf("[%4d] mov\t\t %s, %s\n", location, registerName(exec, r0).data(), registerName(exec, r1).data()); break; } case op_not: { @@ -560,12 +564,12 @@ void CodeBlock::dump(ExecState* exec, const Vector::const_iterator& } case op_pre_inc: { int r0 = (++it)->u.operand; - printf("[%4d] pre_inc\t\t %s\n", location, registerName(exec, r0).c_str()); + printf("[%4d] pre_inc\t\t %s\n", location, registerName(exec, r0).data()); break; } case op_pre_dec: { int r0 = (++it)->u.operand; - printf("[%4d] pre_dec\t\t %s\n", location, registerName(exec, r0).c_str()); + printf("[%4d] pre_dec\t\t %s\n", location, registerName(exec, r0).data()); break; } case op_post_inc: { @@ -644,7 +648,7 @@ void CodeBlock::dump(ExecState* exec, const Vector::const_iterator& int r1 = (++it)->u.operand; int r2 = (++it)->u.operand; int r3 = (++it)->u.operand; - printf("[%4d] instanceof\t\t %s, %s, %s, %s\n", location, registerName(exec, r0).c_str(), registerName(exec, r1).c_str(), registerName(exec, r2).c_str(), registerName(exec, r3).c_str()); + printf("[%4d] instanceof\t\t %s, %s, %s, %s\n", location, registerName(exec, r0).data(), registerName(exec, r1).data(), registerName(exec, r2).data(), registerName(exec, r3).data()); break; } case op_typeof: { @@ -682,63 +686,72 @@ void CodeBlock::dump(ExecState* exec, const Vector::const_iterator& case op_resolve: { int r0 = (++it)->u.operand; int id0 = (++it)->u.operand; - printf("[%4d] resolve\t\t %s, %s\n", location, registerName(exec, r0).c_str(), idName(id0, m_identifiers[id0]).c_str()); + printf("[%4d] resolve\t\t %s, %s\n", location, registerName(exec, r0).data(), idName(id0, m_identifiers[id0]).data()); break; } case op_resolve_skip: { int r0 = (++it)->u.operand; int id0 = (++it)->u.operand; int skipLevels = (++it)->u.operand; - printf("[%4d] resolve_skip\t %s, %s, %d\n", location, registerName(exec, r0).c_str(), idName(id0, m_identifiers[id0]).c_str(), skipLevels); + printf("[%4d] resolve_skip\t %s, %s, %d\n", location, registerName(exec, r0).data(), idName(id0, m_identifiers[id0]).data(), skipLevels); break; } case op_resolve_global: { int r0 = (++it)->u.operand; JSValue scope = JSValue((++it)->u.jsCell); int id0 = (++it)->u.operand; - printf("[%4d] resolve_global\t %s, %s, %s\n", location, registerName(exec, r0).c_str(), valueToSourceString(exec, scope).ascii(), idName(id0, m_identifiers[id0]).c_str()); + printf("[%4d] resolve_global\t %s, %s, %s\n", location, registerName(exec, r0).data(), valueToSourceString(exec, scope).ascii(), idName(id0, m_identifiers[id0]).data()); it += 2; break; } + case op_resolve_global_dynamic: { + int r0 = (++it)->u.operand; + JSValue scope = JSValue((++it)->u.jsCell); + int id0 = (++it)->u.operand; + int depth = it[2].u.operand; + printf("[%4d] resolve_global_dynamic\t %s, %s, %s, %d\n", location, registerName(exec, r0).data(), valueToSourceString(exec, scope).ascii(), idName(id0, m_identifiers[id0]).data(), depth); + it += 3; + break; + } case op_get_scoped_var: { int r0 = (++it)->u.operand; int index = (++it)->u.operand; int skipLevels = (++it)->u.operand; - printf("[%4d] get_scoped_var\t %s, %d, %d\n", location, registerName(exec, r0).c_str(), index, skipLevels); + printf("[%4d] get_scoped_var\t %s, %d, %d\n", location, registerName(exec, r0).data(), index, skipLevels); break; } case op_put_scoped_var: { int index = (++it)->u.operand; int skipLevels = (++it)->u.operand; int r0 = (++it)->u.operand; - printf("[%4d] put_scoped_var\t %d, %d, %s\n", location, index, skipLevels, registerName(exec, r0).c_str()); + printf("[%4d] put_scoped_var\t %d, %d, %s\n", location, index, skipLevels, registerName(exec, r0).data()); break; } case op_get_global_var: { int r0 = (++it)->u.operand; JSValue scope = JSValue((++it)->u.jsCell); int index = (++it)->u.operand; - printf("[%4d] get_global_var\t %s, %s, %d\n", location, registerName(exec, r0).c_str(), valueToSourceString(exec, scope).ascii(), index); + printf("[%4d] get_global_var\t %s, %s, %d\n", location, registerName(exec, r0).data(), valueToSourceString(exec, scope).ascii(), index); break; } case op_put_global_var: { JSValue scope = JSValue((++it)->u.jsCell); int index = (++it)->u.operand; int r0 = (++it)->u.operand; - printf("[%4d] put_global_var\t %s, %d, %s\n", location, valueToSourceString(exec, scope).ascii(), index, registerName(exec, r0).c_str()); + printf("[%4d] put_global_var\t %s, %d, %s\n", location, valueToSourceString(exec, scope).ascii(), index, registerName(exec, r0).data()); break; } case op_resolve_base: { int r0 = (++it)->u.operand; int id0 = (++it)->u.operand; - printf("[%4d] resolve_base\t %s, %s\n", location, registerName(exec, r0).c_str(), idName(id0, m_identifiers[id0]).c_str()); + printf("[%4d] resolve_base\t %s, %s\n", location, registerName(exec, r0).data(), idName(id0, m_identifiers[id0]).data()); break; } case op_resolve_with_base: { int r0 = (++it)->u.operand; int r1 = (++it)->u.operand; int id0 = (++it)->u.operand; - printf("[%4d] resolve_with_base %s, %s, %s\n", location, registerName(exec, r0).c_str(), registerName(exec, r1).c_str(), idName(id0, m_identifiers[id0]).c_str()); + printf("[%4d] resolve_with_base %s, %s, %s\n", location, registerName(exec, r0).data(), registerName(exec, r1).data(), idName(id0, m_identifiers[id0]).data()); break; } case op_get_by_id: { @@ -765,6 +778,46 @@ void CodeBlock::dump(ExecState* exec, const Vector::const_iterator& printGetByIdOp(exec, location, it, "get_by_id_chain"); break; } + case op_get_by_id_getter_self: { + printGetByIdOp(exec, location, it, "get_by_id_getter_self"); + break; + } + case op_get_by_id_getter_self_list: { + printGetByIdOp(exec, location, it, "get_by_id_getter_self_list"); + break; + } + case op_get_by_id_getter_proto: { + printGetByIdOp(exec, location, it, "get_by_id_getter_proto"); + break; + } + case op_get_by_id_getter_proto_list: { + printGetByIdOp(exec, location, it, "get_by_id_getter_proto_list"); + break; + } + case op_get_by_id_getter_chain: { + printGetByIdOp(exec, location, it, "get_by_id_getter_chain"); + break; + } + case op_get_by_id_custom_self: { + printGetByIdOp(exec, location, it, "get_by_id_custom_self"); + break; + } + case op_get_by_id_custom_self_list: { + printGetByIdOp(exec, location, it, "get_by_id_custom_self_list"); + break; + } + case op_get_by_id_custom_proto: { + printGetByIdOp(exec, location, it, "get_by_id_custom_proto"); + break; + } + case op_get_by_id_custom_proto_list: { + printGetByIdOp(exec, location, it, "get_by_id_custom_proto_list"); + break; + } + case op_get_by_id_custom_chain: { + printGetByIdOp(exec, location, it, "get_by_id_custom_chain"); + break; + } case op_get_by_id_generic: { printGetByIdOp(exec, location, it, "get_by_id_generic"); break; @@ -797,14 +850,14 @@ void CodeBlock::dump(ExecState* exec, const Vector::const_iterator& int r0 = (++it)->u.operand; int id0 = (++it)->u.operand; int r1 = (++it)->u.operand; - printf("[%4d] put_getter\t %s, %s, %s\n", location, registerName(exec, r0).c_str(), idName(id0, m_identifiers[id0]).c_str(), registerName(exec, r1).c_str()); + printf("[%4d] put_getter\t %s, %s, %s\n", location, registerName(exec, r0).data(), idName(id0, m_identifiers[id0]).data(), registerName(exec, r1).data()); break; } case op_put_setter: { int r0 = (++it)->u.operand; int id0 = (++it)->u.operand; int r1 = (++it)->u.operand; - printf("[%4d] put_setter\t %s, %s, %s\n", location, registerName(exec, r0).c_str(), idName(id0, m_identifiers[id0]).c_str(), registerName(exec, r1).c_str()); + printf("[%4d] put_setter\t %s, %s, %s\n", location, registerName(exec, r0).data(), idName(id0, m_identifiers[id0]).data(), registerName(exec, r1).data()); break; } case op_method_check: { @@ -815,14 +868,14 @@ void CodeBlock::dump(ExecState* exec, const Vector::const_iterator& int r0 = (++it)->u.operand; int r1 = (++it)->u.operand; int id0 = (++it)->u.operand; - printf("[%4d] del_by_id\t %s, %s, %s\n", location, registerName(exec, r0).c_str(), registerName(exec, r1).c_str(), idName(id0, m_identifiers[id0]).c_str()); + printf("[%4d] del_by_id\t %s, %s, %s\n", location, registerName(exec, r0).data(), registerName(exec, r1).data(), idName(id0, m_identifiers[id0]).data()); break; } case op_get_by_val: { int r0 = (++it)->u.operand; int r1 = (++it)->u.operand; int r2 = (++it)->u.operand; - printf("[%4d] get_by_val\t %s, %s, %s\n", location, registerName(exec, r0).c_str(), registerName(exec, r1).c_str(), registerName(exec, r2).c_str()); + printf("[%4d] get_by_val\t %s, %s, %s\n", location, registerName(exec, r0).data(), registerName(exec, r1).data(), registerName(exec, r2).data()); break; } case op_get_by_pname: { @@ -832,28 +885,28 @@ void CodeBlock::dump(ExecState* exec, const Vector::const_iterator& int r3 = (++it)->u.operand; int r4 = (++it)->u.operand; int r5 = (++it)->u.operand; - printf("[%4d] get_by_pname\t %s, %s, %s, %s, %s, %s\n", location, registerName(exec, r0).c_str(), registerName(exec, r1).c_str(), registerName(exec, r2).c_str(), registerName(exec, r3).c_str(), registerName(exec, r4).c_str(), registerName(exec, r5).c_str()); + printf("[%4d] get_by_pname\t %s, %s, %s, %s, %s, %s\n", location, registerName(exec, r0).data(), registerName(exec, r1).data(), registerName(exec, r2).data(), registerName(exec, r3).data(), registerName(exec, r4).data(), registerName(exec, r5).data()); break; } case op_put_by_val: { int r0 = (++it)->u.operand; int r1 = (++it)->u.operand; int r2 = (++it)->u.operand; - printf("[%4d] put_by_val\t %s, %s, %s\n", location, registerName(exec, r0).c_str(), registerName(exec, r1).c_str(), registerName(exec, r2).c_str()); + printf("[%4d] put_by_val\t %s, %s, %s\n", location, registerName(exec, r0).data(), registerName(exec, r1).data(), registerName(exec, r2).data()); break; } case op_del_by_val: { int r0 = (++it)->u.operand; int r1 = (++it)->u.operand; int r2 = (++it)->u.operand; - printf("[%4d] del_by_val\t %s, %s, %s\n", location, registerName(exec, r0).c_str(), registerName(exec, r1).c_str(), registerName(exec, r2).c_str()); + printf("[%4d] del_by_val\t %s, %s, %s\n", location, registerName(exec, r0).data(), registerName(exec, r1).data(), registerName(exec, r2).data()); break; } case op_put_by_index: { int r0 = (++it)->u.operand; unsigned n0 = (++it)->u.operand; int r1 = (++it)->u.operand; - printf("[%4d] put_by_index\t %s, %u, %s\n", location, registerName(exec, r0).c_str(), n0, registerName(exec, r1).c_str()); + printf("[%4d] put_by_index\t %s, %u, %s\n", location, registerName(exec, r0).data(), n0, registerName(exec, r1).data()); break; } case op_jmp: { @@ -894,75 +947,82 @@ void CodeBlock::dump(ExecState* exec, const Vector::const_iterator& int r0 = (++it)->u.operand; int r1 = (++it)->u.operand; int offset = (++it)->u.operand; - printf("[%4d] jneq_ptr\t\t %s, %s, %d(->%d)\n", location, registerName(exec, r0).c_str(), registerName(exec, r1).c_str(), offset, location + offset); + printf("[%4d] jneq_ptr\t\t %s, %s, %d(->%d)\n", location, registerName(exec, r0).data(), registerName(exec, r1).data(), offset, location + offset); break; } case op_jnless: { int r0 = (++it)->u.operand; int r1 = (++it)->u.operand; int offset = (++it)->u.operand; - printf("[%4d] jnless\t\t %s, %s, %d(->%d)\n", location, registerName(exec, r0).c_str(), registerName(exec, r1).c_str(), offset, location + offset); + printf("[%4d] jnless\t\t %s, %s, %d(->%d)\n", location, registerName(exec, r0).data(), registerName(exec, r1).data(), offset, location + offset); break; } case op_jnlesseq: { int r0 = (++it)->u.operand; int r1 = (++it)->u.operand; int offset = (++it)->u.operand; - printf("[%4d] jnlesseq\t\t %s, %s, %d(->%d)\n", location, registerName(exec, r0).c_str(), registerName(exec, r1).c_str(), offset, location + offset); + printf("[%4d] jnlesseq\t\t %s, %s, %d(->%d)\n", location, registerName(exec, r0).data(), registerName(exec, r1).data(), offset, location + offset); break; } case op_loop_if_less: { int r0 = (++it)->u.operand; int r1 = (++it)->u.operand; int offset = (++it)->u.operand; - printf("[%4d] loop_if_less\t %s, %s, %d(->%d)\n", location, registerName(exec, r0).c_str(), registerName(exec, r1).c_str(), offset, location + offset); + printf("[%4d] loop_if_less\t %s, %s, %d(->%d)\n", location, registerName(exec, r0).data(), registerName(exec, r1).data(), offset, location + offset); break; } case op_jless: { int r0 = (++it)->u.operand; int r1 = (++it)->u.operand; int offset = (++it)->u.operand; - printf("[%4d] jless\t\t %s, %s, %d(->%d)\n", location, registerName(exec, r0).c_str(), registerName(exec, r1).c_str(), offset, location + offset); + printf("[%4d] jless\t\t %s, %s, %d(->%d)\n", location, registerName(exec, r0).data(), registerName(exec, r1).data(), offset, location + offset); + break; + } + case op_jlesseq: { + int r0 = (++it)->u.operand; + int r1 = (++it)->u.operand; + int offset = (++it)->u.operand; + printf("[%4d] jlesseq\t\t %s, %s, %d(->%d)\n", location, registerName(exec, r0).data(), registerName(exec, r1).data(), offset, location + offset); break; } case op_loop_if_lesseq: { int r0 = (++it)->u.operand; int r1 = (++it)->u.operand; int offset = (++it)->u.operand; - printf("[%4d] loop_if_lesseq\t %s, %s, %d(->%d)\n", location, registerName(exec, r0).c_str(), registerName(exec, r1).c_str(), offset, location + offset); + printf("[%4d] loop_if_lesseq\t %s, %s, %d(->%d)\n", location, registerName(exec, r0).data(), registerName(exec, r1).data(), offset, location + offset); break; } case op_switch_imm: { int tableIndex = (++it)->u.operand; int defaultTarget = (++it)->u.operand; int scrutineeRegister = (++it)->u.operand; - printf("[%4d] switch_imm\t %d, %d(->%d), %s\n", location, tableIndex, defaultTarget, location + defaultTarget, registerName(exec, scrutineeRegister).c_str()); + printf("[%4d] switch_imm\t %d, %d(->%d), %s\n", location, tableIndex, defaultTarget, location + defaultTarget, registerName(exec, scrutineeRegister).data()); break; } case op_switch_char: { int tableIndex = (++it)->u.operand; int defaultTarget = (++it)->u.operand; int scrutineeRegister = (++it)->u.operand; - printf("[%4d] switch_char\t %d, %d(->%d), %s\n", location, tableIndex, defaultTarget, location + defaultTarget, registerName(exec, scrutineeRegister).c_str()); + printf("[%4d] switch_char\t %d, %d(->%d), %s\n", location, tableIndex, defaultTarget, location + defaultTarget, registerName(exec, scrutineeRegister).data()); break; } case op_switch_string: { int tableIndex = (++it)->u.operand; int defaultTarget = (++it)->u.operand; int scrutineeRegister = (++it)->u.operand; - printf("[%4d] switch_string\t %d, %d(->%d), %s\n", location, tableIndex, defaultTarget, location + defaultTarget, registerName(exec, scrutineeRegister).c_str()); + printf("[%4d] switch_string\t %d, %d(->%d), %s\n", location, tableIndex, defaultTarget, location + defaultTarget, registerName(exec, scrutineeRegister).data()); break; } case op_new_func: { int r0 = (++it)->u.operand; int f0 = (++it)->u.operand; - printf("[%4d] new_func\t\t %s, f%d\n", location, registerName(exec, r0).c_str(), f0); + printf("[%4d] new_func\t\t %s, f%d\n", location, registerName(exec, r0).data(), f0); break; } case op_new_func_exp: { int r0 = (++it)->u.operand; int f0 = (++it)->u.operand; - printf("[%4d] new_func_exp\t %s, f%d\n", location, registerName(exec, r0).c_str(), f0); + printf("[%4d] new_func_exp\t %s, f%d\n", location, registerName(exec, r0).data(), f0); break; } case op_call: { @@ -970,7 +1030,7 @@ void CodeBlock::dump(ExecState* exec, const Vector::const_iterator& int func = (++it)->u.operand; int argCount = (++it)->u.operand; int registerOffset = (++it)->u.operand; - printf("[%4d] call\t\t %s, %s, %d, %d\n", location, registerName(exec, dst).c_str(), registerName(exec, func).c_str(), argCount, registerOffset); + printf("[%4d] call\t\t %s, %s, %d, %d\n", location, registerName(exec, dst).data(), registerName(exec, func).data(), argCount, registerOffset); break; } case op_call_eval: { @@ -978,7 +1038,7 @@ void CodeBlock::dump(ExecState* exec, const Vector::const_iterator& int func = (++it)->u.operand; int argCount = (++it)->u.operand; int registerOffset = (++it)->u.operand; - printf("[%4d] call_eval\t %s, %s, %d, %d\n", location, registerName(exec, dst).c_str(), registerName(exec, func).c_str(), argCount, registerOffset); + printf("[%4d] call_eval\t %s, %s, %d, %d\n", location, registerName(exec, dst).data(), registerName(exec, func).data(), argCount, registerOffset); break; } case op_call_varargs: { @@ -986,7 +1046,7 @@ void CodeBlock::dump(ExecState* exec, const Vector::const_iterator& int func = (++it)->u.operand; int argCount = (++it)->u.operand; int registerOffset = (++it)->u.operand; - printf("[%4d] call_varargs\t %s, %s, %s, %d\n", location, registerName(exec, dst).c_str(), registerName(exec, func).c_str(), registerName(exec, argCount).c_str(), registerOffset); + printf("[%4d] call_varargs\t %s, %s, %s, %d\n", location, registerName(exec, dst).data(), registerName(exec, func).data(), registerName(exec, argCount).data(), registerOffset); break; } case op_load_varargs: { @@ -995,7 +1055,7 @@ void CodeBlock::dump(ExecState* exec, const Vector::const_iterator& } case op_tear_off_activation: { int r0 = (++it)->u.operand; - printf("[%4d] tear_off_activation\t %s\n", location, registerName(exec, r0).c_str()); + printf("[%4d] tear_off_activation\t %s\n", location, registerName(exec, r0).data()); break; } case op_tear_off_arguments: { @@ -1004,7 +1064,7 @@ void CodeBlock::dump(ExecState* exec, const Vector::const_iterator& } case op_ret: { int r0 = (++it)->u.operand; - printf("[%4d] ret\t\t %s\n", location, registerName(exec, r0).c_str()); + printf("[%4d] ret\t\t %s\n", location, registerName(exec, r0).data()); break; } case op_construct: { @@ -1014,26 +1074,26 @@ void CodeBlock::dump(ExecState* exec, const Vector::const_iterator& int registerOffset = (++it)->u.operand; int proto = (++it)->u.operand; int thisRegister = (++it)->u.operand; - printf("[%4d] construct\t %s, %s, %d, %d, %s, %s\n", location, registerName(exec, dst).c_str(), registerName(exec, func).c_str(), argCount, registerOffset, registerName(exec, proto).c_str(), registerName(exec, thisRegister).c_str()); + printf("[%4d] construct\t %s, %s, %d, %d, %s, %s\n", location, registerName(exec, dst).data(), registerName(exec, func).data(), argCount, registerOffset, registerName(exec, proto).data(), registerName(exec, thisRegister).data()); break; } case op_construct_verify: { int r0 = (++it)->u.operand; int r1 = (++it)->u.operand; - printf("[%4d] construct_verify\t %s, %s\n", location, registerName(exec, r0).c_str(), registerName(exec, r1).c_str()); + printf("[%4d] construct_verify\t %s, %s\n", location, registerName(exec, r0).data(), registerName(exec, r1).data()); break; } case op_strcat: { int r0 = (++it)->u.operand; int r1 = (++it)->u.operand; int count = (++it)->u.operand; - printf("[%4d] strcat\t\t %s, %s, %d\n", location, registerName(exec, r0).c_str(), registerName(exec, r1).c_str(), count); + printf("[%4d] strcat\t\t %s, %s, %d\n", location, registerName(exec, r0).data(), registerName(exec, r1).data(), count); break; } case op_to_primitive: { int r0 = (++it)->u.operand; int r1 = (++it)->u.operand; - printf("[%4d] to_primitive\t %s, %s\n", location, registerName(exec, r0).c_str(), registerName(exec, r1).c_str()); + printf("[%4d] to_primitive\t %s, %s\n", location, registerName(exec, r0).data(), registerName(exec, r1).data()); break; } case op_get_pnames: { @@ -1042,7 +1102,7 @@ void CodeBlock::dump(ExecState* exec, const Vector::const_iterator& int r2 = it[3].u.operand; int r3 = it[4].u.operand; int offset = it[5].u.operand; - printf("[%4d] get_pnames\t %s, %s, %s, %s, %d(->%d)\n", location, registerName(exec, r0).c_str(), registerName(exec, r1).c_str(), registerName(exec, r2).c_str(), registerName(exec, r3).c_str(), offset, location + offset); + printf("[%4d] get_pnames\t %s, %s, %s, %s, %d(->%d)\n", location, registerName(exec, r0).data(), registerName(exec, r1).data(), registerName(exec, r2).data(), registerName(exec, r3).data(), offset, location + offset); it += OPCODE_LENGTH(op_get_pnames) - 1; break; } @@ -1050,13 +1110,13 @@ void CodeBlock::dump(ExecState* exec, const Vector::const_iterator& int dest = it[1].u.operand; int iter = it[4].u.operand; int offset = it[5].u.operand; - printf("[%4d] next_pname\t %s, %s, %d(->%d)\n", location, registerName(exec, dest).c_str(), registerName(exec, iter).c_str(), offset, location + offset); + printf("[%4d] next_pname\t %s, %s, %d(->%d)\n", location, registerName(exec, dest).data(), registerName(exec, iter).data(), offset, location + offset); it += OPCODE_LENGTH(op_next_pname) - 1; break; } case op_push_scope: { int r0 = (++it)->u.operand; - printf("[%4d] push_scope\t %s\n", location, registerName(exec, r0).c_str()); + printf("[%4d] push_scope\t %s\n", location, registerName(exec, r0).data()); break; } case op_pop_scope: { @@ -1067,7 +1127,7 @@ void CodeBlock::dump(ExecState* exec, const Vector::const_iterator& int r0 = (++it)->u.operand; int id0 = (++it)->u.operand; int r1 = (++it)->u.operand; - printf("[%4d] push_new_scope \t%s, %s, %s\n", location, registerName(exec, r0).c_str(), idName(id0, m_identifiers[id0]).c_str(), registerName(exec, r1).c_str()); + printf("[%4d] push_new_scope \t%s, %s, %s\n", location, registerName(exec, r0).data(), idName(id0, m_identifiers[id0]).data(), registerName(exec, r1).data()); break; } case op_jmp_scopes: { @@ -1078,30 +1138,30 @@ void CodeBlock::dump(ExecState* exec, const Vector::const_iterator& } case op_catch: { int r0 = (++it)->u.operand; - printf("[%4d] catch\t\t %s\n", location, registerName(exec, r0).c_str()); + printf("[%4d] catch\t\t %s\n", location, registerName(exec, r0).data()); break; } case op_throw: { int r0 = (++it)->u.operand; - printf("[%4d] throw\t\t %s\n", location, registerName(exec, r0).c_str()); + printf("[%4d] throw\t\t %s\n", location, registerName(exec, r0).data()); break; } case op_new_error: { int r0 = (++it)->u.operand; int errorType = (++it)->u.operand; int k0 = (++it)->u.operand; - printf("[%4d] new_error\t %s, %d, %s\n", location, registerName(exec, r0).c_str(), errorType, constantName(exec, k0, getConstant(k0)).c_str()); + printf("[%4d] new_error\t %s, %d, %s\n", location, registerName(exec, r0).data(), errorType, constantName(exec, k0, getConstant(k0)).data()); break; } case op_jsr: { int retAddrDst = (++it)->u.operand; int offset = (++it)->u.operand; - printf("[%4d] jsr\t\t %s, %d(->%d)\n", location, registerName(exec, retAddrDst).c_str(), offset, location + offset); + printf("[%4d] jsr\t\t %s, %d(->%d)\n", location, registerName(exec, retAddrDst).data(), offset, location + offset); break; } case op_sret: { int retAddrSrc = (++it)->u.operand; - printf("[%4d] sret\t\t %s\n", location, registerName(exec, retAddrSrc).c_str()); + printf("[%4d] sret\t\t %s\n", location, registerName(exec, retAddrSrc).data()); break; } case op_debug: { @@ -1113,17 +1173,17 @@ void CodeBlock::dump(ExecState* exec, const Vector::const_iterator& } case op_profile_will_call: { int function = (++it)->u.operand; - printf("[%4d] profile_will_call %s\n", location, registerName(exec, function).c_str()); + printf("[%4d] profile_will_call %s\n", location, registerName(exec, function).data()); break; } case op_profile_did_call: { int function = (++it)->u.operand; - printf("[%4d] profile_did_call\t %s\n", location, registerName(exec, function).c_str()); + printf("[%4d] profile_did_call\t %s\n", location, registerName(exec, function).data()); break; } case op_end: { int r0 = (++it)->u.operand; - printf("[%4d] end\t\t %s\n", location, registerName(exec, r0).c_str()); + printf("[%4d] end\t\t %s\n", location, registerName(exec, r0).data()); break; } } @@ -1281,6 +1341,7 @@ CodeBlock::CodeBlock(ScriptExecutable* ownerExecutable, CodeType codeType, PassR #endif , m_needsFullScopeChain(ownerExecutable->needsActivation()) , m_usesEval(ownerExecutable->usesEval()) + , m_usesArguments(false) , m_isNumericCompareFunction(false) , m_codeType(codeType) , m_source(sourceProvider) @@ -1297,13 +1358,14 @@ CodeBlock::CodeBlock(ScriptExecutable* ownerExecutable, CodeType codeType, PassR CodeBlock::~CodeBlock() { -#if !ENABLE(JIT) +#if ENABLE(INTERPRETER) for (size_t size = m_globalResolveInstructions.size(), i = 0; i < size; ++i) derefStructures(&m_instructions[m_globalResolveInstructions[i]]); for (size_t size = m_propertyAccessInstructions.size(), i = 0; i < size; ++i) derefStructures(&m_instructions[m_propertyAccessInstructions[i]]); -#else +#endif +#if ENABLE(JIT) for (size_t size = m_globalResolveInfos.size(), i = 0; i < size; ++i) { if (m_globalResolveInfos[i].structure) m_globalResolveInfos[i].structure->deref(); @@ -1331,7 +1393,7 @@ CodeBlock::~CodeBlock() unlinkCallers(); #endif -#endif // !ENABLE(JIT) +#endif // ENABLE(JIT) #if DUMP_CODE_BLOCK_STATISTICS liveCodeBlockSet.remove(this); @@ -1355,16 +1417,16 @@ void CodeBlock::derefStructures(Instruction* vPC) const { Interpreter* interpreter = m_globalData->interpreter; - if (vPC[0].u.opcode == interpreter->getOpcode(op_get_by_id_self)) { + if (vPC[0].u.opcode == interpreter->getOpcode(op_get_by_id_self) || vPC[0].u.opcode == interpreter->getOpcode(op_get_by_id_getter_self) || vPC[0].u.opcode == interpreter->getOpcode(op_get_by_id_custom_self)) { vPC[4].u.structure->deref(); return; } - if (vPC[0].u.opcode == interpreter->getOpcode(op_get_by_id_proto)) { + if (vPC[0].u.opcode == interpreter->getOpcode(op_get_by_id_proto) || vPC[0].u.opcode == interpreter->getOpcode(op_get_by_id_getter_proto) || vPC[0].u.opcode == interpreter->getOpcode(op_get_by_id_custom_proto)) { vPC[4].u.structure->deref(); vPC[5].u.structure->deref(); return; } - if (vPC[0].u.opcode == interpreter->getOpcode(op_get_by_id_chain)) { + if (vPC[0].u.opcode == interpreter->getOpcode(op_get_by_id_chain) || vPC[0].u.opcode == interpreter->getOpcode(op_get_by_id_getter_chain) || vPC[0].u.opcode == interpreter->getOpcode(op_get_by_id_custom_chain)) { vPC[4].u.structure->deref(); vPC[5].u.structureChain->deref(); return; @@ -1379,13 +1441,17 @@ void CodeBlock::derefStructures(Instruction* vPC) const vPC[4].u.structure->deref(); return; } - if (vPC[0].u.opcode == interpreter->getOpcode(op_resolve_global)) { + if (vPC[0].u.opcode == interpreter->getOpcode(op_resolve_global) || vPC[0].u.opcode == interpreter->getOpcode(op_resolve_global_dynamic)) { if(vPC[4].u.structure) vPC[4].u.structure->deref(); return; } if ((vPC[0].u.opcode == interpreter->getOpcode(op_get_by_id_proto_list)) - || (vPC[0].u.opcode == interpreter->getOpcode(op_get_by_id_self_list))) { + || (vPC[0].u.opcode == interpreter->getOpcode(op_get_by_id_self_list)) + || (vPC[0].u.opcode == interpreter->getOpcode(op_get_by_id_getter_proto_list)) + || (vPC[0].u.opcode == interpreter->getOpcode(op_get_by_id_getter_self_list)) + || (vPC[0].u.opcode == interpreter->getOpcode(op_get_by_id_custom_proto_list)) + || (vPC[0].u.opcode == interpreter->getOpcode(op_get_by_id_custom_self_list))) { PolymorphicAccessStructureList* polymorphicStructures = vPC[4].u.polymorphicStructures; polymorphicStructures->derefStructures(vPC[5].u.operand); delete polymorphicStructures; @@ -1400,16 +1466,16 @@ void CodeBlock::refStructures(Instruction* vPC) const { Interpreter* interpreter = m_globalData->interpreter; - if (vPC[0].u.opcode == interpreter->getOpcode(op_get_by_id_self)) { + if (vPC[0].u.opcode == interpreter->getOpcode(op_get_by_id_self) || vPC[0].u.opcode == interpreter->getOpcode(op_get_by_id_getter_self) || vPC[0].u.opcode == interpreter->getOpcode(op_get_by_id_custom_self)) { vPC[4].u.structure->ref(); return; } - if (vPC[0].u.opcode == interpreter->getOpcode(op_get_by_id_proto)) { + if (vPC[0].u.opcode == interpreter->getOpcode(op_get_by_id_proto) || vPC[0].u.opcode == interpreter->getOpcode(op_get_by_id_getter_proto) || vPC[0].u.opcode == interpreter->getOpcode(op_get_by_id_custom_proto)) { vPC[4].u.structure->ref(); vPC[5].u.structure->ref(); return; } - if (vPC[0].u.opcode == interpreter->getOpcode(op_get_by_id_chain)) { + if (vPC[0].u.opcode == interpreter->getOpcode(op_get_by_id_chain) || vPC[0].u.opcode == interpreter->getOpcode(op_get_by_id_getter_chain) || vPC[0].u.opcode == interpreter->getOpcode(op_get_by_id_custom_chain)) { vPC[4].u.structure->ref(); vPC[5].u.structureChain->ref(); return; @@ -1595,7 +1661,7 @@ bool CodeBlock::functionRegisterForBytecodeOffset(unsigned bytecodeOffset, int& } #endif -#if !ENABLE(JIT) +#if ENABLE(INTERPRETER) bool CodeBlock::hasGlobalResolveInstructionAtBytecodeOffset(unsigned bytecodeOffset) { if (m_globalResolveInstructions.isEmpty()) @@ -1615,7 +1681,8 @@ bool CodeBlock::hasGlobalResolveInstructionAtBytecodeOffset(unsigned bytecodeOff return false; return true; } -#else +#endif +#if ENABLE(JIT) bool CodeBlock::hasGlobalResolveInfoAtBytecodeOffset(unsigned bytecodeOffset) { if (m_globalResolveInfos.isEmpty()) @@ -1641,10 +1708,11 @@ void CodeBlock::shrinkToFit() { m_instructions.shrinkToFit(); -#if !ENABLE(JIT) +#if ENABLE(INTERPRETER) m_propertyAccessInstructions.shrinkToFit(); m_globalResolveInstructions.shrinkToFit(); -#else +#endif +#if ENABLE(JIT) m_structureStubInfos.shrinkToFit(); m_globalResolveInfos.shrinkToFit(); m_callLinkInfos.shrinkToFit(); diff --git a/bytecode/CodeBlock.h b/bytecode/CodeBlock.h index eb874cc..63d9b8a 100644 --- a/bytecode/CodeBlock.h +++ b/bytecode/CodeBlock.h @@ -36,7 +36,6 @@ #include "JSGlobalObject.h" #include "JumpTable.h" #include "Nodes.h" -#include "PtrAndFlags.h" #include "RegExp.h" #include "UString.h" #include @@ -103,51 +102,63 @@ namespace JSC { struct CallLinkInfo { CallLinkInfo() : callee(0) + , position(0) + , hasSeenShouldRepatch(0) { } - + unsigned bytecodeIndex; CodeLocationNearCall callReturnLocation; CodeLocationDataLabelPtr hotPathBegin; CodeLocationNearCall hotPathOther; - PtrAndFlags ownerCodeBlock; + CodeBlock* ownerCodeBlock; CodeBlock* callee; - unsigned position; + unsigned position : 31; + unsigned hasSeenShouldRepatch : 1; void setUnlinked() { callee = 0; } bool isLinked() { return callee; } bool seenOnce() { - return ownerCodeBlock.isFlagSet(hasSeenShouldRepatch); + return hasSeenShouldRepatch; } void setSeen() { - ownerCodeBlock.setFlag(hasSeenShouldRepatch); + hasSeenShouldRepatch = true; } }; struct MethodCallLinkInfo { MethodCallLinkInfo() : cachedStructure(0) + , cachedPrototypeStructure(0) { } bool seenOnce() { - return cachedPrototypeStructure.isFlagSet(hasSeenShouldRepatch); + ASSERT(!cachedStructure); + return cachedPrototypeStructure; } void setSeen() { - cachedPrototypeStructure.setFlag(hasSeenShouldRepatch); + ASSERT(!cachedStructure && !cachedPrototypeStructure); + // We use the values of cachedStructure & cachedPrototypeStructure to indicate the + // current state. + // - In the initial state, both are null. + // - Once this transition has been taken once, cachedStructure is + // null and cachedPrototypeStructure is set to a nun-null value. + // - Once the call is linked both structures are set to non-null values. + cachedPrototypeStructure = (Structure*)1; } CodeLocationCall callReturnLocation; CodeLocationDataLabelPtr structureLabel; Structure* cachedStructure; - PtrAndFlags cachedPrototypeStructure; + Structure* cachedPrototypeStructure; }; struct FunctionRegisterInfo { @@ -344,6 +355,12 @@ namespace JSC { bool functionRegisterForBytecodeOffset(unsigned bytecodeOffset, int& functionRegisterIndex); #endif +#if ENABLE(INTERPRETER) + unsigned bytecodeOffset(CallFrame*, Instruction* returnAddress) + { + return static_cast(returnAddress) - instructions().begin(); + } +#endif void setIsNumericCompareFunction(bool isNumericCompareFunction) { m_isNumericCompareFunction = isNumericCompareFunction; } bool isNumericCompareFunction() { return m_isNumericCompareFunction; } @@ -385,11 +402,12 @@ namespace JSC { unsigned jumpTarget(int index) const { return m_jumpTargets[index]; } unsigned lastJumpTarget() const { return m_jumpTargets.last(); } -#if !ENABLE(JIT) +#if ENABLE(INTERPRETER) void addPropertyAccessInstruction(unsigned propertyAccessInstruction) { m_propertyAccessInstructions.append(propertyAccessInstruction); } void addGlobalResolveInstruction(unsigned globalResolveInstruction) { m_globalResolveInstructions.append(globalResolveInstruction); } bool hasGlobalResolveInstructionAtBytecodeOffset(unsigned bytecodeOffset); -#else +#endif +#if ENABLE(JIT) size_t numberOfStructureStubInfos() const { return m_structureStubInfos.size(); } void addStructureStubInfo(const StructureStubInfo& stubInfo) { m_structureStubInfos.append(stubInfo); } StructureStubInfo& structureStubInfo(int index) { return m_structureStubInfos[index]; } @@ -519,10 +537,11 @@ namespace JSC { RefPtr m_source; unsigned m_sourceOffset; -#if !ENABLE(JIT) +#if ENABLE(INTERPRETER) Vector m_propertyAccessInstructions; Vector m_globalResolveInstructions; -#else +#endif +#if ENABLE(JIT) Vector m_structureStubInfos; Vector m_globalResolveInfos; Vector m_callLinkInfos; diff --git a/bytecode/EvalCodeCache.h b/bytecode/EvalCodeCache.h index 05834fc..27c479d 100644 --- a/bytecode/EvalCodeCache.h +++ b/bytecode/EvalCodeCache.h @@ -37,6 +37,7 @@ #include "UString.h" #include #include +#include namespace JSC { @@ -65,7 +66,7 @@ namespace JSC { bool isEmpty() const { return m_cacheMap.isEmpty(); } private: - static const int maxCacheableSourceLength = 256; + static const unsigned maxCacheableSourceLength = 256; static const int maxCacheEntries = 64; typedef HashMap, RefPtr > EvalCacheMap; diff --git a/bytecode/Instruction.h b/bytecode/Instruction.h index bcef7fb..c6468a5 100644 --- a/bytecode/Instruction.h +++ b/bytecode/Instruction.h @@ -31,6 +31,7 @@ #include "MacroAssembler.h" #include "Opcode.h" +#include "PropertySlot.h" #include "Structure.h" #include @@ -124,7 +125,7 @@ namespace JSC { struct Instruction { Instruction(Opcode opcode) { -#if !HAVE(COMPUTED_GOTO) +#if !ENABLE(COMPUTED_GOTO_INTERPRETER) // We have to initialize one of the pointer members to ensure that // the entire struct is initialized, when opcode is not a pointer. u.jsCell = 0; @@ -144,6 +145,7 @@ namespace JSC { Instruction(StructureChain* structureChain) { u.structureChain = structureChain; } Instruction(JSCell* jsCell) { u.jsCell = jsCell; } Instruction(PolymorphicAccessStructureList* polymorphicStructures) { u.polymorphicStructures = polymorphicStructures; } + Instruction(PropertySlot::GetValueFunc getterFunc) { u.getterFunc = getterFunc; } union { Opcode opcode; @@ -152,6 +154,7 @@ namespace JSC { StructureChain* structureChain; JSCell* jsCell; PolymorphicAccessStructureList* polymorphicStructures; + PropertySlot::GetValueFunc getterFunc; } u; }; diff --git a/bytecode/JumpTable.cpp b/bytecode/JumpTable.cpp index 175c1b3..ef7098b 100644 --- a/bytecode/JumpTable.cpp +++ b/bytecode/JumpTable.cpp @@ -30,6 +30,8 @@ #include "config.h" #include "JumpTable.h" +#include + namespace JSC { int32_t SimpleJumpTable::offsetForValue(int32_t value, int32_t defaultOffset) diff --git a/bytecode/Opcode.h b/bytecode/Opcode.h index d9b2153..67f5e70 100644 --- a/bytecode/Opcode.h +++ b/bytecode/Opcode.h @@ -92,6 +92,7 @@ namespace JSC { macro(op_resolve, 3) \ macro(op_resolve_skip, 4) \ macro(op_resolve_global, 6) \ + macro(op_resolve_global_dynamic, 7) \ macro(op_get_scoped_var, 4) \ macro(op_put_scoped_var, 4) \ macro(op_get_global_var, 4) \ @@ -104,13 +105,23 @@ namespace JSC { macro(op_get_by_id_proto, 8) \ macro(op_get_by_id_proto_list, 8) \ macro(op_get_by_id_chain, 8) \ + macro(op_get_by_id_getter_self, 8) \ + macro(op_get_by_id_getter_self_list, 8) \ + macro(op_get_by_id_getter_proto, 8) \ + macro(op_get_by_id_getter_proto_list, 8) \ + macro(op_get_by_id_getter_chain, 8) \ + macro(op_get_by_id_custom_self, 8) \ + macro(op_get_by_id_custom_self_list, 8) \ + macro(op_get_by_id_custom_proto, 8) \ + macro(op_get_by_id_custom_proto_list, 8) \ + macro(op_get_by_id_custom_chain, 8) \ macro(op_get_by_id_generic, 8) \ macro(op_get_array_length, 8) \ macro(op_get_string_length, 8) \ - macro(op_put_by_id, 8) \ - macro(op_put_by_id_transition, 8) \ - macro(op_put_by_id_replace, 8) \ - macro(op_put_by_id_generic, 8) \ + macro(op_put_by_id, 9) \ + macro(op_put_by_id_transition, 9) \ + macro(op_put_by_id_replace, 9) \ + macro(op_put_by_id_generic, 9) \ macro(op_del_by_id, 4) \ macro(op_get_by_val, 4) \ macro(op_get_by_pname, 7) \ @@ -129,6 +140,7 @@ namespace JSC { macro(op_jnless, 4) \ macro(op_jnlesseq, 4) \ macro(op_jless, 4) \ + macro(op_jlesseq, 4) \ macro(op_jmp_scopes, 3) \ macro(op_loop, 2) \ macro(op_loop_if_true, 3) \ @@ -195,7 +207,7 @@ namespace JSC { FOR_EACH_OPCODE_ID(VERIFY_OPCODE_ID); #undef VERIFY_OPCODE_ID -#if HAVE(COMPUTED_GOTO) +#if ENABLE(COMPUTED_GOTO_INTERPRETER) #if COMPILER(RVCT) typedef void* Opcode; #else diff --git a/bytecode/SamplingTool.cpp b/bytecode/SamplingTool.cpp index 3f0babc..7191e38 100644 --- a/bytecode/SamplingTool.cpp +++ b/bytecode/SamplingTool.cpp @@ -43,7 +43,7 @@ namespace JSC { void SamplingFlags::sample() { - uint32_t mask = 1 << 31; + uint32_t mask = static_cast(1 << 31); unsigned index; for (index = 0; index < 32; ++index) { @@ -337,7 +337,7 @@ void SamplingTool::dump(ExecState* exec) if (blockPercent >= 1) { //Instruction* code = codeBlock->instructions().begin(); - printf("#%d: %s:%d: %d / %lld (%.3f%%)\n", i + 1, record->m_executable->sourceURL().UTF8String().c_str(), codeBlock->lineNumberForBytecodeOffset(exec, 0), record->m_sampleCount, m_sampleCount, blockPercent); + printf("#%d: %s:%d: %d / %lld (%.3f%%)\n", i + 1, record->m_executable->sourceURL().ascii(), codeBlock->lineNumberForBytecodeOffset(exec, 0), record->m_sampleCount, m_sampleCount, blockPercent); if (i < 10) { HashMap lineCounts; codeBlock->dump(exec); diff --git a/bytecompiler/BytecodeGenerator.cpp b/bytecompiler/BytecodeGenerator.cpp index b0a0877..c4b3cab 100644 --- a/bytecompiler/BytecodeGenerator.cpp +++ b/bytecompiler/BytecodeGenerator.cpp @@ -633,7 +633,7 @@ PassRefPtr