From c411f16870f112c3407c28c22b617f613a82cff4 Mon Sep 17 00:00:00 2001 From: Simon Hausmann Date: Mon, 15 Jun 2009 11:06:43 +0200 Subject: Updated WebKit from /home/shausman/src/webkit/trunk to qtwebkit-4.6-snapshot-15062009 ( 65232bf00dc494ebfd978f998c88f58d18ecce1e ) --- src/3rdparty/webkit/ChangeLog | 685 +- src/3rdparty/webkit/JavaScriptCore/API/APICast.h | 34 +- src/3rdparty/webkit/JavaScriptCore/API/JSBase.cpp | 10 +- src/3rdparty/webkit/JavaScriptCore/API/JSBase.h | 10 +- .../webkit/JavaScriptCore/API/JSBasePrivate.h | 2 +- .../JavaScriptCore/API/JSCallbackConstructor.cpp | 15 +- .../JavaScriptCore/API/JSCallbackConstructor.h | 2 +- .../JavaScriptCore/API/JSCallbackFunction.cpp | 18 +- .../webkit/JavaScriptCore/API/JSCallbackFunction.h | 4 +- .../webkit/JavaScriptCore/API/JSCallbackObject.h | 16 +- .../JavaScriptCore/API/JSCallbackObjectFunctions.h | 152 +- .../webkit/JavaScriptCore/API/JSClassRef.cpp | 2 +- .../webkit/JavaScriptCore/API/JSContextRef.cpp | 4 +- .../webkit/JavaScriptCore/API/JSContextRef.h | 10 +- .../webkit/JavaScriptCore/API/JSObjectRef.cpp | 94 +- .../webkit/JavaScriptCore/API/JSObjectRef.h | 8 +- .../webkit/JavaScriptCore/API/JSStringRef.cpp | 3 + .../webkit/JavaScriptCore/API/JSStringRefCF.cpp | 9 +- .../webkit/JavaScriptCore/API/JSValueRef.cpp | 176 +- .../webkit/JavaScriptCore/API/WebKitAvailability.h | 85 +- src/3rdparty/webkit/JavaScriptCore/ChangeLog | 13278 ++++- .../webkit/JavaScriptCore/DerivedSources.make | 6 +- src/3rdparty/webkit/JavaScriptCore/Info.plist | 2 +- .../webkit/JavaScriptCore/JavaScriptCore.order | 3425 +- .../webkit/JavaScriptCore/JavaScriptCore.pri | 111 +- .../webkit/JavaScriptCore/JavaScriptCore.pro | 11 +- .../webkit/JavaScriptCore/JavaScriptCorePrefix.h | 9 - .../assembler/AbstractMacroAssembler.h | 999 + .../JavaScriptCore/assembler/AssemblerBuffer.h | 2 + .../JavaScriptCore/assembler/MacroAssembler.h | 1814 +- .../assembler/MacroAssemblerCodeRef.h | 156 + .../JavaScriptCore/assembler/MacroAssemblerX86.h | 164 + .../assembler/MacroAssemblerX86Common.h | 780 + .../assembler/MacroAssemblerX86_64.h | 446 + .../webkit/JavaScriptCore/assembler/X86Assembler.h | 399 +- .../webkit/JavaScriptCore/bytecode/CodeBlock.cpp | 174 +- .../webkit/JavaScriptCore/bytecode/CodeBlock.h | 144 +- .../webkit/JavaScriptCore/bytecode/EvalCodeCache.h | 13 +- .../webkit/JavaScriptCore/bytecode/Instruction.h | 40 +- .../webkit/JavaScriptCore/bytecode/JumpTable.h | 13 +- .../webkit/JavaScriptCore/bytecode/Opcode.h | 10 +- .../JavaScriptCore/bytecode/SamplingTool.cpp | 224 +- .../webkit/JavaScriptCore/bytecode/SamplingTool.h | 226 +- .../JavaScriptCore/bytecode/StructureStubInfo.h | 16 +- .../bytecompiler/BytecodeGenerator.cpp | 327 +- .../bytecompiler/BytecodeGenerator.h | 68 +- src/3rdparty/webkit/JavaScriptCore/config.h | 10 + .../webkit/JavaScriptCore/create_hash_table | 4 - .../webkit/JavaScriptCore/debugger/Debugger.cpp | 16 + .../webkit/JavaScriptCore/debugger/Debugger.h | 4 + .../JavaScriptCore/debugger/DebuggerActivation.cpp | 103 + .../JavaScriptCore/debugger/DebuggerActivation.h | 63 + .../JavaScriptCore/debugger/DebuggerCallFrame.cpp | 15 +- .../JavaScriptCore/debugger/DebuggerCallFrame.h | 10 +- .../JavaScriptCore/docs/make-bytecode-docs.pl | 4 +- .../JavaScriptCore/generated/ArrayPrototype.lut.h | 9 +- .../JavaScriptCore/generated/DatePrototype.lut.h | 7 +- .../webkit/JavaScriptCore/generated/Grammar.cpp | 1701 +- .../webkit/JavaScriptCore/generated/Grammar.h | 109 +- .../webkit/JavaScriptCore/generated/Lexer.lut.h | 5 - .../JavaScriptCore/generated/MathObject.lut.h | 5 - .../generated/NumberConstructor.lut.h | 5 - .../generated/RegExpConstructor.lut.h | 5 - .../JavaScriptCore/generated/RegExpObject.lut.h | 5 - .../JavaScriptCore/generated/StringPrototype.lut.h | 5 - .../webkit/JavaScriptCore/interpreter/CachedCall.h | 70 + .../JavaScriptCore/interpreter/CallFrame.cpp | 18 +- .../webkit/JavaScriptCore/interpreter/CallFrame.h | 41 +- .../JavaScriptCore/interpreter/CallFrameClosure.h | 60 + .../JavaScriptCore/interpreter/Interpreter.cpp | 3667 +- .../JavaScriptCore/interpreter/Interpreter.h | 279 +- .../webkit/JavaScriptCore/interpreter/Register.h | 102 +- .../JavaScriptCore/interpreter/RegisterFile.cpp | 11 + .../JavaScriptCore/interpreter/RegisterFile.h | 173 +- .../JavaScriptCore/jit/ExecutableAllocator.h | 75 +- .../jit/ExecutableAllocatorFixedVMPool.cpp | 447 + .../jit/ExecutableAllocatorPosix.cpp | 30 +- .../JavaScriptCore/jit/ExecutableAllocatorWin.cpp | 4 + src/3rdparty/webkit/JavaScriptCore/jit/JIT.cpp | 2161 +- src/3rdparty/webkit/JavaScriptCore/jit/JIT.h | 521 +- .../webkit/JavaScriptCore/jit/JITArithmetic.cpp | 1484 +- src/3rdparty/webkit/JavaScriptCore/jit/JITCall.cpp | 220 +- src/3rdparty/webkit/JavaScriptCore/jit/JITCode.h | 119 + .../webkit/JavaScriptCore/jit/JITInlineMethods.h | 237 +- .../webkit/JavaScriptCore/jit/JITOpcodes.cpp | 1183 + .../JavaScriptCore/jit/JITPropertyAccess.cpp | 774 +- .../webkit/JavaScriptCore/jit/JITStubCall.h | 170 + .../webkit/JavaScriptCore/jit/JITStubs.cpp | 2603 + src/3rdparty/webkit/JavaScriptCore/jit/JITStubs.h | 319 + src/3rdparty/webkit/JavaScriptCore/jsc.cpp | 212 +- .../webkit/JavaScriptCore/parser/Grammar.y | 447 +- .../webkit/JavaScriptCore/parser/Lexer.cpp | 1499 +- src/3rdparty/webkit/JavaScriptCore/parser/Lexer.h | 138 +- .../JavaScriptCore/parser/NodeConstructors.h | 911 + .../webkit/JavaScriptCore/parser/NodeInfo.h | 4 +- .../webkit/JavaScriptCore/parser/Nodes.cpp | 1618 +- src/3rdparty/webkit/JavaScriptCore/parser/Nodes.h | 1973 +- .../webkit/JavaScriptCore/parser/Parser.cpp | 26 +- src/3rdparty/webkit/JavaScriptCore/parser/Parser.h | 35 +- .../webkit/JavaScriptCore/parser/ParserArena.cpp | 60 + .../webkit/JavaScriptCore/parser/ParserArena.h | 64 + .../webkit/JavaScriptCore/parser/ResultType.h | 77 +- .../webkit/JavaScriptCore/parser/SourceProvider.h | 10 +- src/3rdparty/webkit/JavaScriptCore/pcre/dftables | 2 +- .../webkit/JavaScriptCore/pcre/pcre_compile.cpp | 23 +- .../webkit/JavaScriptCore/pcre/pcre_exec.cpp | 5 +- .../webkit/JavaScriptCore/pcre/pcre_internal.h | 36 +- .../JavaScriptCore/profiler/CallIdentifier.h | 34 +- .../JavaScriptCore/profiler/HeavyProfile.cpp | 115 - .../webkit/JavaScriptCore/profiler/HeavyProfile.h | 63 - .../webkit/JavaScriptCore/profiler/Profile.cpp | 3 +- .../webkit/JavaScriptCore/profiler/Profile.h | 11 - .../JavaScriptCore/profiler/ProfileGenerator.cpp | 4 +- .../JavaScriptCore/profiler/ProfileGenerator.h | 1 + .../webkit/JavaScriptCore/profiler/ProfileNode.cpp | 6 - .../webkit/JavaScriptCore/profiler/ProfileNode.h | 10 - .../webkit/JavaScriptCore/profiler/Profiler.cpp | 24 +- .../webkit/JavaScriptCore/profiler/Profiler.h | 8 +- .../webkit/JavaScriptCore/profiler/TreeProfile.cpp | 51 - .../webkit/JavaScriptCore/profiler/TreeProfile.h | 51 - .../webkit/JavaScriptCore/runtime/ArgList.cpp | 17 +- .../webkit/JavaScriptCore/runtime/ArgList.h | 76 +- .../webkit/JavaScriptCore/runtime/Arguments.cpp | 68 +- .../webkit/JavaScriptCore/runtime/Arguments.h | 20 +- .../JavaScriptCore/runtime/ArrayConstructor.cpp | 11 +- .../JavaScriptCore/runtime/ArrayPrototype.cpp | 633 +- .../JavaScriptCore/runtime/BooleanConstructor.cpp | 8 +- .../JavaScriptCore/runtime/BooleanConstructor.h | 2 +- .../webkit/JavaScriptCore/runtime/BooleanObject.h | 4 +- .../JavaScriptCore/runtime/BooleanPrototype.cpp | 19 +- .../webkit/JavaScriptCore/runtime/ByteArray.cpp | 38 - .../webkit/JavaScriptCore/runtime/ByteArray.h | 70 - .../webkit/JavaScriptCore/runtime/CallData.cpp | 2 +- .../webkit/JavaScriptCore/runtime/CallData.h | 8 +- .../webkit/JavaScriptCore/runtime/Collector.cpp | 77 +- .../webkit/JavaScriptCore/runtime/Collector.h | 14 +- .../JavaScriptCore/runtime/CommonIdentifiers.h | 5 +- .../webkit/JavaScriptCore/runtime/Completion.cpp | 12 +- .../webkit/JavaScriptCore/runtime/Completion.h | 10 +- .../JavaScriptCore/runtime/ConstructData.cpp | 2 +- .../webkit/JavaScriptCore/runtime/ConstructData.h | 4 +- .../JavaScriptCore/runtime/DateConstructor.cpp | 91 +- .../webkit/JavaScriptCore/runtime/DateInstance.h | 6 +- .../webkit/JavaScriptCore/runtime/DateMath.cpp | 146 +- .../JavaScriptCore/runtime/DatePrototype.cpp | 410 +- .../webkit/JavaScriptCore/runtime/DatePrototype.h | 2 +- .../webkit/JavaScriptCore/runtime/Error.cpp | 3 +- .../JavaScriptCore/runtime/ErrorConstructor.cpp | 6 +- .../JavaScriptCore/runtime/ErrorPrototype.cpp | 19 +- .../JavaScriptCore/runtime/ExceptionHelpers.cpp | 51 +- .../JavaScriptCore/runtime/ExceptionHelpers.h | 14 +- .../JavaScriptCore/runtime/FunctionConstructor.cpp | 27 +- .../JavaScriptCore/runtime/FunctionConstructor.h | 4 + .../JavaScriptCore/runtime/FunctionPrototype.cpp | 100 +- .../JavaScriptCore/runtime/FunctionPrototype.h | 6 +- .../webkit/JavaScriptCore/runtime/GetterSetter.cpp | 8 +- .../webkit/JavaScriptCore/runtime/GetterSetter.h | 8 +- .../webkit/JavaScriptCore/runtime/Identifier.cpp | 16 +- .../JavaScriptCore/runtime/InitializeThreading.cpp | 2 +- .../JavaScriptCore/runtime/InternalFunction.cpp | 20 + .../JavaScriptCore/runtime/InternalFunction.h | 10 +- .../webkit/JavaScriptCore/runtime/JSActivation.cpp | 14 +- .../webkit/JavaScriptCore/runtime/JSActivation.h | 14 +- .../webkit/JavaScriptCore/runtime/JSArray.cpp | 214 +- .../webkit/JavaScriptCore/runtime/JSArray.h | 38 +- .../webkit/JavaScriptCore/runtime/JSByteArray.cpp | 12 +- .../webkit/JavaScriptCore/runtime/JSByteArray.h | 36 +- .../webkit/JavaScriptCore/runtime/JSCell.cpp | 21 +- .../webkit/JavaScriptCore/runtime/JSCell.h | 49 +- .../webkit/JavaScriptCore/runtime/JSFunction.cpp | 82 +- .../webkit/JavaScriptCore/runtime/JSFunction.h | 67 +- .../webkit/JavaScriptCore/runtime/JSGlobalData.cpp | 138 +- .../webkit/JavaScriptCore/runtime/JSGlobalData.h | 99 +- .../JavaScriptCore/runtime/JSGlobalObject.cpp | 138 +- .../webkit/JavaScriptCore/runtime/JSGlobalObject.h | 61 +- .../runtime/JSGlobalObjectFunctions.cpp | 77 +- .../runtime/JSGlobalObjectFunctions.h | 28 +- .../webkit/JavaScriptCore/runtime/JSImmediate.cpp | 41 +- .../webkit/JavaScriptCore/runtime/JSImmediate.h | 609 +- .../webkit/JavaScriptCore/runtime/JSLock.cpp | 54 + .../JavaScriptCore/runtime/JSNotAnObject.cpp | 11 +- .../webkit/JavaScriptCore/runtime/JSNotAnObject.h | 10 +- .../webkit/JavaScriptCore/runtime/JSNumberCell.cpp | 33 +- .../webkit/JavaScriptCore/runtime/JSNumberCell.h | 396 +- .../webkit/JavaScriptCore/runtime/JSObject.cpp | 153 +- .../webkit/JavaScriptCore/runtime/JSObject.h | 317 +- .../runtime/JSPropertyNameIterator.cpp | 6 +- .../runtime/JSPropertyNameIterator.h | 22 +- .../JavaScriptCore/runtime/JSStaticScopeObject.cpp | 4 +- .../JavaScriptCore/runtime/JSStaticScopeObject.h | 8 +- .../webkit/JavaScriptCore/runtime/JSString.cpp | 10 +- .../webkit/JavaScriptCore/runtime/JSString.h | 14 +- .../webkit/JavaScriptCore/runtime/JSValue.cpp | 25 +- .../webkit/JavaScriptCore/runtime/JSValue.h | 373 +- .../JavaScriptCore/runtime/JSVariableObject.h | 10 +- .../JavaScriptCore/runtime/JSWrapperObject.cpp | 4 +- .../JavaScriptCore/runtime/JSWrapperObject.h | 11 +- .../JavaScriptCore/runtime/LiteralParser.cpp | 306 + .../webkit/JavaScriptCore/runtime/LiteralParser.h | 112 + .../webkit/JavaScriptCore/runtime/Lookup.cpp | 26 +- .../webkit/JavaScriptCore/runtime/Lookup.h | 42 +- .../webkit/JavaScriptCore/runtime/MathObject.cpp | 112 +- .../webkit/JavaScriptCore/runtime/MathObject.h | 2 +- .../runtime/NativeErrorConstructor.cpp | 10 +- .../JavaScriptCore/runtime/NativeFunctionWrapper.h | 39 + .../JavaScriptCore/runtime/NumberConstructor.cpp | 34 +- .../JavaScriptCore/runtime/NumberConstructor.h | 4 +- .../webkit/JavaScriptCore/runtime/NumberObject.cpp | 11 +- .../webkit/JavaScriptCore/runtime/NumberObject.h | 7 +- .../JavaScriptCore/runtime/NumberPrototype.cpp | 108 +- .../JavaScriptCore/runtime/ObjectConstructor.cpp | 9 +- .../JavaScriptCore/runtime/ObjectPrototype.cpp | 89 +- .../JavaScriptCore/runtime/ObjectPrototype.h | 2 +- .../webkit/JavaScriptCore/runtime/Operations.cpp | 84 +- .../webkit/JavaScriptCore/runtime/Operations.h | 411 +- .../JavaScriptCore/runtime/PropertyMapHashTable.h | 7 +- .../JavaScriptCore/runtime/PropertyNameArray.cpp | 2 +- .../JavaScriptCore/runtime/PropertyNameArray.h | 10 +- .../webkit/JavaScriptCore/runtime/PropertySlot.cpp | 2 +- .../webkit/JavaScriptCore/runtime/PropertySlot.h | 44 +- .../webkit/JavaScriptCore/runtime/Protect.h | 76 +- .../JavaScriptCore/runtime/PutPropertySlot.h | 12 +- .../webkit/JavaScriptCore/runtime/RegExp.cpp | 156 +- .../webkit/JavaScriptCore/runtime/RegExp.h | 14 +- .../JavaScriptCore/runtime/RegExpConstructor.cpp | 98 +- .../JavaScriptCore/runtime/RegExpConstructor.h | 16 +- .../JavaScriptCore/runtime/RegExpMatchesArray.h | 4 +- .../webkit/JavaScriptCore/runtime/RegExpObject.cpp | 37 +- .../webkit/JavaScriptCore/runtime/RegExpObject.h | 12 +- .../JavaScriptCore/runtime/RegExpPrototype.cpp | 55 +- .../webkit/JavaScriptCore/runtime/ScopeChain.h | 15 + .../webkit/JavaScriptCore/runtime/SmallStrings.cpp | 68 +- .../webkit/JavaScriptCore/runtime/SmallStrings.h | 12 +- .../JavaScriptCore/runtime/StringConstructor.cpp | 17 +- .../webkit/JavaScriptCore/runtime/StringObject.cpp | 2 +- .../webkit/JavaScriptCore/runtime/StringObject.h | 10 +- .../StringObjectThatMasqueradesAsUndefined.h | 2 +- .../JavaScriptCore/runtime/StringPrototype.cpp | 535 +- .../webkit/JavaScriptCore/runtime/Structure.cpp | 263 +- .../webkit/JavaScriptCore/runtime/Structure.h | 61 +- .../JavaScriptCore/runtime/StructureChain.cpp | 38 +- .../webkit/JavaScriptCore/runtime/StructureChain.h | 7 +- .../runtime/StructureTransitionTable.h | 13 +- .../JavaScriptCore/runtime/TimeoutChecker.cpp | 154 + .../webkit/JavaScriptCore/runtime/TimeoutChecker.h | 73 + .../webkit/JavaScriptCore/runtime/TypeInfo.h | 15 +- .../webkit/JavaScriptCore/runtime/UString.cpp | 500 +- .../webkit/JavaScriptCore/runtime/UString.h | 240 +- src/3rdparty/webkit/JavaScriptCore/wrec/WREC.cpp | 7 +- .../webkit/JavaScriptCore/wrec/WRECGenerator.cpp | 98 +- .../webkit/JavaScriptCore/wrec/WRECGenerator.h | 22 +- .../webkit/JavaScriptCore/wrec/WRECParser.cpp | 36 +- .../webkit/JavaScriptCore/wtf/ASCIICType.h | 16 +- src/3rdparty/webkit/JavaScriptCore/wtf/AVLTree.h | 2 +- .../webkit/JavaScriptCore/wtf/AlwaysInline.h | 12 +- .../webkit/JavaScriptCore/wtf/Assertions.h | 2 +- .../webkit/JavaScriptCore/wtf/ByteArray.cpp | 38 + src/3rdparty/webkit/JavaScriptCore/wtf/ByteArray.h | 80 + .../JavaScriptCore/wtf/CONTRIBUTORS.pthreads-win32 | 137 + .../JavaScriptCore/wtf/CrossThreadRefCounted.h | 169 + .../webkit/JavaScriptCore/wtf/CurrentTime.cpp | 232 + .../webkit/JavaScriptCore/wtf/CurrentTime.h | 47 + src/3rdparty/webkit/JavaScriptCore/wtf/Deque.h | 121 +- .../webkit/JavaScriptCore/wtf/FastAllocBase.h | 400 + .../webkit/JavaScriptCore/wtf/FastMalloc.cpp | 417 +- .../webkit/JavaScriptCore/wtf/FastMalloc.h | 89 + src/3rdparty/webkit/JavaScriptCore/wtf/GOwnPtr.cpp | 6 + src/3rdparty/webkit/JavaScriptCore/wtf/GOwnPtr.h | 1 + .../webkit/JavaScriptCore/wtf/HashTraits.h | 43 +- .../webkit/JavaScriptCore/wtf/MainThread.cpp | 73 +- .../webkit/JavaScriptCore/wtf/MainThread.h | 4 +- .../webkit/JavaScriptCore/wtf/MessageQueue.h | 53 +- src/3rdparty/webkit/JavaScriptCore/wtf/NotFound.h | 2 + .../webkit/JavaScriptCore/wtf/OwnFastMallocPtr.h | 52 + src/3rdparty/webkit/JavaScriptCore/wtf/OwnPtr.h | 93 +- .../webkit/JavaScriptCore/wtf/OwnPtrCommon.h | 58 + .../webkit/JavaScriptCore/wtf/PassOwnPtr.h | 177 + .../webkit/JavaScriptCore/wtf/PassRefPtr.h | 2 +- src/3rdparty/webkit/JavaScriptCore/wtf/Platform.h | 131 +- .../webkit/JavaScriptCore/wtf/PtrAndFlags.h | 53 + .../webkit/JavaScriptCore/wtf/RandomNumber.cpp | 47 +- .../webkit/JavaScriptCore/wtf/RandomNumber.h | 8 +- .../webkit/JavaScriptCore/wtf/RandomNumberSeed.h | 9 + .../webkit/JavaScriptCore/wtf/RefCounted.h | 35 +- src/3rdparty/webkit/JavaScriptCore/wtf/RetainPtr.h | 11 +- .../webkit/JavaScriptCore/wtf/StdLibExtras.h | 25 + .../webkit/JavaScriptCore/wtf/StringExtras.h | 4 + src/3rdparty/webkit/JavaScriptCore/wtf/TCPageMap.h | 33 +- .../webkit/JavaScriptCore/wtf/TCSystemAlloc.cpp | 56 +- .../webkit/JavaScriptCore/wtf/TCSystemAlloc.h | 8 +- .../webkit/JavaScriptCore/wtf/ThreadSpecific.h | 59 +- .../JavaScriptCore/wtf/ThreadSpecificWin.cpp | 17 +- .../webkit/JavaScriptCore/wtf/Threading.cpp | 24 +- src/3rdparty/webkit/JavaScriptCore/wtf/Threading.h | 84 +- .../webkit/JavaScriptCore/wtf/ThreadingGtk.cpp | 244 - .../webkit/JavaScriptCore/wtf/ThreadingNone.cpp | 7 +- .../JavaScriptCore/wtf/ThreadingPthreads.cpp | 139 +- .../webkit/JavaScriptCore/wtf/ThreadingQt.cpp | 257 - .../webkit/JavaScriptCore/wtf/ThreadingWin.cpp | 355 +- .../webkit/JavaScriptCore/wtf/TypeTraits.cpp | 120 + .../webkit/JavaScriptCore/wtf/TypeTraits.h | 339 + src/3rdparty/webkit/JavaScriptCore/wtf/VMTags.h | 55 + src/3rdparty/webkit/JavaScriptCore/wtf/Vector.h | 25 +- .../webkit/JavaScriptCore/wtf/VectorTraits.h | 19 +- src/3rdparty/webkit/JavaScriptCore/wtf/dtoa.cpp | 900 +- src/3rdparty/webkit/JavaScriptCore/wtf/dtoa.h | 3 +- .../webkit/JavaScriptCore/wtf/qt/MainThreadQt.cpp | 5 +- .../webkit/JavaScriptCore/wtf/qt/ThreadingQt.cpp | 269 + .../webkit/JavaScriptCore/wtf/unicode/Unicode.h | 4 +- .../wtf/unicode/glib/UnicodeGLib.cpp | 214 + .../JavaScriptCore/wtf/unicode/glib/UnicodeGLib.h | 238 + .../wtf/unicode/glib/UnicodeMacrosFromICU.h | 69 + .../JavaScriptCore/wtf/unicode/icu/UnicodeIcu.h | 11 + .../JavaScriptCore/wtf/unicode/qt4/UnicodeQt4.h | 17 + .../webkit/JavaScriptCore/yarr/RegexCompiler.cpp | 728 + .../webkit/JavaScriptCore/yarr/RegexCompiler.h | 45 + .../JavaScriptCore/yarr/RegexInterpreter.cpp | 1638 + .../webkit/JavaScriptCore/yarr/RegexInterpreter.h | 337 + .../webkit/JavaScriptCore/yarr/RegexJIT.cpp | 1390 + src/3rdparty/webkit/JavaScriptCore/yarr/RegexJIT.h | 91 + .../webkit/JavaScriptCore/yarr/RegexParser.h | 854 + .../webkit/JavaScriptCore/yarr/RegexPattern.h | 356 + src/3rdparty/webkit/VERSION | 4 +- src/3rdparty/webkit/WebCore/ChangeLog | 55874 ++++++++++++++++++- src/3rdparty/webkit/WebCore/DerivedSources.cpp | 14 +- .../WebCore/ForwardingHeaders/debugger/Debugger.h | 3 + .../debugger/DebuggerActivation.h | 4 + .../ForwardingHeaders/debugger/DebuggerCallFrame.h | 3 + .../ForwardingHeaders/interpreter/CallFrame.h | 3 + .../ForwardingHeaders/interpreter/Interpreter.h | 3 + .../webkit/WebCore/ForwardingHeaders/jit/JITCode.h | 4 + .../WebCore/ForwardingHeaders/masm/X86Assembler.h | 3 + .../WebCore/ForwardingHeaders/parser/Parser.h | 3 + .../WebCore/ForwardingHeaders/parser/SourceCode.h | 3 + .../ForwardingHeaders/parser/SourceProvider.h | 3 + .../webkit/WebCore/ForwardingHeaders/pcre/pcre.h | 4 + .../WebCore/ForwardingHeaders/profiler/Profile.h | 4 + .../ForwardingHeaders/profiler/ProfileNode.h | 4 + .../WebCore/ForwardingHeaders/profiler/Profiler.h | 4 + .../WebCore/ForwardingHeaders/runtime/ArgList.h | 3 + .../ForwardingHeaders/runtime/ArrayPrototype.h | 3 + .../ForwardingHeaders/runtime/BooleanObject.h | 3 + .../WebCore/ForwardingHeaders/runtime/ByteArray.h | 1 - .../WebCore/ForwardingHeaders/runtime/CallData.h | 3 + .../WebCore/ForwardingHeaders/runtime/Collector.h | 3 + .../runtime/CollectorHeapIterator.h | 3 + .../WebCore/ForwardingHeaders/runtime/Completion.h | 3 + .../ForwardingHeaders/runtime/ConstructData.h | 3 + .../ForwardingHeaders/runtime/DateInstance.h | 3 + .../WebCore/ForwardingHeaders/runtime/DateMath.h | 4 + .../WebCore/ForwardingHeaders/runtime/Error.h | 3 + .../runtime/FunctionConstructor.h | 3 + .../ForwardingHeaders/runtime/FunctionPrototype.h | 3 + .../WebCore/ForwardingHeaders/runtime/Identifier.h | 3 + .../runtime/InitializeThreading.h | 3 + .../ForwardingHeaders/runtime/InternalFunction.h | 3 + .../WebCore/ForwardingHeaders/runtime/JSArray.h | 3 + .../ForwardingHeaders/runtime/JSByteArray.h | 3 + .../WebCore/ForwardingHeaders/runtime/JSFunction.h | 3 + .../ForwardingHeaders/runtime/JSGlobalData.h | 3 + .../ForwardingHeaders/runtime/JSGlobalObject.h | 3 + .../WebCore/ForwardingHeaders/runtime/JSLock.h | 3 + .../ForwardingHeaders/runtime/JSNumberCell.h | 3 + .../WebCore/ForwardingHeaders/runtime/JSObject.h | 3 + .../WebCore/ForwardingHeaders/runtime/JSString.h | 3 + .../WebCore/ForwardingHeaders/runtime/JSValue.h | 3 + .../WebCore/ForwardingHeaders/runtime/Lookup.h | 3 + .../ForwardingHeaders/runtime/ObjectPrototype.h | 3 + .../WebCore/ForwardingHeaders/runtime/Operations.h | 3 + .../ForwardingHeaders/runtime/PropertyMap.h | 4 + .../ForwardingHeaders/runtime/PropertyNameArray.h | 4 + .../WebCore/ForwardingHeaders/runtime/Protect.h | 4 + .../ForwardingHeaders/runtime/PrototypeFunction.h | 4 + .../ForwardingHeaders/runtime/StringObject.h | 3 + .../StringObjectThatMasqueradesAsUndefined.h | 3 + .../ForwardingHeaders/runtime/StringPrototype.h | 3 + .../WebCore/ForwardingHeaders/runtime/Structure.h | 3 + .../ForwardingHeaders/runtime/SymbolTable.h | 3 + .../WebCore/ForwardingHeaders/runtime/UString.h | 3 + .../webkit/WebCore/ForwardingHeaders/wrec/WREC.h | 3 + .../WebCore/ForwardingHeaders/wtf/ASCIICType.h | 3 + .../WebCore/ForwardingHeaders/wtf/AlwaysInline.h | 3 + .../WebCore/ForwardingHeaders/wtf/Assertions.h | 3 + .../WebCore/ForwardingHeaders/wtf/ByteArray.h | 4 + .../ForwardingHeaders/wtf/CrossThreadRefCounted.h | 1 + .../WebCore/ForwardingHeaders/wtf/CurrentTime.h | 4 + .../webkit/WebCore/ForwardingHeaders/wtf/Deque.h | 3 + .../WebCore/ForwardingHeaders/wtf/DisallowCType.h | 3 + .../WebCore/ForwardingHeaders/wtf/FastMalloc.h | 3 + .../webkit/WebCore/ForwardingHeaders/wtf/Forward.h | 3 + .../webkit/WebCore/ForwardingHeaders/wtf/GetPtr.h | 3 + .../WebCore/ForwardingHeaders/wtf/HashCountedSet.h | 3 + .../WebCore/ForwardingHeaders/wtf/HashFunctions.h | 3 + .../webkit/WebCore/ForwardingHeaders/wtf/HashMap.h | 3 + .../webkit/WebCore/ForwardingHeaders/wtf/HashSet.h | 3 + .../WebCore/ForwardingHeaders/wtf/HashTable.h | 3 + .../WebCore/ForwardingHeaders/wtf/HashTraits.h | 3 + .../WebCore/ForwardingHeaders/wtf/ListHashSet.h | 3 + .../WebCore/ForwardingHeaders/wtf/ListRefPtr.h | 3 + .../webkit/WebCore/ForwardingHeaders/wtf/Locker.h | 3 + .../WebCore/ForwardingHeaders/wtf/MainThread.h | 3 + .../WebCore/ForwardingHeaders/wtf/MathExtras.h | 3 + .../WebCore/ForwardingHeaders/wtf/MessageQueue.h | 3 + .../WebCore/ForwardingHeaders/wtf/Noncopyable.h | 3 + .../WebCore/ForwardingHeaders/wtf/NotFound.h | 3 + .../WebCore/ForwardingHeaders/wtf/OwnArrayPtr.h | 3 + .../ForwardingHeaders/wtf/OwnFastMallocPtr.h | 1 + .../webkit/WebCore/ForwardingHeaders/wtf/OwnPtr.h | 3 + .../WebCore/ForwardingHeaders/wtf/OwnPtrCommon.h | 4 + .../WebCore/ForwardingHeaders/wtf/PassOwnPtr.h | 4 + .../WebCore/ForwardingHeaders/wtf/PassRefPtr.h | 3 + .../WebCore/ForwardingHeaders/wtf/Platform.h | 3 + .../WebCore/ForwardingHeaders/wtf/PtrAndFlags.h | 5 + .../WebCore/ForwardingHeaders/wtf/RandomNumber.h | 4 + .../WebCore/ForwardingHeaders/wtf/RefCounted.h | 3 + .../ForwardingHeaders/wtf/RefCountedLeakCounter.h | 3 + .../webkit/WebCore/ForwardingHeaders/wtf/RefPtr.h | 3 + .../WebCore/ForwardingHeaders/wtf/RetainPtr.h | 3 + .../WebCore/ForwardingHeaders/wtf/StdLibExtras.h | 3 + .../WebCore/ForwardingHeaders/wtf/StringExtras.h | 3 + .../WebCore/ForwardingHeaders/wtf/ThreadSpecific.h | 3 + .../WebCore/ForwardingHeaders/wtf/Threading.h | 3 + .../WebCore/ForwardingHeaders/wtf/TypeTraits.h | 4 + .../WebCore/ForwardingHeaders/wtf/UnusedParam.h | 3 + .../webkit/WebCore/ForwardingHeaders/wtf/VMTags.h | 4 + .../webkit/WebCore/ForwardingHeaders/wtf/Vector.h | 3 + .../WebCore/ForwardingHeaders/wtf/VectorTraits.h | 3 + .../webkit/WebCore/ForwardingHeaders/wtf/dtoa.h | 3 + .../ForwardingHeaders/wtf/unicode/Collator.h | 3 + .../WebCore/ForwardingHeaders/wtf/unicode/UTF8.h | 3 + .../ForwardingHeaders/wtf/unicode/Unicode.h | 3 + .../ForwardingHeaders/wtf/unicode/icu/UnicodeIcu.h | 3 + src/3rdparty/webkit/WebCore/Info.plist | 2 +- src/3rdparty/webkit/WebCore/Resources/panIcon.png | Bin 0 -> 175 bytes src/3rdparty/webkit/WebCore/WebCore.LP64.exp | 12 + src/3rdparty/webkit/WebCore/WebCore.NPAPI.exp | 7 + src/3rdparty/webkit/WebCore/WebCore.VideoProxy.exp | 4 + src/3rdparty/webkit/WebCore/WebCore.order | 35577 +++++++----- src/3rdparty/webkit/WebCore/WebCore.pro | 531 +- src/3rdparty/webkit/WebCore/WebCorePrefix.h | 10 - .../webkit/WebCore/accessibility/AXObjectCache.cpp | 341 + .../webkit/WebCore/accessibility/AXObjectCache.h | 130 + .../accessibility/AccessibilityARIAGrid.cpp | 154 + .../WebCore/accessibility/AccessibilityARIAGrid.h | 60 + .../accessibility/AccessibilityARIAGridCell.cpp | 96 + .../accessibility/AccessibilityARIAGridCell.h | 55 + .../accessibility/AccessibilityARIAGridRow.cpp | 75 + .../accessibility/AccessibilityARIAGridRow.h | 50 + .../accessibility/AccessibilityImageMapLink.cpp | 138 + .../accessibility/AccessibilityImageMapLink.h | 73 + .../WebCore/accessibility/AccessibilityList.cpp | 94 + .../WebCore/accessibility/AccessibilityList.h | 62 + .../WebCore/accessibility/AccessibilityListBox.cpp | 181 + .../WebCore/accessibility/AccessibilityListBox.h | 66 + .../accessibility/AccessibilityListBoxOption.cpp | 207 + .../accessibility/AccessibilityListBoxOption.h | 79 + .../WebCore/accessibility/AccessibilityObject.cpp | 1036 + .../WebCore/accessibility/AccessibilityObject.h | 432 + .../accessibility/AccessibilityRenderObject.cpp | 2539 + .../accessibility/AccessibilityRenderObject.h | 245 + .../WebCore/accessibility/AccessibilityTable.cpp | 489 + .../WebCore/accessibility/AccessibilityTable.h | 93 + .../accessibility/AccessibilityTableCell.cpp | 162 + .../WebCore/accessibility/AccessibilityTableCell.h | 65 + .../accessibility/AccessibilityTableColumn.cpp | 185 + .../accessibility/AccessibilityTableColumn.h | 75 + .../AccessibilityTableHeaderContainer.cpp | 87 + .../AccessibilityTableHeaderContainer.h | 67 + .../accessibility/AccessibilityTableRow.cpp | 118 + .../WebCore/accessibility/AccessibilityTableRow.h | 65 + .../accessibility/qt/AccessibilityObjectQt.cpp | 34 + .../webkit/WebCore/bindings/js/DOMTimer.cpp | 177 - src/3rdparty/webkit/WebCore/bindings/js/DOMTimer.h | 68 - .../webkit/WebCore/bindings/js/GCController.cpp | 2 +- .../webkit/WebCore/bindings/js/JSAttrCustom.cpp | 4 +- .../WebCore/bindings/js/JSAudioConstructor.cpp | 25 +- .../WebCore/bindings/js/JSAudioConstructor.h | 6 +- .../WebCore/bindings/js/JSCDATASectionCustom.cpp | 43 + .../webkit/WebCore/bindings/js/JSCSSRuleCustom.cpp | 2 +- .../bindings/js/JSCSSStyleDeclarationCustom.cpp | 6 +- .../WebCore/bindings/js/JSCSSValueCustom.cpp | 2 +- .../js/JSCanvasRenderingContext2DCustom.cpp | 200 +- .../WebCore/bindings/js/JSClipboardCustom.cpp | 24 +- .../webkit/WebCore/bindings/js/JSConsoleCustom.cpp | 8 +- .../WebCore/bindings/js/JSCoordinatesCustom.cpp | 67 + .../bindings/js/JSCustomPositionCallback.cpp | 14 +- .../bindings/js/JSCustomPositionErrorCallback.cpp | 14 +- .../bindings/js/JSCustomSQLStatementCallback.cpp | 17 +- .../bindings/js/JSCustomSQLStatementCallback.h | 4 + .../js/JSCustomSQLStatementErrorCallback.cpp | 22 +- .../js/JSCustomSQLStatementErrorCallback.h | 4 + .../bindings/js/JSCustomSQLTransactionCallback.cpp | 19 +- .../bindings/js/JSCustomSQLTransactionCallback.h | 4 + .../js/JSCustomSQLTransactionErrorCallback.cpp | 45 +- .../js/JSCustomSQLTransactionErrorCallback.h | 5 +- .../WebCore/bindings/js/JSCustomVoidCallback.cpp | 19 +- .../WebCore/bindings/js/JSCustomVoidCallback.h | 2 +- .../bindings/js/JSCustomXPathNSResolver.cpp | 28 +- .../WebCore/bindings/js/JSCustomXPathNSResolver.h | 2 +- .../bindings/js/JSDOMApplicationCacheCustom.cpp | 64 +- .../webkit/WebCore/bindings/js/JSDOMBinding.cpp | 167 +- .../webkit/WebCore/bindings/js/JSDOMBinding.h | 53 +- .../WebCore/bindings/js/JSDOMGlobalObject.cpp | 82 +- .../webkit/WebCore/bindings/js/JSDOMGlobalObject.h | 35 +- .../WebCore/bindings/js/JSDOMStringListCustom.cpp | 6 +- .../webkit/WebCore/bindings/js/JSDOMWindowBase.cpp | 631 +- .../webkit/WebCore/bindings/js/JSDOMWindowBase.h | 37 +- .../WebCore/bindings/js/JSDOMWindowCustom.cpp | 461 +- .../webkit/WebCore/bindings/js/JSDOMWindowCustom.h | 51 +- .../WebCore/bindings/js/JSDOMWindowShell.cpp | 34 +- .../webkit/WebCore/bindings/js/JSDOMWindowShell.h | 14 +- .../WebCore/bindings/js/JSDatabaseCustom.cpp | 33 +- .../WebCore/bindings/js/JSDocumentCustom.cpp | 24 +- .../webkit/WebCore/bindings/js/JSElementCustom.cpp | 30 +- .../webkit/WebCore/bindings/js/JSEventCustom.cpp | 4 +- .../webkit/WebCore/bindings/js/JSEventListener.cpp | 281 +- .../webkit/WebCore/bindings/js/JSEventListener.h | 98 +- .../webkit/WebCore/bindings/js/JSEventTarget.cpp | 60 +- .../webkit/WebCore/bindings/js/JSEventTarget.h | 3 +- .../webkit/WebCore/bindings/js/JSEventTargetBase.h | 92 - .../bindings/js/JSEventTargetNodeCustom.cpp | 71 - .../WebCore/bindings/js/JSGeolocationCustom.cpp | 49 +- .../WebCore/bindings/js/JSHTMLAllCollection.h | 2 +- .../bindings/js/JSHTMLAppletElementCustom.cpp | 4 +- .../WebCore/bindings/js/JSHTMLCollectionCustom.cpp | 30 +- .../WebCore/bindings/js/JSHTMLDocumentCustom.cpp | 63 +- .../bindings/js/JSHTMLEmbedElementCustom.cpp | 4 +- .../bindings/js/JSHTMLFormElementCustom.cpp | 13 +- .../bindings/js/JSHTMLFrameElementCustom.cpp | 6 +- .../bindings/js/JSHTMLFrameSetElementCustom.cpp | 3 +- .../bindings/js/JSHTMLIFrameElementCustom.cpp | 4 +- .../bindings/js/JSHTMLInputElementCustom.cpp | 82 +- .../bindings/js/JSHTMLObjectElementCustom.cpp | 4 +- .../bindings/js/JSHTMLOptionsCollectionCustom.cpp | 16 +- .../bindings/js/JSHTMLSelectElementCustom.cpp | 12 +- .../bindings/js/JSHTMLSelectElementCustom.h | 2 +- .../webkit/WebCore/bindings/js/JSHistoryCustom.cpp | 8 +- .../WebCore/bindings/js/JSImageConstructor.cpp | 27 +- .../WebCore/bindings/js/JSImageConstructor.h | 6 +- .../WebCore/bindings/js/JSImageDataCustom.cpp | 4 +- .../bindings/js/JSInspectedObjectWrapper.cpp | 18 +- .../WebCore/bindings/js/JSInspectedObjectWrapper.h | 6 +- .../bindings/js/JSInspectorCallbackWrapper.cpp | 14 +- .../bindings/js/JSInspectorCallbackWrapper.h | 6 +- .../bindings/js/JSInspectorControllerCustom.cpp | 298 + .../bindings/js/JSJavaScriptCallFrameCustom.cpp | 18 +- .../WebCore/bindings/js/JSLazyEventListener.cpp | 129 + .../WebCore/bindings/js/JSLazyEventListener.h | 56 + .../WebCore/bindings/js/JSLocationCustom.cpp | 141 +- .../bindings/js/JSMessageChannelConstructor.cpp | 31 +- .../bindings/js/JSMessageChannelConstructor.h | 7 +- .../WebCore/bindings/js/JSMessagePortCustom.cpp | 33 +- .../WebCore/bindings/js/JSMimeTypeArrayCustom.cpp | 2 +- .../WebCore/bindings/js/JSNamedNodeMapCustom.cpp | 2 +- .../WebCore/bindings/js/JSNamedNodesCollection.cpp | 8 +- .../WebCore/bindings/js/JSNamedNodesCollection.h | 10 +- .../WebCore/bindings/js/JSNavigatorCustom.cpp | 86 +- .../webkit/WebCore/bindings/js/JSNodeCustom.cpp | 77 +- .../WebCore/bindings/js/JSNodeFilterCondition.cpp | 16 +- .../WebCore/bindings/js/JSNodeFilterCondition.h | 6 +- .../WebCore/bindings/js/JSNodeFilterCustom.cpp | 8 +- .../WebCore/bindings/js/JSNodeIteratorCustom.cpp | 4 +- .../WebCore/bindings/js/JSNodeListCustom.cpp | 6 +- .../WebCore/bindings/js/JSOptionConstructor.cpp | 42 +- .../WebCore/bindings/js/JSOptionConstructor.h | 6 +- .../WebCore/bindings/js/JSPluginArrayCustom.cpp | 2 +- .../webkit/WebCore/bindings/js/JSPluginCustom.cpp | 2 +- .../bindings/js/JSPluginElementFunctions.cpp | 16 +- .../WebCore/bindings/js/JSPluginElementFunctions.h | 6 +- .../bindings/js/JSQuarantinedObjectWrapper.cpp | 49 +- .../bindings/js/JSQuarantinedObjectWrapper.h | 18 +- .../webkit/WebCore/bindings/js/JSRGBColor.cpp | 16 +- .../webkit/WebCore/bindings/js/JSRGBColor.h | 8 +- .../bindings/js/JSSQLResultSetRowListCustom.cpp | 10 +- .../WebCore/bindings/js/JSSQLTransactionCustom.cpp | 34 +- .../bindings/js/JSSVGElementInstanceCustom.cpp | 40 +- .../WebCore/bindings/js/JSSVGLengthCustom.cpp | 6 +- .../WebCore/bindings/js/JSSVGMatrixCustom.cpp | 84 +- .../WebCore/bindings/js/JSSVGPODTypeWrapper.h | 1 - .../WebCore/bindings/js/JSSVGPathSegCustom.cpp | 2 +- .../WebCore/bindings/js/JSSVGPathSegListCustom.cpp | 42 +- .../WebCore/bindings/js/JSSVGPointListCustom.cpp | 36 +- .../bindings/js/JSSVGTransformListCustom.cpp | 36 +- .../webkit/WebCore/bindings/js/JSStorageCustom.cpp | 14 +- .../WebCore/bindings/js/JSStyleSheetCustom.cpp | 3 +- .../WebCore/bindings/js/JSStyleSheetListCustom.cpp | 2 +- .../webkit/WebCore/bindings/js/JSTextCustom.cpp | 2 +- .../WebCore/bindings/js/JSTreeWalkerCustom.cpp | 14 +- .../bindings/js/JSWebKitCSSMatrixConstructor.cpp | 63 + .../bindings/js/JSWebKitCSSMatrixConstructor.h | 46 + .../bindings/js/JSWebKitPointConstructor.cpp | 68 + .../WebCore/bindings/js/JSWebKitPointConstructor.h | 46 + .../WebCore/bindings/js/JSWorkerConstructor.cpp | 3 +- .../WebCore/bindings/js/JSWorkerContextBase.cpp | 40 +- .../WebCore/bindings/js/JSWorkerContextBase.h | 6 +- .../WebCore/bindings/js/JSWorkerContextCustom.cpp | 97 +- .../webkit/WebCore/bindings/js/JSWorkerCustom.cpp | 27 +- .../bindings/js/JSXMLHttpRequestConstructor.cpp | 23 +- .../bindings/js/JSXMLHttpRequestConstructor.h | 7 +- .../WebCore/bindings/js/JSXMLHttpRequestCustom.cpp | 87 +- .../bindings/js/JSXMLHttpRequestUploadCustom.cpp | 39 +- .../bindings/js/JSXSLTProcessorConstructor.cpp | 4 +- .../WebCore/bindings/js/JSXSLTProcessorCustom.cpp | 46 +- .../webkit/WebCore/bindings/js/ScheduledAction.cpp | 126 +- .../webkit/WebCore/bindings/js/ScheduledAction.h | 29 +- .../WebCore/bindings/js/ScriptCachedFrameData.cpp | 95 + .../WebCore/bindings/js/ScriptCachedFrameData.h | 57 + .../WebCore/bindings/js/ScriptCachedPageData.cpp | 93 - .../WebCore/bindings/js/ScriptCachedPageData.h | 56 - .../webkit/WebCore/bindings/js/ScriptCallFrame.cpp | 4 +- .../webkit/WebCore/bindings/js/ScriptCallFrame.h | 2 +- .../webkit/WebCore/bindings/js/ScriptCallStack.cpp | 12 +- .../WebCore/bindings/js/ScriptController.cpp | 133 +- .../webkit/WebCore/bindings/js/ScriptController.h | 21 +- .../WebCore/bindings/js/ScriptControllerMac.mm | 14 +- .../WebCore/bindings/js/ScriptEventListener.cpp | 90 + .../WebCore/bindings/js/ScriptEventListener.h | 49 + .../WebCore/bindings/js/ScriptFunctionCall.cpp | 176 + .../WebCore/bindings/js/ScriptFunctionCall.h | 77 + .../webkit/WebCore/bindings/js/ScriptObject.cpp | 154 + .../webkit/WebCore/bindings/js/ScriptObject.h | 72 + .../WebCore/bindings/js/ScriptObjectQuarantine.cpp | 122 + .../WebCore/bindings/js/ScriptObjectQuarantine.h | 59 + .../webkit/WebCore/bindings/js/ScriptState.cpp | 60 + .../webkit/WebCore/bindings/js/ScriptState.h | 9 +- .../webkit/WebCore/bindings/js/ScriptString.h | 5 - .../webkit/WebCore/bindings/js/ScriptValue.cpp | 18 +- .../webkit/WebCore/bindings/js/ScriptValue.h | 12 +- .../WebCore/bindings/js/WorkerScriptController.cpp | 44 +- .../WebCore/bindings/js/WorkerScriptController.h | 4 +- .../WebCore/bindings/scripts/CodeGenerator.pm | 8 +- .../WebCore/bindings/scripts/CodeGeneratorCOM.pm | 13 +- .../WebCore/bindings/scripts/CodeGeneratorJS.pm | 331 +- .../WebCore/bindings/scripts/CodeGeneratorObjC.pm | 464 +- .../WebCore/bindings/scripts/InFilesParser.pm | 14 +- .../webkit/WebCore/bridge/IdentifierRep.cpp | 111 + src/3rdparty/webkit/WebCore/bridge/IdentifierRep.h | 74 + src/3rdparty/webkit/WebCore/bridge/NP_jsobject.cpp | 109 +- src/3rdparty/webkit/WebCore/bridge/c/c_class.cpp | 5 - src/3rdparty/webkit/WebCore/bridge/c/c_class.h | 1 - .../webkit/WebCore/bridge/c/c_instance.cpp | 84 +- src/3rdparty/webkit/WebCore/bridge/c/c_instance.h | 34 +- src/3rdparty/webkit/WebCore/bridge/c/c_runtime.cpp | 22 +- src/3rdparty/webkit/WebCore/bridge/c/c_runtime.h | 9 +- src/3rdparty/webkit/WebCore/bridge/c/c_utility.cpp | 24 +- src/3rdparty/webkit/WebCore/bridge/c/c_utility.h | 22 +- .../webkit/WebCore/bridge/jni/jni_class.cpp | 12 +- src/3rdparty/webkit/WebCore/bridge/jni/jni_class.h | 4 - .../webkit/WebCore/bridge/jni/jni_instance.cpp | 26 +- .../webkit/WebCore/bridge/jni/jni_instance.h | 14 +- .../webkit/WebCore/bridge/jni/jni_jsobject.h | 7 +- .../webkit/WebCore/bridge/jni/jni_jsobject.mm | 44 +- src/3rdparty/webkit/WebCore/bridge/jni/jni_objc.mm | 2 +- .../webkit/WebCore/bridge/jni/jni_runtime.cpp | 30 +- .../webkit/WebCore/bridge/jni/jni_runtime.h | 16 +- .../webkit/WebCore/bridge/jni/jni_utility.cpp | 60 +- .../webkit/WebCore/bridge/jni/jni_utility.h | 4 +- src/3rdparty/webkit/WebCore/bridge/npapi.h | 49 +- src/3rdparty/webkit/WebCore/bridge/npruntime.cpp | 96 +- src/3rdparty/webkit/WebCore/bridge/qt/qt_class.cpp | 2 +- src/3rdparty/webkit/WebCore/bridge/qt/qt_class.h | 2 +- .../webkit/WebCore/bridge/qt/qt_instance.cpp | 104 +- .../webkit/WebCore/bridge/qt/qt_instance.h | 23 +- .../webkit/WebCore/bridge/qt/qt_runtime.cpp | 139 +- src/3rdparty/webkit/WebCore/bridge/qt/qt_runtime.h | 29 +- src/3rdparty/webkit/WebCore/bridge/runtime.cpp | 34 +- src/3rdparty/webkit/WebCore/bridge/runtime.h | 50 +- .../webkit/WebCore/bridge/runtime_array.cpp | 8 +- src/3rdparty/webkit/WebCore/bridge/runtime_array.h | 14 +- .../webkit/WebCore/bridge/runtime_method.cpp | 12 +- .../webkit/WebCore/bridge/runtime_method.h | 8 +- .../webkit/WebCore/bridge/runtime_object.cpp | 51 +- .../webkit/WebCore/bridge/runtime_object.h | 21 +- src/3rdparty/webkit/WebCore/bridge/testbindings.mm | 2 +- src/3rdparty/webkit/WebCore/config.h | 24 + src/3rdparty/webkit/WebCore/css/CSSCanvasValue.cpp | 7 + src/3rdparty/webkit/WebCore/css/CSSCanvasValue.h | 5 +- src/3rdparty/webkit/WebCore/css/CSSCharsetRule.idl | 2 +- .../WebCore/css/CSSComputedStyleDeclaration.cpp | 346 +- .../WebCore/css/CSSComputedStyleDeclaration.h | 1 + .../webkit/WebCore/css/CSSCursorImageValue.cpp | 5 +- .../webkit/WebCore/css/CSSFontFaceSource.cpp | 8 +- .../webkit/WebCore/css/CSSFontSelector.cpp | 30 +- src/3rdparty/webkit/WebCore/css/CSSGrammar.y | 27 +- .../WebCore/css/CSSMutableStyleDeclaration.cpp | 241 +- .../WebCore/css/CSSMutableStyleDeclaration.h | 4 +- src/3rdparty/webkit/WebCore/css/CSSParser.cpp | 253 +- src/3rdparty/webkit/WebCore/css/CSSParser.h | 12 +- .../webkit/WebCore/css/CSSParserValues.cpp | 2 +- src/3rdparty/webkit/WebCore/css/CSSParserValues.h | 2 +- .../webkit/WebCore/css/CSSPrimitiveValue.cpp | 21 +- .../webkit/WebCore/css/CSSPrimitiveValue.h | 2 + .../webkit/WebCore/css/CSSPrimitiveValue.idl | 2 +- .../webkit/WebCore/css/CSSPrimitiveValueMappings.h | 25 +- .../webkit/WebCore/css/CSSPropertyLonghand.cpp | 213 + .../webkit/WebCore/css/CSSPropertyLonghand.h | 53 + .../webkit/WebCore/css/CSSPropertyNames.in | 15 +- src/3rdparty/webkit/WebCore/css/CSSRule.idl | 4 +- src/3rdparty/webkit/WebCore/css/CSSSelector.cpp | 20 +- src/3rdparty/webkit/WebCore/css/CSSSelector.h | 4 +- .../webkit/WebCore/css/CSSSelectorList.cpp | 31 +- .../webkit/WebCore/css/CSSStyleDeclaration.cpp | 2 +- .../webkit/WebCore/css/CSSStyleDeclaration.h | 1 + .../webkit/WebCore/css/CSSStyleSelector.cpp | 832 +- src/3rdparty/webkit/WebCore/css/CSSStyleSelector.h | 19 +- src/3rdparty/webkit/WebCore/css/CSSStyleSheet.cpp | 6 +- src/3rdparty/webkit/WebCore/css/CSSValue.idl | 4 +- .../webkit/WebCore/css/CSSValueKeywords.in | 15 +- .../webkit/WebCore/css/CSSVariablesDeclaration.cpp | 6 +- .../webkit/WebCore/css/CSSVariablesDeclaration.h | 2 +- .../webkit/WebCore/css/MediaFeatureNames.h | 4 + .../webkit/WebCore/css/MediaQueryEvaluator.cpp | 65 +- src/3rdparty/webkit/WebCore/css/MediaQueryExp.h | 6 +- src/3rdparty/webkit/WebCore/css/RGBColor.idl | 4 +- .../WebCore/css/SVGCSSComputedStyleDeclaration.cpp | 1 + src/3rdparty/webkit/WebCore/css/SVGCSSParser.cpp | 8 - .../webkit/WebCore/css/SVGCSSStyleSelector.cpp | 121 +- src/3rdparty/webkit/WebCore/css/StyleSheet.idl | 4 +- .../webkit/WebCore/css/WebKitCSSMatrix.cpp | 186 + src/3rdparty/webkit/WebCore/css/WebKitCSSMatrix.h | 159 + .../webkit/WebCore/css/WebKitCSSMatrix.idl | 86 + .../webkit/WebCore/css/WebKitCSSTransformValue.cpp | 30 + .../webkit/WebCore/css/WebKitCSSTransformValue.h | 12 +- .../webkit/WebCore/css/WebKitCSSTransformValue.idl | 10 + src/3rdparty/webkit/WebCore/css/html4.css | 7 +- src/3rdparty/webkit/WebCore/css/maketokenizer | 7 + src/3rdparty/webkit/WebCore/css/mediaControls.css | 23 +- .../webkit/WebCore/css/mediaControlsChromium.css | 165 + .../webkit/WebCore/css/mediaControlsQT.css | 133 + src/3rdparty/webkit/WebCore/css/themeWin.css | 38 +- src/3rdparty/webkit/WebCore/css/themeWinQuirks.css | 2 +- src/3rdparty/webkit/WebCore/dom/Attr.h | 2 +- src/3rdparty/webkit/WebCore/dom/Attr.idl | 4 +- src/3rdparty/webkit/WebCore/dom/Attribute.h | 4 +- src/3rdparty/webkit/WebCore/dom/CharacterData.cpp | 23 +- src/3rdparty/webkit/WebCore/dom/CharacterData.h | 8 +- src/3rdparty/webkit/WebCore/dom/CharacterData.idl | 2 +- .../webkit/WebCore/dom/CheckedRadioButtons.cpp | 86 + .../webkit/WebCore/dom/CheckedRadioButtons.h | 47 + src/3rdparty/webkit/WebCore/dom/ClassNames.h | 2 +- src/3rdparty/webkit/WebCore/dom/ClientRect.cpp | 41 + src/3rdparty/webkit/WebCore/dom/ClientRect.h | 59 + src/3rdparty/webkit/WebCore/dom/ClientRect.idl | 40 + src/3rdparty/webkit/WebCore/dom/ClientRectList.cpp | 66 + src/3rdparty/webkit/WebCore/dom/ClientRectList.h | 57 + src/3rdparty/webkit/WebCore/dom/ClientRectList.idl | 38 + src/3rdparty/webkit/WebCore/dom/Clipboard.cpp | 1 + src/3rdparty/webkit/WebCore/dom/ContainerNode.cpp | 217 +- src/3rdparty/webkit/WebCore/dom/ContainerNode.h | 17 +- .../webkit/WebCore/dom/DOMCoreException.idl | 9 +- .../webkit/WebCore/dom/DOMImplementation.cpp | 34 +- .../webkit/WebCore/dom/DOMImplementation.idl | 2 +- src/3rdparty/webkit/WebCore/dom/Document.cpp | 946 +- src/3rdparty/webkit/WebCore/dom/Document.h | 209 +- src/3rdparty/webkit/WebCore/dom/Document.idl | 45 +- .../webkit/WebCore/dom/DocumentFragment.idl | 7 +- src/3rdparty/webkit/WebCore/dom/DocumentMarker.h | 6 +- src/3rdparty/webkit/WebCore/dom/Element.cpp | 281 +- src/3rdparty/webkit/WebCore/dom/Element.h | 56 +- src/3rdparty/webkit/WebCore/dom/Element.idl | 20 +- src/3rdparty/webkit/WebCore/dom/ElementRareData.h | 13 +- src/3rdparty/webkit/WebCore/dom/Event.cpp | 6 +- src/3rdparty/webkit/WebCore/dom/Event.h | 2 +- src/3rdparty/webkit/WebCore/dom/Event.idl | 10 +- src/3rdparty/webkit/WebCore/dom/EventException.idl | 5 +- src/3rdparty/webkit/WebCore/dom/EventListener.h | 21 +- src/3rdparty/webkit/WebCore/dom/EventListener.idl | 1 + src/3rdparty/webkit/WebCore/dom/EventNames.h | 9 +- src/3rdparty/webkit/WebCore/dom/EventTarget.cpp | 7 +- src/3rdparty/webkit/WebCore/dom/EventTarget.h | 8 +- src/3rdparty/webkit/WebCore/dom/EventTarget.idl | 6 +- .../webkit/WebCore/dom/EventTargetNode.cpp | 1166 - src/3rdparty/webkit/WebCore/dom/EventTargetNode.h | 206 - .../webkit/WebCore/dom/EventTargetNode.idl | 84 - src/3rdparty/webkit/WebCore/dom/ExceptionCode.cpp | 9 +- src/3rdparty/webkit/WebCore/dom/ExceptionCode.h | 8 +- .../webkit/WebCore/dom/FormControlElement.h | 39 - src/3rdparty/webkit/WebCore/dom/InputElement.cpp | 304 + src/3rdparty/webkit/WebCore/dom/InputElement.h | 123 + src/3rdparty/webkit/WebCore/dom/KeyboardEvent.idl | 6 +- src/3rdparty/webkit/WebCore/dom/MessagePort.cpp | 56 +- src/3rdparty/webkit/WebCore/dom/MessagePort.h | 21 +- src/3rdparty/webkit/WebCore/dom/MessagePort.idl | 2 +- src/3rdparty/webkit/WebCore/dom/MessagePortProxy.h | 54 + src/3rdparty/webkit/WebCore/dom/MouseEvent.cpp | 8 +- src/3rdparty/webkit/WebCore/dom/MouseEvent.h | 11 +- src/3rdparty/webkit/WebCore/dom/MouseEvent.idl | 2 +- .../webkit/WebCore/dom/MouseRelatedEvent.cpp | 23 +- .../webkit/WebCore/dom/MouseRelatedEvent.h | 11 + src/3rdparty/webkit/WebCore/dom/NamedAttrMap.cpp | 64 +- src/3rdparty/webkit/WebCore/dom/NamedAttrMap.h | 74 +- .../webkit/WebCore/dom/NamedMappedAttrMap.cpp | 7 +- .../webkit/WebCore/dom/NamedMappedAttrMap.h | 24 +- src/3rdparty/webkit/WebCore/dom/NamedNodeMap.h | 65 +- src/3rdparty/webkit/WebCore/dom/Node.cpp | 1349 +- src/3rdparty/webkit/WebCore/dom/Node.h | 206 +- src/3rdparty/webkit/WebCore/dom/Node.idl | 73 +- src/3rdparty/webkit/WebCore/dom/NodeFilter.h | 1 - src/3rdparty/webkit/WebCore/dom/NodeIterator.h | 1 - src/3rdparty/webkit/WebCore/dom/NodeRareData.h | 12 +- src/3rdparty/webkit/WebCore/dom/OptionElement.cpp | 150 + src/3rdparty/webkit/WebCore/dom/OptionElement.h | 78 + .../webkit/WebCore/dom/OptionGroupElement.cpp | 58 + .../webkit/WebCore/dom/OptionGroupElement.h | 41 + src/3rdparty/webkit/WebCore/dom/Position.cpp | 338 +- src/3rdparty/webkit/WebCore/dom/Position.h | 121 +- .../webkit/WebCore/dom/PositionIterator.cpp | 110 +- src/3rdparty/webkit/WebCore/dom/PositionIterator.h | 22 +- .../webkit/WebCore/dom/ProcessingInstruction.idl | 2 +- src/3rdparty/webkit/WebCore/dom/QualifiedName.cpp | 37 +- src/3rdparty/webkit/WebCore/dom/QualifiedName.h | 34 +- src/3rdparty/webkit/WebCore/dom/Range.cpp | 110 +- src/3rdparty/webkit/WebCore/dom/Range.h | 8 +- src/3rdparty/webkit/WebCore/dom/Range.idl | 2 +- .../webkit/WebCore/dom/RangeBoundaryPoint.h | 116 +- src/3rdparty/webkit/WebCore/dom/RangeException.idl | 2 +- .../webkit/WebCore/dom/RegisteredEventListener.h | 22 +- src/3rdparty/webkit/WebCore/dom/ScriptElement.cpp | 56 +- src/3rdparty/webkit/WebCore/dom/ScriptElement.h | 8 + .../webkit/WebCore/dom/ScriptExecutionContext.cpp | 16 + .../webkit/WebCore/dom/ScriptExecutionContext.h | 21 +- src/3rdparty/webkit/WebCore/dom/SelectElement.cpp | 928 + src/3rdparty/webkit/WebCore/dom/SelectElement.h | 176 + src/3rdparty/webkit/WebCore/dom/StyleElement.cpp | 27 +- src/3rdparty/webkit/WebCore/dom/StyledElement.cpp | 29 +- src/3rdparty/webkit/WebCore/dom/StyledElement.h | 5 + src/3rdparty/webkit/WebCore/dom/Text.cpp | 41 +- src/3rdparty/webkit/WebCore/dom/Text.h | 1 - src/3rdparty/webkit/WebCore/dom/Tokenizer.h | 2 +- src/3rdparty/webkit/WebCore/dom/TreeWalker.h | 1 - src/3rdparty/webkit/WebCore/dom/WheelEvent.cpp | 11 +- src/3rdparty/webkit/WebCore/dom/WheelEvent.h | 6 +- src/3rdparty/webkit/WebCore/dom/WheelEvent.idl | 4 +- src/3rdparty/webkit/WebCore/dom/Worker.cpp | 202 - src/3rdparty/webkit/WebCore/dom/Worker.h | 113 - src/3rdparty/webkit/WebCore/dom/Worker.idl | 48 - src/3rdparty/webkit/WebCore/dom/WorkerContext.cpp | 195 - src/3rdparty/webkit/WebCore/dom/WorkerContext.h | 122 - src/3rdparty/webkit/WebCore/dom/WorkerContext.idl | 61 - src/3rdparty/webkit/WebCore/dom/WorkerLocation.cpp | 85 - src/3rdparty/webkit/WebCore/dom/WorkerLocation.h | 73 - src/3rdparty/webkit/WebCore/dom/WorkerLocation.idl | 48 - .../webkit/WebCore/dom/WorkerMessagingProxy.cpp | 311 - .../webkit/WebCore/dom/WorkerMessagingProxy.h | 93 - src/3rdparty/webkit/WebCore/dom/WorkerTask.cpp | 41 - src/3rdparty/webkit/WebCore/dom/WorkerTask.h | 48 - src/3rdparty/webkit/WebCore/dom/WorkerThread.cpp | 154 - src/3rdparty/webkit/WebCore/dom/WorkerThread.h | 79 - src/3rdparty/webkit/WebCore/dom/XMLTokenizer.cpp | 80 +- src/3rdparty/webkit/WebCore/dom/XMLTokenizer.h | 15 +- .../webkit/WebCore/dom/XMLTokenizerLibxml2.cpp | 237 +- src/3rdparty/webkit/WebCore/dom/XMLTokenizerQt.cpp | 124 +- .../webkit/WebCore/dom/XMLTokenizerScope.cpp | 68 + .../webkit/WebCore/dom/XMLTokenizerScope.h | 62 + src/3rdparty/webkit/WebCore/dom/make_names.pl | 251 +- .../webkit/WebCore/editing/ApplyStyleCommand.cpp | 385 +- .../webkit/WebCore/editing/ApplyStyleCommand.h | 11 +- .../WebCore/editing/BreakBlockquoteCommand.cpp | 61 +- .../WebCore/editing/CompositeEditCommand.cpp | 158 +- .../webkit/WebCore/editing/CompositeEditCommand.h | 6 +- .../webkit/WebCore/editing/CreateLinkCommand.cpp | 2 +- .../WebCore/editing/DeleteButtonController.cpp | 112 +- .../WebCore/editing/DeleteButtonController.h | 4 +- .../WebCore/editing/DeleteSelectionCommand.cpp | 107 +- .../WebCore/editing/DeleteSelectionCommand.h | 8 +- .../webkit/WebCore/editing/EditCommand.cpp | 12 +- src/3rdparty/webkit/WebCore/editing/EditCommand.h | 14 +- src/3rdparty/webkit/WebCore/editing/Editor.cpp | 855 +- src/3rdparty/webkit/WebCore/editing/Editor.h | 38 +- .../webkit/WebCore/editing/EditorCommand.cpp | 103 +- .../webkit/WebCore/editing/FormatBlockCommand.cpp | 6 +- .../WebCore/editing/IndentOutdentCommand.cpp | 40 +- .../WebCore/editing/InsertLineBreakCommand.cpp | 41 +- .../webkit/WebCore/editing/InsertListCommand.cpp | 30 +- .../webkit/WebCore/editing/InsertListCommand.h | 7 +- .../editing/InsertParagraphSeparatorCommand.cpp | 128 +- .../webkit/WebCore/editing/InsertTextCommand.cpp | 45 +- .../WebCore/editing/ModifySelectionListLevel.cpp | 24 +- .../WebCore/editing/MoveSelectionCommand.cpp | 14 +- .../WebCore/editing/RemoveCSSPropertyCommand.h | 1 + .../webkit/WebCore/editing/RemoveFormatCommand.cpp | 5 +- .../WebCore/editing/RemoveNodeAttributeCommand.cpp | 1 - .../WebCore/editing/RemoveNodeAttributeCommand.h | 1 - .../RemoveNodePreservingChildrenCommand.cpp | 3 +- .../WebCore/editing/ReplaceNodeWithSpanCommand.cpp | 87 + .../WebCore/editing/ReplaceNodeWithSpanCommand.h | 62 + .../WebCore/editing/ReplaceSelectionCommand.cpp | 196 +- .../WebCore/editing/ReplaceSelectionCommand.h | 11 +- src/3rdparty/webkit/WebCore/editing/Selection.cpp | 605 - src/3rdparty/webkit/WebCore/editing/Selection.h | 136 - .../webkit/WebCore/editing/SelectionController.cpp | 230 +- .../webkit/WebCore/editing/SelectionController.h | 28 +- .../webkit/WebCore/editing/SmartReplaceCF.cpp | 1 + .../webkit/WebCore/editing/SplitElementCommand.cpp | 2 +- src/3rdparty/webkit/WebCore/editing/TextAffinity.h | 14 +- .../webkit/WebCore/editing/TextIterator.cpp | 136 +- src/3rdparty/webkit/WebCore/editing/TextIterator.h | 21 +- .../webkit/WebCore/editing/TypingCommand.cpp | 178 +- .../webkit/WebCore/editing/TypingCommand.h | 4 +- .../webkit/WebCore/editing/VisiblePosition.cpp | 82 +- .../webkit/WebCore/editing/VisiblePosition.h | 8 +- .../webkit/WebCore/editing/VisibleSelection.cpp | 657 + .../webkit/WebCore/editing/VisibleSelection.h | 149 + .../WebCore/editing/android/EditorAndroid.cpp | 39 + .../WebCore/editing/chromium/EditorChromium.cpp | 44 + .../WebCore/editing/gtk/SelectionControllerGtk.cpp | 45 + .../webkit/WebCore/editing/htmlediting.cpp | 163 +- src/3rdparty/webkit/WebCore/editing/htmlediting.h | 13 +- src/3rdparty/webkit/WebCore/editing/markup.cpp | 190 +- .../webkit/WebCore/editing/qt/EditorQt.cpp | 2 +- .../webkit/WebCore/editing/visible_units.cpp | 469 +- .../webkit/WebCore/editing/visible_units.h | 3 + .../webkit/WebCore/generated/ArrayPrototype.lut.h | 9 +- .../webkit/WebCore/generated/CSSGrammar.cpp | 2361 +- src/3rdparty/webkit/WebCore/generated/CSSGrammar.h | 231 +- .../webkit/WebCore/generated/CSSPropertyNames.cpp | 1255 +- .../webkit/WebCore/generated/CSSPropertyNames.h | 359 +- .../webkit/WebCore/generated/CSSValueKeywords.c | 2834 +- .../webkit/WebCore/generated/CSSValueKeywords.h | 412 +- .../webkit/WebCore/generated/DatePrototype.lut.h | 7 +- src/3rdparty/webkit/WebCore/generated/Grammar.cpp | 1701 +- src/3rdparty/webkit/WebCore/generated/Grammar.h | 109 +- .../WebCore/generated/HTMLElementFactory.cpp | 546 + .../webkit/WebCore/generated/HTMLElementFactory.h | 56 + .../webkit/WebCore/generated/HTMLNames.cpp | 18 +- src/3rdparty/webkit/WebCore/generated/HTMLNames.h | 13 +- src/3rdparty/webkit/WebCore/generated/JSAttr.cpp | 45 +- src/3rdparty/webkit/WebCore/generated/JSAttr.h | 35 +- .../webkit/WebCore/generated/JSBarInfo.cpp | 20 +- src/3rdparty/webkit/WebCore/generated/JSBarInfo.h | 13 +- .../webkit/WebCore/generated/JSCDATASection.cpp | 18 +- .../webkit/WebCore/generated/JSCDATASection.h | 12 +- .../webkit/WebCore/generated/JSCSSCharsetRule.cpp | 25 +- .../webkit/WebCore/generated/JSCSSCharsetRule.h | 17 +- .../webkit/WebCore/generated/JSCSSFontFaceRule.cpp | 21 +- .../webkit/WebCore/generated/JSCSSFontFaceRule.h | 13 +- .../webkit/WebCore/generated/JSCSSImportRule.cpp | 27 +- .../webkit/WebCore/generated/JSCSSImportRule.h | 17 +- .../webkit/WebCore/generated/JSCSSMediaRule.cpp | 42 +- .../webkit/WebCore/generated/JSCSSMediaRule.h | 21 +- .../webkit/WebCore/generated/JSCSSPageRule.cpp | 28 +- .../webkit/WebCore/generated/JSCSSPageRule.h | 19 +- .../WebCore/generated/JSCSSPrimitiveValue.cpp | 128 +- .../webkit/WebCore/generated/JSCSSPrimitiveValue.h | 81 +- .../webkit/WebCore/generated/JSCSSRule.cpp | 59 +- src/3rdparty/webkit/WebCore/generated/JSCSSRule.h | 49 +- .../webkit/WebCore/generated/JSCSSRuleList.cpp | 39 +- .../webkit/WebCore/generated/JSCSSRuleList.h | 23 +- .../WebCore/generated/JSCSSStyleDeclaration.cpp | 114 +- .../WebCore/generated/JSCSSStyleDeclaration.h | 49 +- .../webkit/WebCore/generated/JSCSSStyleRule.cpp | 28 +- .../webkit/WebCore/generated/JSCSSStyleRule.h | 19 +- .../webkit/WebCore/generated/JSCSSStyleSheet.cpp | 67 +- .../webkit/WebCore/generated/JSCSSStyleSheet.h | 27 +- .../webkit/WebCore/generated/JSCSSValue.cpp | 41 +- src/3rdparty/webkit/WebCore/generated/JSCSSValue.h | 33 +- .../webkit/WebCore/generated/JSCSSValueList.cpp | 32 +- .../webkit/WebCore/generated/JSCSSValueList.h | 19 +- .../generated/JSCSSVariablesDeclaration.cpp | 78 +- .../WebCore/generated/JSCSSVariablesDeclaration.h | 37 +- .../WebCore/generated/JSCSSVariablesRule.cpp | 24 +- .../webkit/WebCore/generated/JSCSSVariablesRule.h | 15 +- .../webkit/WebCore/generated/JSCanvasGradient.cpp | 26 +- .../webkit/WebCore/generated/JSCanvasGradient.h | 13 +- .../webkit/WebCore/generated/JSCanvasPattern.cpp | 17 +- .../webkit/WebCore/generated/JSCanvasPattern.h | 9 +- .../generated/JSCanvasRenderingContext2D.cpp | 511 +- .../WebCore/generated/JSCanvasRenderingContext2D.h | 197 +- .../webkit/WebCore/generated/JSCharacterData.cpp | 79 +- .../webkit/WebCore/generated/JSCharacterData.h | 37 +- .../webkit/WebCore/generated/JSClientRect.cpp | 200 + .../webkit/WebCore/generated/JSClientRect.h | 78 + .../webkit/WebCore/generated/JSClientRectList.cpp | 222 + .../webkit/WebCore/generated/JSClientRectList.h | 84 + .../webkit/WebCore/generated/JSClipboard.cpp | 63 +- .../webkit/WebCore/generated/JSClipboard.h | 47 +- .../webkit/WebCore/generated/JSComment.cpp | 18 +- src/3rdparty/webkit/WebCore/generated/JSComment.h | 11 +- .../webkit/WebCore/generated/JSConsole.cpp | 109 +- src/3rdparty/webkit/WebCore/generated/JSConsole.h | 49 +- .../webkit/WebCore/generated/JSCoordinates.cpp | 174 + .../webkit/WebCore/generated/JSCoordinates.h | 91 + .../webkit/WebCore/generated/JSCounter.cpp | 34 +- src/3rdparty/webkit/WebCore/generated/JSCounter.h | 21 +- .../WebCore/generated/JSDOMApplicationCache.cpp | 219 +- .../WebCore/generated/JSDOMApplicationCache.h | 79 +- .../WebCore/generated/JSDOMCoreException.cpp | 116 +- .../webkit/WebCore/generated/JSDOMCoreException.h | 64 +- .../WebCore/generated/JSDOMImplementation.cpp | 82 +- .../webkit/WebCore/generated/JSDOMImplementation.h | 27 +- .../webkit/WebCore/generated/JSDOMParser.cpp | 36 +- .../webkit/WebCore/generated/JSDOMParser.h | 19 +- .../webkit/WebCore/generated/JSDOMSelection.cpp | 231 +- .../webkit/WebCore/generated/JSDOMSelection.h | 65 +- .../webkit/WebCore/generated/JSDOMStringList.cpp | 42 +- .../webkit/WebCore/generated/JSDOMStringList.h | 27 +- .../webkit/WebCore/generated/JSDOMWindow.cpp | 3019 +- .../webkit/WebCore/generated/JSDOMWindow.h | 1081 +- .../webkit/WebCore/generated/JSDOMWindowBase.lut.h | 31 - .../webkit/WebCore/generated/JSDatabase.cpp | 35 +- src/3rdparty/webkit/WebCore/generated/JSDatabase.h | 28 +- .../webkit/WebCore/generated/JSDocument.cpp | 504 +- src/3rdparty/webkit/WebCore/generated/JSDocument.h | 179 +- .../WebCore/generated/JSDocumentFragment.cpp | 40 +- .../webkit/WebCore/generated/JSDocumentFragment.h | 23 +- .../webkit/WebCore/generated/JSDocumentType.cpp | 41 +- .../webkit/WebCore/generated/JSDocumentType.h | 25 +- .../webkit/WebCore/generated/JSElement.cpp | 331 +- src/3rdparty/webkit/WebCore/generated/JSElement.h | 129 +- src/3rdparty/webkit/WebCore/generated/JSEntity.cpp | 27 +- src/3rdparty/webkit/WebCore/generated/JSEntity.h | 17 +- .../webkit/WebCore/generated/JSEntityReference.cpp | 18 +- .../webkit/WebCore/generated/JSEntityReference.h | 11 +- src/3rdparty/webkit/WebCore/generated/JSEvent.cpp | 124 +- src/3rdparty/webkit/WebCore/generated/JSEvent.h | 91 +- .../webkit/WebCore/generated/JSEventException.cpp | 59 +- .../webkit/WebCore/generated/JSEventException.h | 27 +- .../webkit/WebCore/generated/JSEventTargetNode.cpp | 944 - .../webkit/WebCore/generated/JSEventTargetNode.h | 162 - src/3rdparty/webkit/WebCore/generated/JSFile.cpp | 31 +- src/3rdparty/webkit/WebCore/generated/JSFile.h | 19 +- .../webkit/WebCore/generated/JSFileList.cpp | 39 +- src/3rdparty/webkit/WebCore/generated/JSFileList.h | 23 +- .../webkit/WebCore/generated/JSGeolocation.cpp | 37 +- .../webkit/WebCore/generated/JSGeolocation.h | 25 +- .../webkit/WebCore/generated/JSGeoposition.cpp | 84 +- .../webkit/WebCore/generated/JSGeoposition.h | 25 +- .../WebCore/generated/JSHTMLAnchorElement.cpp | 106 +- .../webkit/WebCore/generated/JSHTMLAnchorElement.h | 77 +- .../WebCore/generated/JSHTMLAppletElement.cpp | 75 +- .../webkit/WebCore/generated/JSHTMLAppletElement.h | 61 +- .../webkit/WebCore/generated/JSHTMLAreaElement.cpp | 78 +- .../webkit/WebCore/generated/JSHTMLAreaElement.h | 55 +- .../WebCore/generated/JSHTMLAudioElement.cpp | 18 +- .../webkit/WebCore/generated/JSHTMLAudioElement.h | 11 +- .../webkit/WebCore/generated/JSHTMLBRElement.cpp | 25 +- .../webkit/WebCore/generated/JSHTMLBRElement.h | 17 +- .../webkit/WebCore/generated/JSHTMLBaseElement.cpp | 30 +- .../webkit/WebCore/generated/JSHTMLBaseElement.h | 21 +- .../WebCore/generated/JSHTMLBaseFontElement.cpp | 37 +- .../WebCore/generated/JSHTMLBaseFontElement.h | 25 +- .../WebCore/generated/JSHTMLBlockquoteElement.cpp | 25 +- .../WebCore/generated/JSHTMLBlockquoteElement.h | 17 +- .../webkit/WebCore/generated/JSHTMLBodyElement.cpp | 96 +- .../webkit/WebCore/generated/JSHTMLBodyElement.h | 43 +- .../WebCore/generated/JSHTMLButtonElement.cpp | 63 +- .../webkit/WebCore/generated/JSHTMLButtonElement.h | 43 +- .../WebCore/generated/JSHTMLCanvasElement.cpp | 52 +- .../webkit/WebCore/generated/JSHTMLCanvasElement.h | 27 +- .../webkit/WebCore/generated/JSHTMLCollection.cpp | 51 +- .../webkit/WebCore/generated/JSHTMLCollection.h | 33 +- .../WebCore/generated/JSHTMLDListElement.cpp | 27 +- .../webkit/WebCore/generated/JSHTMLDListElement.h | 17 +- .../WebCore/generated/JSHTMLDirectoryElement.cpp | 27 +- .../WebCore/generated/JSHTMLDirectoryElement.h | 17 +- .../webkit/WebCore/generated/JSHTMLDivElement.cpp | 25 +- .../webkit/WebCore/generated/JSHTMLDivElement.h | 17 +- .../webkit/WebCore/generated/JSHTMLDocument.cpp | 122 +- .../webkit/WebCore/generated/JSHTMLDocument.h | 89 +- .../webkit/WebCore/generated/JSHTMLElement.cpp | 146 +- .../webkit/WebCore/generated/JSHTMLElement.h | 73 +- .../WebCore/generated/JSHTMLEmbedElement.cpp | 57 +- .../webkit/WebCore/generated/JSHTMLEmbedElement.h | 45 +- .../WebCore/generated/JSHTMLFieldSetElement.cpp | 24 +- .../WebCore/generated/JSHTMLFieldSetElement.h | 15 +- .../webkit/WebCore/generated/JSHTMLFontElement.cpp | 35 +- .../webkit/WebCore/generated/JSHTMLFontElement.h | 25 +- .../webkit/WebCore/generated/JSHTMLFormElement.cpp | 90 +- .../webkit/WebCore/generated/JSHTMLFormElement.h | 58 +- .../WebCore/generated/JSHTMLFrameElement.cpp | 85 +- .../webkit/WebCore/generated/JSHTMLFrameElement.h | 65 +- .../WebCore/generated/JSHTMLFrameSetElement.cpp | 30 +- .../WebCore/generated/JSHTMLFrameSetElement.h | 23 +- .../webkit/WebCore/generated/JSHTMLHRElement.cpp | 42 +- .../webkit/WebCore/generated/JSHTMLHRElement.h | 29 +- .../webkit/WebCore/generated/JSHTMLHeadElement.cpp | 25 +- .../webkit/WebCore/generated/JSHTMLHeadElement.h | 17 +- .../WebCore/generated/JSHTMLHeadingElement.cpp | 25 +- .../WebCore/generated/JSHTMLHeadingElement.h | 17 +- .../webkit/WebCore/generated/JSHTMLHtmlElement.cpp | 25 +- .../webkit/WebCore/generated/JSHTMLHtmlElement.h | 17 +- .../WebCore/generated/JSHTMLIFrameElement.cpp | 82 +- .../webkit/WebCore/generated/JSHTMLIFrameElement.h | 63 +- .../WebCore/generated/JSHTMLImageElement.cpp | 110 +- .../webkit/WebCore/generated/JSHTMLImageElement.h | 75 +- .../WebCore/generated/JSHTMLInputElement.cpp | 207 +- .../webkit/WebCore/generated/JSHTMLInputElement.h | 122 +- .../WebCore/generated/JSHTMLIsIndexElement.cpp | 28 +- .../WebCore/generated/JSHTMLIsIndexElement.h | 19 +- .../webkit/WebCore/generated/JSHTMLLIElement.cpp | 32 +- .../webkit/WebCore/generated/JSHTMLLIElement.h | 21 +- .../WebCore/generated/JSHTMLLabelElement.cpp | 33 +- .../webkit/WebCore/generated/JSHTMLLabelElement.h | 23 +- .../WebCore/generated/JSHTMLLegendElement.cpp | 33 +- .../webkit/WebCore/generated/JSHTMLLegendElement.h | 23 +- .../webkit/WebCore/generated/JSHTMLLinkElement.cpp | 70 +- .../webkit/WebCore/generated/JSHTMLLinkElement.h | 51 +- .../webkit/WebCore/generated/JSHTMLMapElement.cpp | 28 +- .../webkit/WebCore/generated/JSHTMLMapElement.h | 19 +- .../WebCore/generated/JSHTMLMarqueeElement.cpp | 28 +- .../WebCore/generated/JSHTMLMarqueeElement.h | 17 +- .../WebCore/generated/JSHTMLMediaElement.cpp | 319 +- .../webkit/WebCore/generated/JSHTMLMediaElement.h | 113 +- .../webkit/WebCore/generated/JSHTMLMenuElement.cpp | 27 +- .../webkit/WebCore/generated/JSHTMLMenuElement.h | 17 +- .../webkit/WebCore/generated/JSHTMLMetaElement.cpp | 40 +- .../webkit/WebCore/generated/JSHTMLMetaElement.h | 29 +- .../webkit/WebCore/generated/JSHTMLModElement.cpp | 30 +- .../webkit/WebCore/generated/JSHTMLModElement.h | 21 +- .../WebCore/generated/JSHTMLOListElement.cpp | 39 +- .../webkit/WebCore/generated/JSHTMLOListElement.h | 25 +- .../WebCore/generated/JSHTMLObjectElement.cpp | 118 +- .../webkit/WebCore/generated/JSHTMLObjectElement.h | 89 +- .../WebCore/generated/JSHTMLOptGroupElement.cpp | 32 +- .../WebCore/generated/JSHTMLOptGroupElement.h | 21 +- .../WebCore/generated/JSHTMLOptionElement.cpp | 66 +- .../webkit/WebCore/generated/JSHTMLOptionElement.h | 43 +- .../WebCore/generated/JSHTMLOptionsCollection.cpp | 39 +- .../WebCore/generated/JSHTMLOptionsCollection.h | 37 +- .../WebCore/generated/JSHTMLParagraphElement.cpp | 25 +- .../WebCore/generated/JSHTMLParagraphElement.h | 17 +- .../WebCore/generated/JSHTMLParamElement.cpp | 40 +- .../webkit/WebCore/generated/JSHTMLParamElement.h | 29 +- .../webkit/WebCore/generated/JSHTMLPreElement.cpp | 34 +- .../webkit/WebCore/generated/JSHTMLPreElement.h | 21 +- .../WebCore/generated/JSHTMLQuoteElement.cpp | 25 +- .../webkit/WebCore/generated/JSHTMLQuoteElement.h | 17 +- .../WebCore/generated/JSHTMLScriptElement.cpp | 57 +- .../webkit/WebCore/generated/JSHTMLScriptElement.h | 41 +- .../WebCore/generated/JSHTMLSelectElement.cpp | 120 +- .../webkit/WebCore/generated/JSHTMLSelectElement.h | 71 +- .../WebCore/generated/JSHTMLSourceElement.cpp | 41 +- .../webkit/WebCore/generated/JSHTMLSourceElement.h | 25 +- .../WebCore/generated/JSHTMLStyleElement.cpp | 40 +- .../webkit/WebCore/generated/JSHTMLStyleElement.h | 27 +- .../generated/JSHTMLTableCaptionElement.cpp | 29 +- .../WebCore/generated/JSHTMLTableCaptionElement.h | 19 +- .../WebCore/generated/JSHTMLTableCellElement.cpp | 99 +- .../WebCore/generated/JSHTMLTableCellElement.h | 71 +- .../WebCore/generated/JSHTMLTableColElement.cpp | 52 +- .../WebCore/generated/JSHTMLTableColElement.h | 37 +- .../WebCore/generated/JSHTMLTableElement.cpp | 138 +- .../webkit/WebCore/generated/JSHTMLTableElement.h | 83 +- .../WebCore/generated/JSHTMLTableRowElement.cpp | 70 +- .../WebCore/generated/JSHTMLTableRowElement.h | 45 +- .../generated/JSHTMLTableSectionElement.cpp | 63 +- .../WebCore/generated/JSHTMLTableSectionElement.h | 39 +- .../WebCore/generated/JSHTMLTextAreaElement.cpp | 112 +- .../WebCore/generated/JSHTMLTextAreaElement.h | 69 +- .../WebCore/generated/JSHTMLTitleElement.cpp | 25 +- .../webkit/WebCore/generated/JSHTMLTitleElement.h | 17 +- .../WebCore/generated/JSHTMLUListElement.cpp | 32 +- .../webkit/WebCore/generated/JSHTMLUListElement.h | 21 +- .../WebCore/generated/JSHTMLVideoElement.cpp | 45 +- .../webkit/WebCore/generated/JSHTMLVideoElement.h | 29 +- .../webkit/WebCore/generated/JSHistory.cpp | 39 +- src/3rdparty/webkit/WebCore/generated/JSHistory.h | 25 +- .../webkit/WebCore/generated/JSImageData.cpp | 29 +- .../webkit/WebCore/generated/JSImageData.h | 19 +- .../WebCore/generated/JSInspectorController.cpp | 773 + .../WebCore/generated/JSInspectorController.h | 138 + .../WebCore/generated/JSJavaScriptCallFrame.cpp | 45 +- .../WebCore/generated/JSJavaScriptCallFrame.h | 42 +- .../webkit/WebCore/generated/JSKeyboardEvent.cpp | 66 +- .../webkit/WebCore/generated/JSKeyboardEvent.h | 29 +- .../webkit/WebCore/generated/JSLocation.cpp | 86 +- src/3rdparty/webkit/WebCore/generated/JSLocation.h | 85 +- .../webkit/WebCore/generated/JSMediaError.cpp | 53 +- .../webkit/WebCore/generated/JSMediaError.h | 26 +- .../webkit/WebCore/generated/JSMediaList.cpp | 60 +- .../webkit/WebCore/generated/JSMediaList.h | 33 +- .../webkit/WebCore/generated/JSMessageChannel.cpp | 23 +- .../webkit/WebCore/generated/JSMessageChannel.h | 15 +- .../webkit/WebCore/generated/JSMessageEvent.cpp | 54 +- .../webkit/WebCore/generated/JSMessageEvent.h | 25 +- .../webkit/WebCore/generated/JSMessagePort.cpp | 101 +- .../webkit/WebCore/generated/JSMessagePort.h | 49 +- .../webkit/WebCore/generated/JSMimeType.cpp | 37 +- src/3rdparty/webkit/WebCore/generated/JSMimeType.h | 23 +- .../webkit/WebCore/generated/JSMimeTypeArray.cpp | 48 +- .../webkit/WebCore/generated/JSMimeTypeArray.h | 27 +- .../webkit/WebCore/generated/JSMouseEvent.cpp | 105 +- .../webkit/WebCore/generated/JSMouseEvent.h | 49 +- .../webkit/WebCore/generated/JSMutationEvent.cpp | 60 +- .../webkit/WebCore/generated/JSMutationEvent.h | 31 +- .../webkit/WebCore/generated/JSNamedNodeMap.cpp | 101 +- .../webkit/WebCore/generated/JSNamedNodeMap.h | 37 +- .../webkit/WebCore/generated/JSNavigator.cpp | 69 +- .../webkit/WebCore/generated/JSNavigator.h | 46 +- src/3rdparty/webkit/WebCore/generated/JSNode.cpp | 1165 +- src/3rdparty/webkit/WebCore/generated/JSNode.h | 224 +- .../webkit/WebCore/generated/JSNodeFilter.cpp | 58 +- .../webkit/WebCore/generated/JSNodeFilter.h | 53 +- .../webkit/WebCore/generated/JSNodeIterator.cpp | 58 +- .../webkit/WebCore/generated/JSNodeIterator.h | 39 +- .../webkit/WebCore/generated/JSNodeList.cpp | 39 +- src/3rdparty/webkit/WebCore/generated/JSNodeList.h | 25 +- .../webkit/WebCore/generated/JSNotation.cpp | 24 +- src/3rdparty/webkit/WebCore/generated/JSNotation.h | 15 +- .../webkit/WebCore/generated/JSOverflowEvent.cpp | 44 +- .../webkit/WebCore/generated/JSOverflowEvent.h | 27 +- src/3rdparty/webkit/WebCore/generated/JSPlugin.cpp | 57 +- src/3rdparty/webkit/WebCore/generated/JSPlugin.h | 33 +- .../webkit/WebCore/generated/JSPluginArray.cpp | 55 +- .../webkit/WebCore/generated/JSPluginArray.h | 29 +- .../webkit/WebCore/generated/JSPositionError.cpp | 39 +- .../webkit/WebCore/generated/JSPositionError.h | 29 +- .../WebCore/generated/JSProcessingInstruction.cpp | 31 +- .../WebCore/generated/JSProcessingInstruction.h | 21 +- .../webkit/WebCore/generated/JSProgressEvent.cpp | 44 +- .../webkit/WebCore/generated/JSProgressEvent.h | 21 +- .../webkit/WebCore/generated/JSRGBColor.lut.h | 5 - src/3rdparty/webkit/WebCore/generated/JSRange.cpp | 244 +- src/3rdparty/webkit/WebCore/generated/JSRange.h | 91 +- .../webkit/WebCore/generated/JSRangeException.cpp | 45 +- .../webkit/WebCore/generated/JSRangeException.h | 29 +- src/3rdparty/webkit/WebCore/generated/JSRect.cpp | 37 +- src/3rdparty/webkit/WebCore/generated/JSRect.h | 23 +- .../webkit/WebCore/generated/JSSQLError.cpp | 28 +- src/3rdparty/webkit/WebCore/generated/JSSQLError.h | 20 +- .../webkit/WebCore/generated/JSSQLResultSet.cpp | 32 +- .../webkit/WebCore/generated/JSSQLResultSet.h | 22 +- .../WebCore/generated/JSSQLResultSetRowList.cpp | 30 +- .../WebCore/generated/JSSQLResultSetRowList.h | 24 +- .../webkit/WebCore/generated/JSSQLTransaction.cpp | 27 +- .../webkit/WebCore/generated/JSSQLTransaction.h | 20 +- .../webkit/WebCore/generated/JSSVGAElement.cpp | 107 +- .../webkit/WebCore/generated/JSSVGAElement.h | 53 +- .../WebCore/generated/JSSVGAltGlyphElement.cpp | 29 +- .../WebCore/generated/JSSVGAltGlyphElement.h | 19 +- .../webkit/WebCore/generated/JSSVGAngle.cpp | 75 +- src/3rdparty/webkit/WebCore/generated/JSSVGAngle.h | 47 +- .../WebCore/generated/JSSVGAnimateColorElement.cpp | 10 +- .../WebCore/generated/JSSVGAnimateColorElement.h | 5 +- .../WebCore/generated/JSSVGAnimateElement.cpp | 10 +- .../webkit/WebCore/generated/JSSVGAnimateElement.h | 5 +- .../generated/JSSVGAnimateTransformElement.cpp | 10 +- .../generated/JSSVGAnimateTransformElement.h | 5 +- .../WebCore/generated/JSSVGAnimatedAngle.cpp | 23 +- .../webkit/WebCore/generated/JSSVGAnimatedAngle.h | 15 +- .../WebCore/generated/JSSVGAnimatedBoolean.cpp | 29 +- .../WebCore/generated/JSSVGAnimatedBoolean.h | 19 +- .../WebCore/generated/JSSVGAnimatedEnumeration.cpp | 29 +- .../WebCore/generated/JSSVGAnimatedEnumeration.h | 19 +- .../WebCore/generated/JSSVGAnimatedInteger.cpp | 29 +- .../WebCore/generated/JSSVGAnimatedInteger.h | 19 +- .../WebCore/generated/JSSVGAnimatedLength.cpp | 23 +- .../webkit/WebCore/generated/JSSVGAnimatedLength.h | 15 +- .../WebCore/generated/JSSVGAnimatedLengthList.cpp | 23 +- .../WebCore/generated/JSSVGAnimatedLengthList.h | 15 +- .../WebCore/generated/JSSVGAnimatedNumber.cpp | 29 +- .../webkit/WebCore/generated/JSSVGAnimatedNumber.h | 19 +- .../WebCore/generated/JSSVGAnimatedNumberList.cpp | 23 +- .../WebCore/generated/JSSVGAnimatedNumberList.h | 15 +- .../generated/JSSVGAnimatedPreserveAspectRatio.cpp | 23 +- .../generated/JSSVGAnimatedPreserveAspectRatio.h | 15 +- .../webkit/WebCore/generated/JSSVGAnimatedRect.cpp | 23 +- .../webkit/WebCore/generated/JSSVGAnimatedRect.h | 15 +- .../WebCore/generated/JSSVGAnimatedString.cpp | 29 +- .../webkit/WebCore/generated/JSSVGAnimatedString.h | 19 +- .../generated/JSSVGAnimatedTransformList.cpp | 23 +- .../WebCore/generated/JSSVGAnimatedTransformList.h | 15 +- .../WebCore/generated/JSSVGAnimationElement.cpp | 87 +- .../WebCore/generated/JSSVGAnimationElement.h | 35 +- .../WebCore/generated/JSSVGCircleElement.cpp | 110 +- .../webkit/WebCore/generated/JSSVGCircleElement.h | 55 +- .../WebCore/generated/JSSVGClipPathElement.cpp | 104 +- .../WebCore/generated/JSSVGClipPathElement.h | 51 +- .../webkit/WebCore/generated/JSSVGColor.cpp | 59 +- src/3rdparty/webkit/WebCore/generated/JSSVGColor.h | 31 +- .../JSSVGComponentTransferFunctionElement.cpp | 55 +- .../JSSVGComponentTransferFunctionElement.h | 43 +- .../WebCore/generated/JSSVGCursorElement.cpp | 40 +- .../webkit/WebCore/generated/JSSVGCursorElement.h | 25 +- .../generated/JSSVGDefinitionSrcElement.cpp | 10 +- .../WebCore/generated/JSSVGDefinitionSrcElement.h | 5 +- .../webkit/WebCore/generated/JSSVGDefsElement.cpp | 101 +- .../webkit/WebCore/generated/JSSVGDefsElement.h | 49 +- .../webkit/WebCore/generated/JSSVGDescElement.cpp | 41 +- .../webkit/WebCore/generated/JSSVGDescElement.h | 25 +- .../webkit/WebCore/generated/JSSVGDocument.cpp | 22 +- .../webkit/WebCore/generated/JSSVGDocument.h | 13 +- .../webkit/WebCore/generated/JSSVGElement.cpp | 32 +- .../webkit/WebCore/generated/JSSVGElement.h | 23 +- .../WebCore/generated/JSSVGElementInstance.cpp | 624 +- .../WebCore/generated/JSSVGElementInstance.h | 203 +- .../WebCore/generated/JSSVGElementInstanceList.cpp | 29 +- .../WebCore/generated/JSSVGElementInstanceList.h | 17 +- .../generated/JSSVGElementWrapperFactory.cpp | 184 - .../WebCore/generated/JSSVGEllipseElement.cpp | 113 +- .../webkit/WebCore/generated/JSSVGEllipseElement.h | 57 +- .../webkit/WebCore/generated/JSSVGException.cpp | 47 +- .../webkit/WebCore/generated/JSSVGException.h | 31 +- .../WebCore/generated/JSSVGFEBlendElement.cpp | 73 +- .../webkit/WebCore/generated/JSSVGFEBlendElement.h | 51 +- .../generated/JSSVGFEColorMatrixElement.cpp | 71 +- .../WebCore/generated/JSSVGFEColorMatrixElement.h | 49 +- .../generated/JSSVGFEComponentTransferElement.cpp | 47 +- .../generated/JSSVGFEComponentTransferElement.h | 31 +- .../WebCore/generated/JSSVGFECompositeElement.cpp | 87 +- .../WebCore/generated/JSSVGFECompositeElement.h | 61 +- .../generated/JSSVGFEDiffuseLightingElement.cpp | 59 +- .../generated/JSSVGFEDiffuseLightingElement.h | 39 +- .../generated/JSSVGFEDisplacementMapElement.cpp | 77 +- .../generated/JSSVGFEDisplacementMapElement.h | 53 +- .../generated/JSSVGFEDistantLightElement.cpp | 20 +- .../WebCore/generated/JSSVGFEDistantLightElement.h | 15 +- .../WebCore/generated/JSSVGFEFloodElement.cpp | 106 +- .../webkit/WebCore/generated/JSSVGFEFloodElement.h | 32 +- .../WebCore/generated/JSSVGFEFuncAElement.cpp | 14 +- .../webkit/WebCore/generated/JSSVGFEFuncAElement.h | 9 +- .../WebCore/generated/JSSVGFEFuncBElement.cpp | 14 +- .../webkit/WebCore/generated/JSSVGFEFuncBElement.h | 9 +- .../WebCore/generated/JSSVGFEFuncGElement.cpp | 14 +- .../webkit/WebCore/generated/JSSVGFEFuncGElement.h | 9 +- .../WebCore/generated/JSSVGFEFuncRElement.cpp | 14 +- .../webkit/WebCore/generated/JSSVGFEFuncRElement.h | 9 +- .../generated/JSSVGFEGaussianBlurElement.cpp | 62 +- .../WebCore/generated/JSSVGFEGaussianBlurElement.h | 37 +- .../WebCore/generated/JSSVGFEImageElement.cpp | 66 +- .../webkit/WebCore/generated/JSSVGFEImageElement.h | 43 +- .../WebCore/generated/JSSVGFEMergeElement.cpp | 44 +- .../webkit/WebCore/generated/JSSVGFEMergeElement.h | 29 +- .../WebCore/generated/JSSVGFEMergeNodeElement.cpp | 17 +- .../WebCore/generated/JSSVGFEMergeNodeElement.h | 13 +- .../WebCore/generated/JSSVGFEOffsetElement.cpp | 53 +- .../WebCore/generated/JSSVGFEOffsetElement.h | 35 +- .../WebCore/generated/JSSVGFEPointLightElement.cpp | 23 +- .../WebCore/generated/JSSVGFEPointLightElement.h | 17 +- .../generated/JSSVGFESpecularLightingElement.cpp | 56 +- .../generated/JSSVGFESpecularLightingElement.h | 37 +- .../WebCore/generated/JSSVGFESpotLightElement.cpp | 38 +- .../WebCore/generated/JSSVGFESpotLightElement.h | 27 +- .../WebCore/generated/JSSVGFETileElement.cpp | 47 +- .../webkit/WebCore/generated/JSSVGFETileElement.h | 31 +- .../WebCore/generated/JSSVGFETurbulenceElement.cpp | 82 +- .../WebCore/generated/JSSVGFETurbulenceElement.h | 57 +- .../WebCore/generated/JSSVGFilterElement.cpp | 84 +- .../webkit/WebCore/generated/JSSVGFilterElement.h | 51 +- .../webkit/WebCore/generated/JSSVGFontElement.cpp | 10 +- .../webkit/WebCore/generated/JSSVGFontElement.h | 5 +- .../WebCore/generated/JSSVGFontFaceElement.cpp | 10 +- .../WebCore/generated/JSSVGFontFaceElement.h | 5 +- .../generated/JSSVGFontFaceFormatElement.cpp | 10 +- .../WebCore/generated/JSSVGFontFaceFormatElement.h | 5 +- .../WebCore/generated/JSSVGFontFaceNameElement.cpp | 10 +- .../WebCore/generated/JSSVGFontFaceNameElement.h | 5 +- .../WebCore/generated/JSSVGFontFaceSrcElement.cpp | 10 +- .../WebCore/generated/JSSVGFontFaceSrcElement.h | 5 +- .../WebCore/generated/JSSVGFontFaceUriElement.cpp | 10 +- .../WebCore/generated/JSSVGFontFaceUriElement.h | 5 +- .../generated/JSSVGForeignObjectElement.cpp | 113 +- .../WebCore/generated/JSSVGForeignObjectElement.h | 57 +- .../webkit/WebCore/generated/JSSVGGElement.cpp | 101 +- .../webkit/WebCore/generated/JSSVGGElement.h | 49 +- .../webkit/WebCore/generated/JSSVGGlyphElement.cpp | 10 +- .../webkit/WebCore/generated/JSSVGGlyphElement.h | 5 +- .../WebCore/generated/JSSVGGradientElement.cpp | 56 +- .../WebCore/generated/JSSVGGradientElement.h | 37 +- .../webkit/WebCore/generated/JSSVGHKernElement.cpp | 10 +- .../webkit/WebCore/generated/JSSVGHKernElement.h | 5 +- .../webkit/WebCore/generated/JSSVGImageElement.cpp | 119 +- .../webkit/WebCore/generated/JSSVGImageElement.h | 61 +- .../webkit/WebCore/generated/JSSVGLength.cpp | 84 +- .../webkit/WebCore/generated/JSSVGLength.h | 63 +- .../webkit/WebCore/generated/JSSVGLengthList.cpp | 83 +- .../webkit/WebCore/generated/JSSVGLengthList.h | 29 +- .../webkit/WebCore/generated/JSSVGLineElement.cpp | 113 +- .../webkit/WebCore/generated/JSSVGLineElement.h | 57 +- .../generated/JSSVGLinearGradientElement.cpp | 22 +- .../WebCore/generated/JSSVGLinearGradientElement.h | 15 +- .../WebCore/generated/JSSVGMarkerElement.cpp | 103 +- .../webkit/WebCore/generated/JSSVGMarkerElement.h | 65 +- .../webkit/WebCore/generated/JSSVGMaskElement.cpp | 80 +- .../webkit/WebCore/generated/JSSVGMaskElement.h | 47 +- .../webkit/WebCore/generated/JSSVGMatrix.cpp | 189 +- .../webkit/WebCore/generated/JSSVGMatrix.h | 74 +- .../WebCore/generated/JSSVGMetadataElement.cpp | 10 +- .../WebCore/generated/JSSVGMetadataElement.h | 5 +- .../WebCore/generated/JSSVGMissingGlyphElement.cpp | 10 +- .../WebCore/generated/JSSVGMissingGlyphElement.h | 5 +- .../webkit/WebCore/generated/JSSVGNumber.cpp | 26 +- .../webkit/WebCore/generated/JSSVGNumber.h | 17 +- .../webkit/WebCore/generated/JSSVGNumberList.cpp | 83 +- .../webkit/WebCore/generated/JSSVGNumberList.h | 29 +- .../webkit/WebCore/generated/JSSVGPaint.cpp | 64 +- src/3rdparty/webkit/WebCore/generated/JSSVGPaint.h | 41 +- .../webkit/WebCore/generated/JSSVGPathElement.cpp | 390 +- .../webkit/WebCore/generated/JSSVGPathElement.h | 103 +- .../webkit/WebCore/generated/JSSVGPathSeg.cpp | 69 +- .../webkit/WebCore/generated/JSSVGPathSeg.h | 61 +- .../WebCore/generated/JSSVGPathSegArcAbs.cpp | 61 +- .../webkit/WebCore/generated/JSSVGPathSegArcAbs.h | 37 +- .../WebCore/generated/JSSVGPathSegArcRel.cpp | 61 +- .../webkit/WebCore/generated/JSSVGPathSegArcRel.h | 37 +- .../WebCore/generated/JSSVGPathSegClosePath.cpp | 10 +- .../WebCore/generated/JSSVGPathSegClosePath.h | 5 +- .../generated/JSSVGPathSegCurvetoCubicAbs.cpp | 54 +- .../generated/JSSVGPathSegCurvetoCubicAbs.h | 33 +- .../generated/JSSVGPathSegCurvetoCubicRel.cpp | 54 +- .../generated/JSSVGPathSegCurvetoCubicRel.h | 33 +- .../JSSVGPathSegCurvetoCubicSmoothAbs.cpp | 40 +- .../generated/JSSVGPathSegCurvetoCubicSmoothAbs.h | 25 +- .../JSSVGPathSegCurvetoCubicSmoothRel.cpp | 40 +- .../generated/JSSVGPathSegCurvetoCubicSmoothRel.h | 25 +- .../generated/JSSVGPathSegCurvetoQuadraticAbs.cpp | 40 +- .../generated/JSSVGPathSegCurvetoQuadraticAbs.h | 25 +- .../generated/JSSVGPathSegCurvetoQuadraticRel.cpp | 40 +- .../generated/JSSVGPathSegCurvetoQuadraticRel.h | 25 +- .../JSSVGPathSegCurvetoQuadraticSmoothAbs.cpp | 26 +- .../JSSVGPathSegCurvetoQuadraticSmoothAbs.h | 17 +- .../JSSVGPathSegCurvetoQuadraticSmoothRel.cpp | 26 +- .../JSSVGPathSegCurvetoQuadraticSmoothRel.h | 17 +- .../WebCore/generated/JSSVGPathSegLinetoAbs.cpp | 26 +- .../WebCore/generated/JSSVGPathSegLinetoAbs.h | 17 +- .../generated/JSSVGPathSegLinetoHorizontalAbs.cpp | 19 +- .../generated/JSSVGPathSegLinetoHorizontalAbs.h | 13 +- .../generated/JSSVGPathSegLinetoHorizontalRel.cpp | 19 +- .../generated/JSSVGPathSegLinetoHorizontalRel.h | 13 +- .../WebCore/generated/JSSVGPathSegLinetoRel.cpp | 26 +- .../WebCore/generated/JSSVGPathSegLinetoRel.h | 17 +- .../generated/JSSVGPathSegLinetoVerticalAbs.cpp | 19 +- .../generated/JSSVGPathSegLinetoVerticalAbs.h | 13 +- .../generated/JSSVGPathSegLinetoVerticalRel.cpp | 19 +- .../generated/JSSVGPathSegLinetoVerticalRel.h | 13 +- .../webkit/WebCore/generated/JSSVGPathSegList.cpp | 55 +- .../webkit/WebCore/generated/JSSVGPathSegList.h | 43 +- .../WebCore/generated/JSSVGPathSegMovetoAbs.cpp | 26 +- .../WebCore/generated/JSSVGPathSegMovetoAbs.h | 17 +- .../WebCore/generated/JSSVGPathSegMovetoRel.cpp | 26 +- .../WebCore/generated/JSSVGPathSegMovetoRel.h | 17 +- .../WebCore/generated/JSSVGPatternElement.cpp | 92 +- .../webkit/WebCore/generated/JSSVGPatternElement.h | 55 +- .../webkit/WebCore/generated/JSSVGPoint.cpp | 42 +- src/3rdparty/webkit/WebCore/generated/JSSVGPoint.h | 25 +- .../webkit/WebCore/generated/JSSVGPointList.cpp | 55 +- .../webkit/WebCore/generated/JSSVGPointList.h | 43 +- .../WebCore/generated/JSSVGPolygonElement.cpp | 107 +- .../webkit/WebCore/generated/JSSVGPolygonElement.h | 53 +- .../WebCore/generated/JSSVGPolylineElement.cpp | 107 +- .../WebCore/generated/JSSVGPolylineElement.h | 53 +- .../WebCore/generated/JSSVGPreserveAspectRatio.cpp | 69 +- .../WebCore/generated/JSSVGPreserveAspectRatio.h | 55 +- .../generated/JSSVGRadialGradientElement.cpp | 25 +- .../WebCore/generated/JSSVGRadialGradientElement.h | 17 +- .../webkit/WebCore/generated/JSSVGRect.cpp | 47 +- src/3rdparty/webkit/WebCore/generated/JSSVGRect.h | 29 +- .../webkit/WebCore/generated/JSSVGRectElement.cpp | 119 +- .../webkit/WebCore/generated/JSSVGRectElement.h | 61 +- .../WebCore/generated/JSSVGRenderingIntent.cpp | 37 +- .../WebCore/generated/JSSVGRenderingIntent.h | 29 +- .../webkit/WebCore/generated/JSSVGSVGElement.cpp | 339 +- .../webkit/WebCore/generated/JSSVGSVGElement.h | 141 +- .../WebCore/generated/JSSVGScriptElement.cpp | 23 +- .../webkit/WebCore/generated/JSSVGScriptElement.h | 17 +- .../webkit/WebCore/generated/JSSVGSetElement.cpp | 10 +- .../webkit/WebCore/generated/JSSVGSetElement.h | 5 +- .../webkit/WebCore/generated/JSSVGStopElement.cpp | 28 +- .../webkit/WebCore/generated/JSSVGStopElement.h | 17 +- .../webkit/WebCore/generated/JSSVGStringList.cpp | 83 +- .../webkit/WebCore/generated/JSSVGStringList.h | 29 +- .../webkit/WebCore/generated/JSSVGStyleElement.cpp | 40 +- .../webkit/WebCore/generated/JSSVGStyleElement.h | 25 +- .../WebCore/generated/JSSVGSwitchElement.cpp | 101 +- .../webkit/WebCore/generated/JSSVGSwitchElement.h | 49 +- .../WebCore/generated/JSSVGSymbolElement.cpp | 50 +- .../webkit/WebCore/generated/JSSVGSymbolElement.h | 31 +- .../webkit/WebCore/generated/JSSVGTRefElement.cpp | 13 +- .../webkit/WebCore/generated/JSSVGTRefElement.h | 9 +- .../webkit/WebCore/generated/JSSVGTSpanElement.cpp | 10 +- .../webkit/WebCore/generated/JSSVGTSpanElement.h | 5 +- .../WebCore/generated/JSSVGTextContentElement.cpp | 194 +- .../WebCore/generated/JSSVGTextContentElement.h | 67 +- .../webkit/WebCore/generated/JSSVGTextElement.cpp | 49 +- .../webkit/WebCore/generated/JSSVGTextElement.h | 23 +- .../WebCore/generated/JSSVGTextPathElement.cpp | 42 +- .../WebCore/generated/JSSVGTextPathElement.h | 33 +- .../generated/JSSVGTextPositioningElement.cpp | 25 +- .../generated/JSSVGTextPositioningElement.h | 17 +- .../webkit/WebCore/generated/JSSVGTitleElement.cpp | 41 +- .../webkit/WebCore/generated/JSSVGTitleElement.h | 25 +- .../webkit/WebCore/generated/JSSVGTransform.cpp | 98 +- .../webkit/WebCore/generated/JSSVGTransform.h | 49 +- .../WebCore/generated/JSSVGTransformList.cpp | 71 +- .../webkit/WebCore/generated/JSSVGTransformList.h | 47 +- .../webkit/WebCore/generated/JSSVGUnitTypes.cpp | 31 +- .../webkit/WebCore/generated/JSSVGUnitTypes.h | 23 +- .../webkit/WebCore/generated/JSSVGUseElement.cpp | 122 +- .../webkit/WebCore/generated/JSSVGUseElement.h | 63 +- .../webkit/WebCore/generated/JSSVGViewElement.cpp | 37 +- .../webkit/WebCore/generated/JSSVGViewElement.h | 29 +- .../webkit/WebCore/generated/JSSVGZoomEvent.cpp | 27 +- .../webkit/WebCore/generated/JSSVGZoomEvent.h | 17 +- src/3rdparty/webkit/WebCore/generated/JSScreen.cpp | 41 +- src/3rdparty/webkit/WebCore/generated/JSScreen.h | 27 +- .../webkit/WebCore/generated/JSStorage.cpp | 69 +- src/3rdparty/webkit/WebCore/generated/JSStorage.h | 35 +- .../webkit/WebCore/generated/JSStorageEvent.cpp | 73 +- .../webkit/WebCore/generated/JSStorageEvent.h | 26 +- .../webkit/WebCore/generated/JSStyleSheet.cpp | 50 +- .../webkit/WebCore/generated/JSStyleSheet.h | 33 +- .../webkit/WebCore/generated/JSStyleSheetList.cpp | 39 +- .../webkit/WebCore/generated/JSStyleSheetList.h | 25 +- src/3rdparty/webkit/WebCore/generated/JSText.cpp | 39 +- src/3rdparty/webkit/WebCore/generated/JSText.h | 20 +- .../webkit/WebCore/generated/JSTextEvent.cpp | 36 +- .../webkit/WebCore/generated/JSTextEvent.h | 17 +- .../webkit/WebCore/generated/JSTextMetrics.cpp | 28 +- .../webkit/WebCore/generated/JSTextMetrics.h | 17 +- .../webkit/WebCore/generated/JSTimeRanges.cpp | 38 +- .../webkit/WebCore/generated/JSTimeRanges.h | 19 +- .../webkit/WebCore/generated/JSTreeWalker.cpp | 79 +- .../webkit/WebCore/generated/JSTreeWalker.h | 59 +- .../webkit/WebCore/generated/JSUIEvent.cpp | 60 +- src/3rdparty/webkit/WebCore/generated/JSUIEvent.h | 33 +- .../webkit/WebCore/generated/JSVoidCallback.cpp | 18 +- .../webkit/WebCore/generated/JSVoidCallback.h | 13 +- .../WebCore/generated/JSWebKitAnimationEvent.cpp | 39 +- .../WebCore/generated/JSWebKitAnimationEvent.h | 19 +- .../WebCore/generated/JSWebKitCSSKeyframeRule.cpp | 30 +- .../WebCore/generated/JSWebKitCSSKeyframeRule.h | 19 +- .../WebCore/generated/JSWebKitCSSKeyframesRule.cpp | 53 +- .../WebCore/generated/JSWebKitCSSKeyframesRule.h | 29 +- .../webkit/WebCore/generated/JSWebKitCSSMatrix.cpp | 556 + .../webkit/WebCore/generated/JSWebKitCSSMatrix.h | 130 + .../generated/JSWebKitCSSTransformValue.cpp | 121 +- .../WebCore/generated/JSWebKitCSSTransformValue.h | 47 +- .../webkit/WebCore/generated/JSWebKitPoint.cpp | 137 + .../webkit/WebCore/generated/JSWebKitPoint.h | 75 + .../WebCore/generated/JSWebKitTransitionEvent.cpp | 39 +- .../WebCore/generated/JSWebKitTransitionEvent.h | 19 +- .../webkit/WebCore/generated/JSWheelEvent.cpp | 63 +- .../webkit/WebCore/generated/JSWheelEvent.h | 41 +- src/3rdparty/webkit/WebCore/generated/JSWorker.cpp | 78 +- src/3rdparty/webkit/WebCore/generated/JSWorker.h | 37 +- .../webkit/WebCore/generated/JSWorkerContext.cpp | 186 +- .../webkit/WebCore/generated/JSWorkerContext.h | 57 +- .../WebCore/generated/JSWorkerContextBase.lut.h | 18 - .../webkit/WebCore/generated/JSWorkerLocation.cpp | 56 +- .../webkit/WebCore/generated/JSWorkerLocation.h | 35 +- .../webkit/WebCore/generated/JSWorkerNavigator.cpp | 32 +- .../webkit/WebCore/generated/JSWorkerNavigator.h | 21 +- .../webkit/WebCore/generated/JSXMLHttpRequest.cpp | 226 +- .../webkit/WebCore/generated/JSXMLHttpRequest.h | 99 +- .../generated/JSXMLHttpRequestException.cpp | 61 +- .../WebCore/generated/JSXMLHttpRequestException.h | 29 +- .../generated/JSXMLHttpRequestProgressEvent.cpp | 38 +- .../generated/JSXMLHttpRequestProgressEvent.h | 15 +- .../WebCore/generated/JSXMLHttpRequestUpload.cpp | 134 +- .../WebCore/generated/JSXMLHttpRequestUpload.h | 49 +- .../webkit/WebCore/generated/JSXMLSerializer.cpp | 34 +- .../webkit/WebCore/generated/JSXMLSerializer.h | 19 +- .../webkit/WebCore/generated/JSXPathEvaluator.cpp | 66 +- .../webkit/WebCore/generated/JSXPathEvaluator.h | 23 +- .../webkit/WebCore/generated/JSXPathException.cpp | 45 +- .../webkit/WebCore/generated/JSXPathException.h | 29 +- .../webkit/WebCore/generated/JSXPathExpression.cpp | 38 +- .../webkit/WebCore/generated/JSXPathExpression.h | 19 +- .../webkit/WebCore/generated/JSXPathNSResolver.cpp | 26 +- .../webkit/WebCore/generated/JSXPathNSResolver.h | 13 +- .../webkit/WebCore/generated/JSXPathResult.cpp | 87 +- .../webkit/WebCore/generated/JSXPathResult.h | 55 +- .../webkit/WebCore/generated/JSXSLTProcessor.cpp | 177 - .../webkit/WebCore/generated/JSXSLTProcessor.h | 89 - src/3rdparty/webkit/WebCore/generated/Lexer.lut.h | 5 - .../webkit/WebCore/generated/MathObject.lut.h | 5 - .../WebCore/generated/NumberConstructor.lut.h | 5 - .../WebCore/generated/RegExpConstructor.lut.h | 5 - .../webkit/WebCore/generated/RegExpObject.lut.h | 5 - .../webkit/WebCore/generated/SVGElementFactory.cpp | 484 +- .../webkit/WebCore/generated/SVGElementFactory.h | 3 +- src/3rdparty/webkit/WebCore/generated/SVGNames.cpp | 94 +- src/3rdparty/webkit/WebCore/generated/SVGNames.h | 55 +- .../webkit/WebCore/generated/StringPrototype.lut.h | 5 - .../WebCore/generated/UserAgentStyleSheets.h | 4 +- .../WebCore/generated/UserAgentStyleSheetsData.cpp | 690 +- src/3rdparty/webkit/WebCore/generated/XLinkNames.h | 5 +- src/3rdparty/webkit/WebCore/generated/XMLNames.h | 5 +- .../webkit/WebCore/generated/XPathGrammar.cpp | 422 +- .../webkit/WebCore/generated/XPathGrammar.h | 64 +- .../webkit/WebCore/history/BackForwardList.h | 32 +- .../WebCore/history/BackForwardListChromium.cpp | 143 + .../webkit/WebCore/history/CachedFrame.cpp | 158 + src/3rdparty/webkit/WebCore/history/CachedFrame.h | 80 + .../WebCore/history/CachedFramePlatformData.h | 45 + src/3rdparty/webkit/WebCore/history/CachedPage.cpp | 117 +- src/3rdparty/webkit/WebCore/history/CachedPage.h | 44 +- .../WebCore/history/CachedPagePlatformData.h | 45 - .../webkit/WebCore/history/HistoryItem.cpp | 214 +- src/3rdparty/webkit/WebCore/history/HistoryItem.h | 53 +- src/3rdparty/webkit/WebCore/history/PageCache.cpp | 1 + .../WebCore/history/cf/HistoryPropertyList.cpp | 156 + .../WebCore/history/cf/HistoryPropertyList.h | 69 + .../webkit/WebCore/html/CanvasGradient.cpp | 5 +- src/3rdparty/webkit/WebCore/html/CanvasGradient.h | 5 + .../webkit/WebCore/html/CanvasPixelArray.cpp | 44 + .../webkit/WebCore/html/CanvasPixelArray.h | 64 + .../webkit/WebCore/html/CanvasPixelArray.idl | 39 + .../WebCore/html/CanvasRenderingContext2D.cpp | 59 +- .../webkit/WebCore/html/CanvasRenderingContext2D.h | 3 +- src/3rdparty/webkit/WebCore/html/CanvasStyle.cpp | 21 +- .../webkit/WebCore/html/CollectionCache.cpp | 88 + src/3rdparty/webkit/WebCore/html/CollectionCache.h | 64 + src/3rdparty/webkit/WebCore/html/CollectionType.h | 67 + .../webkit/WebCore/html/HTMLAnchorElement.cpp | 42 +- .../webkit/WebCore/html/HTMLAnchorElement.idl | 4 +- .../webkit/WebCore/html/HTMLAppletElement.cpp | 12 +- .../webkit/WebCore/html/HTMLAppletElement.idl | 4 +- .../webkit/WebCore/html/HTMLAreaElement.cpp | 32 +- src/3rdparty/webkit/WebCore/html/HTMLAreaElement.h | 27 +- .../webkit/WebCore/html/HTMLAreaElement.idl | 2 +- .../webkit/WebCore/html/HTMLAttributeNames.in | 8 +- src/3rdparty/webkit/WebCore/html/HTMLBRElement.cpp | 2 + .../webkit/WebCore/html/HTMLBaseElement.cpp | 1 + .../webkit/WebCore/html/HTMLBaseFontElement.cpp | 2 +- .../webkit/WebCore/html/HTMLBaseFontElement.idl | 2 +- .../webkit/WebCore/html/HTMLBodyElement.cpp | 65 +- src/3rdparty/webkit/WebCore/html/HTMLBodyElement.h | 15 +- .../webkit/WebCore/html/HTMLBodyElement.idl | 6 - .../webkit/WebCore/html/HTMLButtonElement.cpp | 8 +- .../webkit/WebCore/html/HTMLButtonElement.h | 2 +- .../webkit/WebCore/html/HTMLCanvasElement.cpp | 11 +- .../webkit/WebCore/html/HTMLCanvasElement.h | 5 +- .../webkit/WebCore/html/HTMLCanvasElement.idl | 4 +- .../webkit/WebCore/html/HTMLCollection.cpp | 74 +- src/3rdparty/webkit/WebCore/html/HTMLCollection.h | 90 +- .../webkit/WebCore/html/HTMLCollection.idl | 3 +- .../webkit/WebCore/html/HTMLDivElement.cpp | 2 + src/3rdparty/webkit/WebCore/html/HTMLDocument.cpp | 8 +- src/3rdparty/webkit/WebCore/html/HTMLDocument.h | 1 + src/3rdparty/webkit/WebCore/html/HTMLDocument.idl | 2 +- src/3rdparty/webkit/WebCore/html/HTMLElement.cpp | 130 +- src/3rdparty/webkit/WebCore/html/HTMLElement.h | 4 - src/3rdparty/webkit/WebCore/html/HTMLElement.idl | 4 +- .../webkit/WebCore/html/HTMLElementFactory.cpp | 509 - .../webkit/WebCore/html/HTMLElementFactory.h | 47 - .../webkit/WebCore/html/HTMLElementsAllInOne.cpp | 101 + .../webkit/WebCore/html/HTMLEmbedElement.cpp | 16 +- .../webkit/WebCore/html/HTMLEmbedElement.idl | 10 +- .../webkit/WebCore/html/HTMLFieldSetElement.cpp | 2 +- .../webkit/WebCore/html/HTMLFieldSetElement.h | 2 +- .../webkit/WebCore/html/HTMLFontElement.cpp | 1 + .../webkit/WebCore/html/HTMLFormCollection.cpp | 7 +- .../webkit/WebCore/html/HTMLFormCollection.h | 2 +- .../webkit/WebCore/html/HTMLFormControlElement.cpp | 28 +- .../webkit/WebCore/html/HTMLFormControlElement.h | 31 +- .../webkit/WebCore/html/HTMLFormElement.cpp | 176 +- src/3rdparty/webkit/WebCore/html/HTMLFormElement.h | 28 +- .../webkit/WebCore/html/HTMLFormElement.idl | 4 +- .../webkit/WebCore/html/HTMLFrameElement.cpp | 5 +- .../webkit/WebCore/html/HTMLFrameElement.h | 5 +- .../webkit/WebCore/html/HTMLFrameElement.idl | 6 +- .../webkit/WebCore/html/HTMLFrameElementBase.cpp | 14 +- .../webkit/WebCore/html/HTMLFrameElementBase.h | 2 +- .../webkit/WebCore/html/HTMLFrameOwnerElement.cpp | 3 +- .../webkit/WebCore/html/HTMLFrameOwnerElement.h | 5 +- .../webkit/WebCore/html/HTMLFrameSetElement.cpp | 17 +- src/3rdparty/webkit/WebCore/html/HTMLHRElement.cpp | 2 + .../webkit/WebCore/html/HTMLHtmlElement.cpp | 4 +- .../webkit/WebCore/html/HTMLIFrameElement.cpp | 5 +- .../webkit/WebCore/html/HTMLIFrameElement.h | 2 +- .../webkit/WebCore/html/HTMLIFrameElement.idl | 6 +- .../webkit/WebCore/html/HTMLImageElement.cpp | 14 +- .../webkit/WebCore/html/HTMLImageElement.idl | 2 +- .../webkit/WebCore/html/HTMLImageLoader.cpp | 18 +- .../webkit/WebCore/html/HTMLInputElement.cpp | 579 +- .../webkit/WebCore/html/HTMLInputElement.h | 96 +- .../webkit/WebCore/html/HTMLInputElement.idl | 13 +- .../webkit/WebCore/html/HTMLIsIndexElement.cpp | 6 +- .../webkit/WebCore/html/HTMLKeygenElement.cpp | 3 +- .../webkit/WebCore/html/HTMLKeygenElement.h | 2 +- src/3rdparty/webkit/WebCore/html/HTMLLIElement.cpp | 1 + .../webkit/WebCore/html/HTMLLabelElement.cpp | 2 +- .../webkit/WebCore/html/HTMLLegendElement.cpp | 13 +- .../webkit/WebCore/html/HTMLLegendElement.h | 3 +- .../webkit/WebCore/html/HTMLLinkElement.cpp | 70 +- src/3rdparty/webkit/WebCore/html/HTMLLinkElement.h | 2 +- .../webkit/WebCore/html/HTMLLinkElement.idl | 4 +- .../webkit/WebCore/html/HTMLMapElement.cpp | 6 +- .../webkit/WebCore/html/HTMLMarqueeElement.cpp | 28 +- .../webkit/WebCore/html/HTMLMarqueeElement.h | 8 +- .../webkit/WebCore/html/HTMLMediaElement.cpp | 1418 +- .../webkit/WebCore/html/HTMLMediaElement.h | 199 +- .../webkit/WebCore/html/HTMLMediaElement.idl | 46 +- .../webkit/WebCore/html/HTMLMetaElement.cpp | 2 + .../webkit/WebCore/html/HTMLNameCollection.cpp | 2 +- .../webkit/WebCore/html/HTMLNameCollection.h | 4 +- .../webkit/WebCore/html/HTMLNoScriptElement.cpp | 85 + .../webkit/WebCore/html/HTMLNoScriptElement.h | 46 + .../webkit/WebCore/html/HTMLOListElement.cpp | 2 + .../webkit/WebCore/html/HTMLObjectElement.cpp | 22 +- .../webkit/WebCore/html/HTMLObjectElement.idl | 8 +- .../webkit/WebCore/html/HTMLOptGroupElement.cpp | 15 +- .../webkit/WebCore/html/HTMLOptGroupElement.h | 7 +- .../webkit/WebCore/html/HTMLOptionElement.cpp | 97 +- .../webkit/WebCore/html/HTMLOptionElement.h | 26 +- .../webkit/WebCore/html/HTMLOptionElement.idl | 2 +- .../webkit/WebCore/html/HTMLOptionsCollection.idl | 2 +- .../webkit/WebCore/html/HTMLParagraphElement.cpp | 2 + .../webkit/WebCore/html/HTMLParamElement.cpp | 1 + src/3rdparty/webkit/WebCore/html/HTMLParser.cpp | 446 +- src/3rdparty/webkit/WebCore/html/HTMLParser.h | 35 +- .../webkit/WebCore/html/HTMLParserQuirks.h | 49 + .../webkit/WebCore/html/HTMLPlugInElement.cpp | 4 +- .../webkit/WebCore/html/HTMLPreElement.cpp | 2 + .../webkit/WebCore/html/HTMLQuoteElement.cpp | 8 + .../webkit/WebCore/html/HTMLQuoteElement.h | 2 + .../webkit/WebCore/html/HTMLScriptElement.cpp | 13 +- .../webkit/WebCore/html/HTMLScriptElement.h | 5 +- .../webkit/WebCore/html/HTMLSelectElement.cpp | 881 +- .../webkit/WebCore/html/HTMLSelectElement.h | 164 +- .../webkit/WebCore/html/HTMLSelectElement.idl | 4 +- .../webkit/WebCore/html/HTMLSourceElement.cpp | 22 +- .../webkit/WebCore/html/HTMLSourceElement.h | 9 + .../webkit/WebCore/html/HTMLStyleElement.cpp | 2 + .../webkit/WebCore/html/HTMLStyleElement.idl | 2 +- .../WebCore/html/HTMLTableCaptionElement.cpp | 2 + .../webkit/WebCore/html/HTMLTableCellElement.cpp | 2 + .../webkit/WebCore/html/HTMLTableColElement.cpp | 4 +- .../webkit/WebCore/html/HTMLTableElement.cpp | 9 +- .../webkit/WebCore/html/HTMLTablePartElement.cpp | 2 + .../webkit/WebCore/html/HTMLTableRowElement.cpp | 2 +- .../WebCore/html/HTMLTableRowsCollection.cpp | 2 +- .../WebCore/html/HTMLTableSectionElement.cpp | 2 +- src/3rdparty/webkit/WebCore/html/HTMLTagNames.in | 46 +- .../webkit/WebCore/html/HTMLTextAreaElement.cpp | 59 +- .../webkit/WebCore/html/HTMLTextAreaElement.h | 14 +- src/3rdparty/webkit/WebCore/html/HTMLTokenizer.cpp | 82 +- src/3rdparty/webkit/WebCore/html/HTMLTokenizer.h | 6 +- .../webkit/WebCore/html/HTMLUListElement.cpp | 2 + .../webkit/WebCore/html/HTMLVideoElement.cpp | 23 +- .../webkit/WebCore/html/HTMLVideoElement.h | 3 + .../webkit/WebCore/html/HTMLViewSourceDocument.cpp | 35 +- src/3rdparty/webkit/WebCore/html/ImageData.cpp | 2 +- src/3rdparty/webkit/WebCore/html/ImageData.h | 8 +- src/3rdparty/webkit/WebCore/html/ImageData.idl | 5 +- src/3rdparty/webkit/WebCore/html/MediaError.h | 2 +- src/3rdparty/webkit/WebCore/html/MediaError.idl | 1 + .../webkit/WebCore/html/PreloadScanner.cpp | 14 +- src/3rdparty/webkit/WebCore/html/TimeRanges.cpp | 56 +- src/3rdparty/webkit/WebCore/html/TimeRanges.h | 40 +- .../webkit/WebCore/inspector/ConsoleMessage.cpp | 119 + .../webkit/WebCore/inspector/ConsoleMessage.h | 68 + .../webkit/WebCore/inspector/InspectorClient.h | 2 + .../WebCore/inspector/InspectorController.cpp | 2996 +- .../webkit/WebCore/inspector/InspectorController.h | 173 +- .../WebCore/inspector/InspectorController.idl | 94 + .../inspector/InspectorDOMStorageResource.cpp | 83 + .../inspector/InspectorDOMStorageResource.h | 76 + .../inspector/InspectorDatabaseResource.cpp | 78 + .../WebCore/inspector/InspectorDatabaseResource.h | 72 + .../webkit/WebCore/inspector/InspectorFrontend.cpp | 298 + .../webkit/WebCore/inspector/InspectorFrontend.h | 105 + .../webkit/WebCore/inspector/InspectorResource.cpp | 325 + .../webkit/WebCore/inspector/InspectorResource.h | 163 + .../webkit/WebCore/inspector/JSONObject.cpp | 95 + src/3rdparty/webkit/WebCore/inspector/JSONObject.h | 60 + .../WebCore/inspector/JavaScriptCallFrame.cpp | 14 +- .../webkit/WebCore/inspector/JavaScriptCallFrame.h | 8 +- .../WebCore/inspector/JavaScriptCallFrame.idl | 2 +- .../WebCore/inspector/JavaScriptDebugListener.h | 5 + .../WebCore/inspector/JavaScriptDebugServer.cpp | 38 +- .../WebCore/inspector/JavaScriptDebugServer.h | 4 + .../webkit/WebCore/inspector/JavaScriptProfile.cpp | 125 +- .../webkit/WebCore/inspector/JavaScriptProfile.h | 6 +- .../WebCore/inspector/JavaScriptProfileNode.cpp | 51 +- .../WebCore/inspector/JavaScriptProfileNode.h | 6 +- .../front-end/BottomUpProfileDataGridTree.js | 252 + .../webkit/WebCore/inspector/front-end/Console.js | 223 +- .../WebCore/inspector/front-end/DOMStorage.js | 72 + .../inspector/front-end/DOMStorageDataGrid.js | 103 + .../inspector/front-end/DOMStorageItemsView.js | 108 + .../webkit/WebCore/inspector/front-end/DataGrid.js | 79 +- .../inspector/front-end/DatabaseQueryView.js | 2 +- .../inspector/front-end/DatabaseTableView.js | 20 +- .../WebCore/inspector/front-end/DatabasesPanel.js | 199 +- .../inspector/front-end/ElementsTreeOutline.js | 4 +- .../inspector/front-end/Images/domStorage.png | Bin 0 -> 442 bytes .../inspector/front-end/Images/radioDot.png | Bin 0 -> 235 bytes .../front-end/Images/userInputResultIcon.png | Bin 0 -> 259 bytes .../inspector/front-end/PanelEnablerView.js | 21 + .../inspector/front-end/ProfileDataGridTree.js | 398 + .../WebCore/inspector/front-end/ProfileView.js | 382 +- .../WebCore/inspector/front-end/ProfilesPanel.js | 16 +- .../WebCore/inspector/front-end/ResourcesPanel.js | 59 +- .../WebCore/inspector/front-end/ScriptsPanel.js | 56 +- .../WebCore/inspector/front-end/SourceFrame.js | 31 + .../WebCore/inspector/front-end/SourceView.js | 13 +- .../inspector/front-end/StylesSidebarPane.js | 4 +- .../front-end/TopDownProfileDataGridTree.js | 111 + .../webkit/WebCore/inspector/front-end/WebKit.qrc | 9 + .../WebCore/inspector/front-end/inspector.css | 172 +- .../WebCore/inspector/front-end/inspector.html | 6 + .../WebCore/inspector/front-end/inspector.js | 148 +- .../WebCore/inspector/front-end/utilities.js | 38 + src/3rdparty/webkit/WebCore/loader/Cache.cpp | 23 +- .../webkit/WebCore/loader/CachedCSSStyleSheet.cpp | 20 +- src/3rdparty/webkit/WebCore/loader/CachedFont.cpp | 11 +- src/3rdparty/webkit/WebCore/loader/CachedFont.h | 3 +- src/3rdparty/webkit/WebCore/loader/CachedImage.cpp | 7 +- src/3rdparty/webkit/WebCore/loader/CachedImage.h | 6 +- .../webkit/WebCore/loader/CachedResource.cpp | 84 +- .../webkit/WebCore/loader/CachedResource.h | 22 +- .../webkit/WebCore/loader/CachedScript.cpp | 14 +- src/3rdparty/webkit/WebCore/loader/CachedScript.h | 4 +- .../WebCore/loader/CrossOriginAccessControl.cpp | 116 + .../WebCore/loader/CrossOriginAccessControl.h | 41 + .../loader/CrossOriginPreflightResultCache.cpp | 173 + .../loader/CrossOriginPreflightResultCache.h | 78 + src/3rdparty/webkit/WebCore/loader/DocLoader.cpp | 23 +- src/3rdparty/webkit/WebCore/loader/DocLoader.h | 6 +- .../webkit/WebCore/loader/DocumentLoader.cpp | 66 +- .../webkit/WebCore/loader/DocumentLoader.h | 20 +- .../WebCore/loader/DocumentThreadableLoader.cpp | 199 + .../WebCore/loader/DocumentThreadableLoader.h | 83 + src/3rdparty/webkit/WebCore/loader/EmptyClients.h | 74 +- .../webkit/WebCore/loader/FTPDirectoryDocument.cpp | 37 +- .../webkit/WebCore/loader/FTPDirectoryParser.cpp | 4 + src/3rdparty/webkit/WebCore/loader/FormState.cpp | 14 +- src/3rdparty/webkit/WebCore/loader/FormState.h | 16 +- src/3rdparty/webkit/WebCore/loader/FrameLoader.cpp | 1790 +- src/3rdparty/webkit/WebCore/loader/FrameLoader.h | 271 +- .../webkit/WebCore/loader/FrameLoaderClient.cpp | 92 - .../webkit/WebCore/loader/FrameLoaderClient.h | 44 +- .../webkit/WebCore/loader/FrameLoaderTypes.h | 8 +- .../webkit/WebCore/loader/ImageDocument.cpp | 23 +- src/3rdparty/webkit/WebCore/loader/ImageLoader.cpp | 136 +- src/3rdparty/webkit/WebCore/loader/ImageLoader.h | 31 +- .../webkit/WebCore/loader/MainResourceLoader.cpp | 75 +- .../webkit/WebCore/loader/MainResourceLoader.h | 21 +- .../webkit/WebCore/loader/MediaDocument.cpp | 89 +- src/3rdparty/webkit/WebCore/loader/MediaDocument.h | 6 + .../WebCore/loader/NetscapePlugInStreamLoader.cpp | 5 + .../webkit/WebCore/loader/PluginDocument.cpp | 13 +- .../webkit/WebCore/loader/ProgressTracker.cpp | 10 +- .../webkit/WebCore/loader/ResourceLoader.cpp | 8 +- .../webkit/WebCore/loader/ResourceLoader.h | 6 +- .../webkit/WebCore/loader/SubresourceLoader.cpp | 9 +- .../webkit/WebCore/loader/SubresourceLoader.h | 2 +- .../WebCore/loader/SubresourceLoaderClient.h | 4 +- .../webkit/WebCore/loader/TextDocument.cpp | 27 +- .../webkit/WebCore/loader/TextResourceDecoder.cpp | 152 +- .../webkit/WebCore/loader/TextResourceDecoder.h | 36 +- .../webkit/WebCore/loader/ThreadableLoader.cpp | 72 + .../webkit/WebCore/loader/ThreadableLoader.h | 80 + .../webkit/WebCore/loader/ThreadableLoaderClient.h | 57 + .../WebCore/loader/ThreadableLoaderClientWrapper.h | 117 + .../WebCore/loader/WorkerThreadableLoader.cpp | 261 + .../webkit/WebCore/loader/WorkerThreadableLoader.h | 147 + .../WebCore/loader/appcache/ApplicationCache.cpp | 14 +- .../WebCore/loader/appcache/ApplicationCache.h | 7 +- .../loader/appcache/ApplicationCacheGroup.cpp | 756 +- .../loader/appcache/ApplicationCacheGroup.h | 78 +- .../loader/appcache/ApplicationCacheResource.cpp | 4 +- .../loader/appcache/ApplicationCacheResource.h | 2 +- .../loader/appcache/ApplicationCacheStorage.cpp | 116 +- .../loader/appcache/ApplicationCacheStorage.h | 11 +- .../loader/appcache/DOMApplicationCache.cpp | 33 +- .../WebCore/loader/appcache/DOMApplicationCache.h | 8 +- .../loader/appcache/DOMApplicationCache.idl | 8 +- .../WebCore/loader/appcache/ManifestParser.cpp | 41 +- .../WebCore/loader/archive/cf/LegacyWebArchive.cpp | 152 +- .../WebCore/loader/archive/cf/LegacyWebArchive.h | 27 +- .../loader/archive/cf/LegacyWebArchiveMac.mm | 20 +- .../WebCore/loader/cf/ResourceLoaderCFNet.cpp | 44 + .../webkit/WebCore/loader/icon/IconDatabase.cpp | 122 +- .../webkit/WebCore/loader/icon/IconDatabase.h | 10 +- .../WebCore/loader/icon/IconDatabaseNone.cpp | 47 +- .../webkit/WebCore/loader/icon/IconFetcher.cpp | 22 +- .../webkit/WebCore/loader/icon/IconLoader.cpp | 23 +- .../webkit/WebCore/loader/icon/IconRecord.cpp | 1 - src/3rdparty/webkit/WebCore/loader/loader.cpp | 63 +- src/3rdparty/webkit/WebCore/loader/loader.h | 6 + .../webkit/WebCore/make-generated-sources.sh | 2 +- src/3rdparty/webkit/WebCore/page/AXObjectCache.cpp | 239 - src/3rdparty/webkit/WebCore/page/AXObjectCache.h | 113 - .../WebCore/page/AccessibilityImageMapLink.cpp | 130 - .../WebCore/page/AccessibilityImageMapLink.h | 72 - .../webkit/WebCore/page/AccessibilityList.cpp | 94 - .../webkit/WebCore/page/AccessibilityList.h | 56 - .../webkit/WebCore/page/AccessibilityListBox.cpp | 177 - .../webkit/WebCore/page/AccessibilityListBox.h | 66 - .../WebCore/page/AccessibilityListBoxOption.cpp | 207 - .../WebCore/page/AccessibilityListBoxOption.h | 79 - .../webkit/WebCore/page/AccessibilityObject.cpp | 1031 - .../webkit/WebCore/page/AccessibilityObject.h | 424 - .../WebCore/page/AccessibilityRenderObject.cpp | 2387 - .../WebCore/page/AccessibilityRenderObject.h | 237 - .../webkit/WebCore/page/AccessibilityTable.cpp | 491 - .../webkit/WebCore/page/AccessibilityTable.h | 86 - .../webkit/WebCore/page/AccessibilityTableCell.cpp | 157 - .../webkit/WebCore/page/AccessibilityTableCell.h | 65 - .../WebCore/page/AccessibilityTableColumn.cpp | 167 - .../webkit/WebCore/page/AccessibilityTableColumn.h | 75 - .../page/AccessibilityTableHeaderContainer.cpp | 87 - .../page/AccessibilityTableHeaderContainer.h | 67 - .../webkit/WebCore/page/AccessibilityTableRow.cpp | 110 - .../webkit/WebCore/page/AccessibilityTableRow.h | 65 - src/3rdparty/webkit/WebCore/page/BarInfo.cpp | 10 + src/3rdparty/webkit/WebCore/page/BarInfo.h | 3 + src/3rdparty/webkit/WebCore/page/Chrome.cpp | 112 +- src/3rdparty/webkit/WebCore/page/Chrome.h | 9 +- src/3rdparty/webkit/WebCore/page/ChromeClient.h | 46 +- src/3rdparty/webkit/WebCore/page/Console.cpp | 59 +- src/3rdparty/webkit/WebCore/page/Console.h | 13 +- src/3rdparty/webkit/WebCore/page/Console.idl | 4 +- .../webkit/WebCore/page/ContextMenuController.cpp | 62 +- src/3rdparty/webkit/WebCore/page/Coordinates.cpp | 38 + src/3rdparty/webkit/WebCore/page/Coordinates.h | 88 + src/3rdparty/webkit/WebCore/page/Coordinates.idl | 41 + src/3rdparty/webkit/WebCore/page/DOMSelection.cpp | 103 +- src/3rdparty/webkit/WebCore/page/DOMSelection.h | 8 +- src/3rdparty/webkit/WebCore/page/DOMSelection.idl | 40 +- src/3rdparty/webkit/WebCore/page/DOMTimer.cpp | 171 + src/3rdparty/webkit/WebCore/page/DOMTimer.h | 75 + src/3rdparty/webkit/WebCore/page/DOMWindow.cpp | 969 +- src/3rdparty/webkit/WebCore/page/DOMWindow.h | 139 +- src/3rdparty/webkit/WebCore/page/DOMWindow.idl | 207 +- .../webkit/WebCore/page/DragController.cpp | 162 +- src/3rdparty/webkit/WebCore/page/DragController.h | 33 +- src/3rdparty/webkit/WebCore/page/EditorClient.h | 44 +- src/3rdparty/webkit/WebCore/page/EventHandler.cpp | 684 +- src/3rdparty/webkit/WebCore/page/EventHandler.h | 76 +- .../webkit/WebCore/page/FocusController.cpp | 60 +- src/3rdparty/webkit/WebCore/page/Frame.cpp | 778 +- src/3rdparty/webkit/WebCore/page/Frame.h | 127 +- .../webkit/WebCore/page/FrameLoadRequest.h | 7 - src/3rdparty/webkit/WebCore/page/FramePrivate.h | 99 - src/3rdparty/webkit/WebCore/page/FrameTree.cpp | 5 +- src/3rdparty/webkit/WebCore/page/FrameTree.h | 4 +- src/3rdparty/webkit/WebCore/page/FrameView.cpp | 871 +- src/3rdparty/webkit/WebCore/page/FrameView.h | 137 +- src/3rdparty/webkit/WebCore/page/Geolocation.cpp | 95 +- src/3rdparty/webkit/WebCore/page/Geolocation.h | 41 +- src/3rdparty/webkit/WebCore/page/Geoposition.cpp | 4 +- src/3rdparty/webkit/WebCore/page/Geoposition.h | 31 +- src/3rdparty/webkit/WebCore/page/Geoposition.idl | 10 +- src/3rdparty/webkit/WebCore/page/History.idl | 9 +- src/3rdparty/webkit/WebCore/page/Location.cpp | 12 +- src/3rdparty/webkit/WebCore/page/Location.idl | 23 +- src/3rdparty/webkit/WebCore/page/Navigator.cpp | 16 +- src/3rdparty/webkit/WebCore/page/Navigator.idl | 5 +- src/3rdparty/webkit/WebCore/page/NavigatorBase.cpp | 4 +- src/3rdparty/webkit/WebCore/page/Page.cpp | 130 +- src/3rdparty/webkit/WebCore/page/Page.h | 26 +- .../webkit/WebCore/page/PageGroupLoadDeferrer.cpp | 72 + .../webkit/WebCore/page/PageGroupLoadDeferrer.h | 41 + src/3rdparty/webkit/WebCore/page/PositionOptions.h | 8 +- src/3rdparty/webkit/WebCore/page/PrintContext.cpp | 4 +- src/3rdparty/webkit/WebCore/page/Screen.cpp | 5 + src/3rdparty/webkit/WebCore/page/Screen.h | 2 + .../webkit/WebCore/page/SecurityOrigin.cpp | 35 +- src/3rdparty/webkit/WebCore/page/SecurityOrigin.h | 6 + src/3rdparty/webkit/WebCore/page/Settings.cpp | 69 +- src/3rdparty/webkit/WebCore/page/Settings.h | 67 +- src/3rdparty/webkit/WebCore/page/WebKitPoint.h | 63 + src/3rdparty/webkit/WebCore/page/WebKitPoint.idl | 33 + .../WebCore/page/android/DragControllerAndroid.cpp | 58 + .../WebCore/page/android/EventHandlerAndroid.cpp | 129 + .../page/android/InspectorControllerAndroid.cpp | 106 + .../WebCore/page/animation/AnimationBase.cpp | 420 +- .../webkit/WebCore/page/animation/AnimationBase.h | 44 +- .../WebCore/page/animation/AnimationController.cpp | 379 +- .../WebCore/page/animation/AnimationController.h | 27 +- .../page/animation/AnimationControllerPrivate.h | 135 + .../WebCore/page/animation/CompositeAnimation.cpp | 638 +- .../WebCore/page/animation/CompositeAnimation.h | 47 +- .../WebCore/page/animation/ImplicitAnimation.cpp | 89 +- .../WebCore/page/animation/ImplicitAnimation.h | 9 +- .../WebCore/page/animation/KeyframeAnimation.cpp | 190 +- .../WebCore/page/animation/KeyframeAnimation.h | 13 +- .../page/chromium/AccessibilityObjectChromium.cpp | 37 - .../page/chromium/AccessibilityObjectWrapper.h | 50 - .../WebCore/page/qt/AccessibilityObjectQt.cpp | 34 - src/3rdparty/webkit/WebCore/page/qt/FrameQt.cpp | 18 +- .../webkit/WebCore/page/win/AXObjectCacheWin.cpp | 61 - .../WebCore/page/win/AccessibilityObjectWin.cpp | 40 - .../page/win/AccessibilityObjectWrapperWin.h | 54 - .../webkit/WebCore/page/win/FrameCGWin.cpp | 5 +- src/3rdparty/webkit/WebCore/page/win/FrameWin.cpp | 5 +- src/3rdparty/webkit/WebCore/platform/Arena.cpp | 23 - .../webkit/WebCore/platform/ContentType.cpp | 73 + src/3rdparty/webkit/WebCore/platform/ContentType.h | 47 + .../webkit/WebCore/platform/ContextMenu.cpp | 133 +- src/3rdparty/webkit/WebCore/platform/ContextMenu.h | 1 - .../webkit/WebCore/platform/ContextMenuItem.h | 15 + src/3rdparty/webkit/WebCore/platform/CookieJar.h | 2 +- .../webkit/WebCore/platform/CrossThreadCopier.cpp | 62 + .../webkit/WebCore/platform/CrossThreadCopier.h | 109 + src/3rdparty/webkit/WebCore/platform/Cursor.h | 7 + .../WebCore/platform/DeprecatedPtrListImpl.cpp | 2 +- src/3rdparty/webkit/WebCore/platform/FileSystem.h | 11 +- .../webkit/WebCore/platform/GeolocationService.cpp | 4 +- .../webkit/WebCore/platform/GeolocationService.h | 12 +- src/3rdparty/webkit/WebCore/platform/HostWindow.h | 7 +- src/3rdparty/webkit/WebCore/platform/KURL.cpp | 185 +- src/3rdparty/webkit/WebCore/platform/KURL.h | 40 +- .../webkit/WebCore/platform/KURLGoogle.cpp | 962 + .../webkit/WebCore/platform/KURLGooglePrivate.h | 115 + .../webkit/WebCore/platform/KeyboardCodes.h | 574 + .../webkit/WebCore/platform/LocalizedStrings.h | 13 + src/3rdparty/webkit/WebCore/platform/Logging.cpp | 30 + src/3rdparty/webkit/WebCore/platform/Logging.h | 3 + .../webkit/WebCore/platform/MIMETypeRegistry.cpp | 120 +- .../webkit/WebCore/platform/MIMETypeRegistry.h | 4 + .../webkit/WebCore/platform/NotImplemented.h | 2 +- .../webkit/WebCore/platform/PlatformMouseEvent.h | 71 +- .../webkit/WebCore/platform/PlatformWheelEvent.h | 71 +- .../webkit/WebCore/platform/PopupMenuStyle.h | 10 +- .../webkit/WebCore/platform/RunLoopTimer.h | 79 + .../webkit/WebCore/platform/ScrollView.cpp | 186 +- src/3rdparty/webkit/WebCore/platform/ScrollView.h | 17 +- src/3rdparty/webkit/WebCore/platform/Scrollbar.cpp | 69 +- src/3rdparty/webkit/WebCore/platform/Scrollbar.h | 8 +- .../webkit/WebCore/platform/ScrollbarTheme.h | 1 + .../webkit/WebCore/platform/SharedBuffer.h | 4 +- src/3rdparty/webkit/WebCore/platform/SharedTimer.h | 43 +- .../webkit/WebCore/platform/SuddenTermination.h | 43 + src/3rdparty/webkit/WebCore/platform/SystemTime.h | 4 - src/3rdparty/webkit/WebCore/platform/ThemeTypes.h | 5 +- src/3rdparty/webkit/WebCore/platform/ThreadCheck.h | 14 +- .../webkit/WebCore/platform/ThreadGlobalData.cpp | 19 +- .../webkit/WebCore/platform/ThreadGlobalData.h | 11 +- .../webkit/WebCore/platform/ThreadTimers.cpp | 158 + .../webkit/WebCore/platform/ThreadTimers.h | 69 + src/3rdparty/webkit/WebCore/platform/Timer.cpp | 177 +- src/3rdparty/webkit/WebCore/platform/Timer.h | 18 +- src/3rdparty/webkit/WebCore/platform/Widget.h | 4 +- .../WebCore/platform/android/ClipboardAndroid.cpp | 105 + .../WebCore/platform/android/ClipboardAndroid.h | 64 + .../WebCore/platform/animation/Animation.cpp | 39 +- .../webkit/WebCore/platform/animation/Animation.h | 25 +- .../WebCore/platform/graphics/BitmapImage.cpp | 31 +- .../webkit/WebCore/platform/graphics/BitmapImage.h | 26 +- .../webkit/WebCore/platform/graphics/Color.cpp | 41 +- .../webkit/WebCore/platform/graphics/Color.h | 7 +- .../WebCore/platform/graphics/FloatPoint.cpp | 2 +- .../WebCore/platform/graphics/FloatPoint3D.cpp | 2 - .../WebCore/platform/graphics/FloatPoint3D.h | 4 - .../webkit/WebCore/platform/graphics/FloatQuad.cpp | 39 + .../webkit/WebCore/platform/graphics/FloatQuad.h | 8 + .../webkit/WebCore/platform/graphics/Font.cpp | 71 +- .../webkit/WebCore/platform/graphics/Font.h | 36 +- .../webkit/WebCore/platform/graphics/FontCache.cpp | 43 +- .../webkit/WebCore/platform/graphics/FontCache.h | 43 +- .../WebCore/platform/graphics/FontDescription.h | 6 +- .../WebCore/platform/graphics/FontFallbackList.cpp | 22 +- .../WebCore/platform/graphics/FontFallbackList.h | 2 +- .../WebCore/platform/graphics/FontFastPath.cpp | 22 +- .../WebCore/platform/graphics/GeneratedImage.cpp | 2 +- .../webkit/WebCore/platform/graphics/GlyphBuffer.h | 14 +- .../platform/graphics/GlyphPageTreeNode.cpp | 28 +- .../WebCore/platform/graphics/GlyphPageTreeNode.h | 67 +- .../WebCore/platform/graphics/GlyphWidthMap.cpp | 37 +- .../WebCore/platform/graphics/GlyphWidthMap.h | 43 +- .../webkit/WebCore/platform/graphics/Gradient.cpp | 9 + .../webkit/WebCore/platform/graphics/Gradient.h | 10 + .../WebCore/platform/graphics/GraphicsContext.cpp | 85 +- .../WebCore/platform/graphics/GraphicsContext.h | 72 +- .../platform/graphics/GraphicsContextPrivate.h | 18 +- .../WebCore/platform/graphics/GraphicsLayer.cpp | 545 + .../WebCore/platform/graphics/GraphicsLayer.h | 409 + .../platform/graphics/GraphicsLayerClient.h | 69 + .../WebCore/platform/graphics/GraphicsTypes.h | 8 + .../webkit/WebCore/platform/graphics/Image.cpp | 24 +- .../webkit/WebCore/platform/graphics/Image.h | 29 +- .../webkit/WebCore/platform/graphics/ImageBuffer.h | 14 +- .../webkit/WebCore/platform/graphics/ImageSource.h | 5 + .../webkit/WebCore/platform/graphics/IntPoint.h | 1 + .../webkit/WebCore/platform/graphics/IntSize.h | 6 + .../WebCore/platform/graphics/MediaPlayer.cpp | 282 +- .../webkit/WebCore/platform/graphics/MediaPlayer.h | 103 +- .../WebCore/platform/graphics/MediaPlayerPrivate.h | 98 + .../webkit/WebCore/platform/graphics/Path.cpp | 2 +- .../webkit/WebCore/platform/graphics/Path.h | 17 +- .../webkit/WebCore/platform/graphics/Pattern.h | 6 +- .../platform/graphics/SegmentedFontData.cpp | 17 +- .../WebCore/platform/graphics/SegmentedFontData.h | 12 +- .../WebCore/platform/graphics/SimpleFontData.cpp | 86 +- .../WebCore/platform/graphics/SimpleFontData.h | 52 +- .../WebCore/platform/graphics/WidthIterator.cpp | 27 +- .../WebCore/platform/graphics/WidthIterator.h | 5 +- .../WebCore/platform/graphics/filters/FEBlend.cpp | 8 +- .../WebCore/platform/graphics/filters/FEBlend.h | 10 +- .../platform/graphics/filters/FEColorMatrix.cpp | 8 +- .../platform/graphics/filters/FEColorMatrix.h | 10 +- .../graphics/filters/FEComponentTransfer.cpp | 8 +- .../graphics/filters/FEComponentTransfer.h | 11 +- .../platform/graphics/filters/FEComposite.cpp | 8 +- .../platform/graphics/filters/FEComposite.h | 10 +- .../WebCore/platform/graphics/filters/Filter.h | 52 + .../platform/graphics/filters/FilterEffect.cpp | 46 + .../platform/graphics/filters/FilterEffect.h | 81 + .../platform/graphics/filters/SourceAlpha.cpp | 54 + .../platform/graphics/filters/SourceAlpha.h | 47 + .../platform/graphics/filters/SourceGraphic.cpp | 54 + .../platform/graphics/filters/SourceGraphic.h | 48 + .../graphics/opentype/OpenTypeUtilities.cpp | 408 + .../platform/graphics/opentype/OpenTypeUtilities.h | 58 + .../WebCore/platform/graphics/qt/FontCacheQt.cpp | 19 + .../platform/graphics/qt/FontPlatformDataQt.cpp | 2 + .../webkit/WebCore/platform/graphics/qt/FontQt.cpp | 50 +- .../WebCore/platform/graphics/qt/GradientQt.cpp | 12 + .../platform/graphics/qt/GraphicsContextQt.cpp | 80 +- .../webkit/WebCore/platform/graphics/qt/IconQt.cpp | 1 - .../WebCore/platform/graphics/qt/ImageBufferQt.cpp | 5 +- .../WebCore/platform/graphics/qt/ImageQt.cpp | 33 +- .../WebCore/platform/graphics/qt/ImageSourceQt.cpp | 3 +- .../graphics/qt/MediaPlayerPrivatePhonon.cpp | 58 +- .../graphics/qt/MediaPlayerPrivatePhonon.h | 43 +- .../webkit/WebCore/platform/graphics/qt/PathQt.cpp | 37 +- .../WebCore/platform/graphics/qt/PatternQt.cpp | 5 +- .../platform/graphics/qt/SimpleFontDataQt.cpp | 11 +- .../graphics/qt/TransformationMatrixQt.cpp | 167 +- .../transforms/Matrix3DTransformOperation.cpp | 56 + .../transforms/Matrix3DTransformOperation.h | 72 + .../transforms/MatrixTransformOperation.cpp | 4 +- .../graphics/transforms/MatrixTransformOperation.h | 19 +- .../transforms/PerspectiveTransformOperation.cpp | 58 + .../transforms/PerspectiveTransformOperation.h | 71 + .../transforms/RotateTransformOperation.cpp | 61 +- .../graphics/transforms/RotateTransformOperation.h | 29 +- .../transforms/ScaleTransformOperation.cpp | 9 +- .../graphics/transforms/ScaleTransformOperation.h | 23 +- .../graphics/transforms/TransformOperation.h | 26 +- .../graphics/transforms/TransformOperations.h | 10 + .../graphics/transforms/TransformationMatrix.cpp | 1076 +- .../graphics/transforms/TransformationMatrix.h | 300 +- .../transforms/TranslateTransformOperation.cpp | 7 +- .../transforms/TranslateTransformOperation.h | 25 +- .../WebCore/platform/image-decoders/ImageDecoder.h | 270 +- .../webkit/WebCore/platform/mac/ClipboardMac.mm | 129 +- .../webkit/WebCore/platform/mac/CookieJar.mm | 5 +- .../webkit/WebCore/platform/mac/DragDataMac.mm | 2 +- .../webkit/WebCore/platform/mac/DragImageMac.mm | 31 +- .../webkit/WebCore/platform/mac/FoundationExtras.h | 3 + .../WebCore/platform/mac/GeolocationServiceMac.h | 75 + .../WebCore/platform/mac/GeolocationServiceMac.mm | 219 + .../platform/mac/LocalCurrentGraphicsContext.h | 4 + .../WebCore/platform/mac/LocalizedStringsMac.mm | 104 + .../webkit/WebCore/platform/mac/PasteboardMac.mm | 23 +- .../WebCore/platform/mac/PlatformMouseEventMac.mm | 40 +- .../WebCore/platform/mac/PlatformScreenMac.mm | 6 +- .../platform/mac/RuntimeApplicationChecks.h | 36 + .../platform/mac/RuntimeApplicationChecks.mm | 44 + .../WebCore/platform/mac/ScrollbarThemeMac.mm | 28 +- .../webkit/WebCore/platform/mac/SharedBufferMac.mm | 10 +- .../webkit/WebCore/platform/mac/SharedTimerMac.mm | 10 +- .../WebCore/platform/mac/SuddenTermination.mm | 45 + .../webkit/WebCore/platform/mac/SystemTimeMac.cpp | 5 - .../webkit/WebCore/platform/mac/ThreadCheck.mm | 62 +- .../WebCore/platform/mac/WebCoreKeyGenerator.m | 9 +- .../WebCore/platform/mac/WebCoreObjCExtras.mm | 3 + .../WebCore/platform/mac/WebCoreSystemInterface.h | 21 +- .../WebCore/platform/mac/WebCoreSystemInterface.mm | 14 +- .../WebCore/platform/mac/WebCoreTextRenderer.h | 40 - .../WebCore/platform/mac/WebCoreTextRenderer.mm | 93 - .../webkit/WebCore/platform/mac/WebFontCache.h | 5 +- .../webkit/WebCore/platform/mac/WebFontCache.mm | 24 +- .../webkit/WebCore/platform/mac/WheelEventMac.mm | 18 +- .../webkit/WebCore/platform/mac/WidgetMac.mm | 26 +- .../webkit/WebCore/platform/network/FormData.cpp | 27 +- .../webkit/WebCore/platform/network/FormData.h | 9 +- .../WebCore/platform/network/HTTPHeaderMap.cpp | 63 + .../WebCore/platform/network/HTTPHeaderMap.h | 14 +- .../WebCore/platform/network/HTTPParsers.cpp | 41 +- .../WebCore/platform/network/ResourceErrorBase.cpp | 17 +- .../WebCore/platform/network/ResourceErrorBase.h | 7 +- .../WebCore/platform/network/ResourceHandle.cpp | 26 + .../WebCore/platform/network/ResourceHandle.h | 21 +- .../platform/network/ResourceHandleClient.h | 8 +- .../platform/network/ResourceHandleInternal.h | 25 +- .../platform/network/ResourceRequestBase.cpp | 104 +- .../WebCore/platform/network/ResourceRequestBase.h | 46 +- .../platform/network/ResourceResponseBase.cpp | 261 +- .../platform/network/ResourceResponseBase.h | 102 +- .../platform/network/chromium/ResourceResponse.h | 83 - .../platform/network/qt/QNetworkReplyHandler.cpp | 5 +- .../platform/network/qt/QNetworkReplyHandler.h | 1 - .../platform/network/qt/ResourceHandleQt.cpp | 2 +- .../WebCore/platform/posix/FileSystemPOSIX.cpp | 12 +- .../webkit/WebCore/platform/qt/ContextMenuQt.cpp | 1 - .../webkit/WebCore/platform/qt/CookieJarQt.cpp | 6 +- .../webkit/WebCore/platform/qt/DragDataQt.cpp | 1 - .../webkit/WebCore/platform/qt/FileSystemQt.cpp | 29 +- src/3rdparty/webkit/WebCore/platform/qt/KURLQt.cpp | 3 +- .../webkit/WebCore/platform/qt/KeyboardCodes.h | 561 - .../webkit/WebCore/platform/qt/Localizations.cpp | 5 +- .../webkit/WebCore/platform/qt/MenuEventProxy.h | 54 - .../WebCore/platform/qt/PlatformMouseEventQt.cpp | 4 +- .../webkit/WebCore/platform/qt/PopupMenuQt.cpp | 1 - .../webkit/WebCore/platform/qt/QWebPopup.cpp | 4 +- .../webkit/WebCore/platform/qt/RenderThemeQt.cpp | 10 +- .../webkit/WebCore/platform/qt/ScrollViewQt.cpp | 20 +- .../webkit/WebCore/platform/qt/SharedTimerQt.cpp | 2 +- .../webkit/WebCore/platform/qt/SystemTimeQt.cpp | 46 - .../WebCore/platform/qt/TemporaryLinkStubs.cpp | 33 - .../webkit/WebCore/platform/qt/WheelEventQt.cpp | 13 +- .../webkit/WebCore/platform/text/AtomicString.cpp | 6 +- .../webkit/WebCore/platform/text/AtomicString.h | 20 +- .../webkit/WebCore/platform/text/Base64.cpp | 6 +- .../webkit/WebCore/platform/text/BidiContext.cpp | 31 +- .../webkit/WebCore/platform/text/BidiContext.h | 33 +- .../webkit/WebCore/platform/text/BidiResolver.h | 21 +- .../webkit/WebCore/platform/text/CString.cpp | 25 +- .../webkit/WebCore/platform/text/CString.h | 17 +- .../webkit/WebCore/platform/text/CharacterNames.h | 2 + .../webkit/WebCore/platform/text/PlatformString.h | 19 +- .../WebCore/platform/text/RegularExpression.cpp | 121 +- .../WebCore/platform/text/RegularExpression.h | 14 +- .../webkit/WebCore/platform/text/String.cpp | 98 +- .../webkit/WebCore/platform/text/StringBuilder.cpp | 9 +- .../webkit/WebCore/platform/text/StringImpl.cpp | 253 +- .../webkit/WebCore/platform/text/StringImpl.h | 72 +- .../webkit/WebCore/platform/text/TextBoundaries.h | 5 + .../WebCore/platform/text/TextBoundariesICU.cpp | 1 + .../WebCore/platform/text/TextBreakIterator.h | 12 + .../WebCore/platform/text/TextBreakIteratorICU.cpp | 116 + .../webkit/WebCore/platform/text/TextCodec.h | 3 +- .../webkit/WebCore/platform/text/TextCodecICU.cpp | 10 +- .../webkit/WebCore/platform/text/TextCodecICU.h | 2 + .../WebCore/platform/text/TextCodecLatin1.cpp | 14 +- .../WebCore/platform/text/TextCodecUTF16.cpp | 11 +- .../WebCore/platform/text/TextCodecUserDefined.cpp | 12 +- .../webkit/WebCore/platform/text/TextDecoder.cpp | 129 - .../webkit/WebCore/platform/text/TextDecoder.h | 64 - .../webkit/WebCore/platform/text/TextEncoding.cpp | 50 +- .../webkit/WebCore/platform/text/TextEncoding.h | 27 +- .../WebCore/platform/text/TextEncodingDetector.h | 48 + .../platform/text/TextEncodingDetectorICU.cpp | 129 + .../platform/text/TextEncodingDetectorNone.cpp | 44 + .../WebCore/platform/text/TextEncodingRegistry.cpp | 8 +- .../WebCore/platform/text/TextEncodingRegistry.h | 10 +- .../webkit/WebCore/platform/text/TextStream.cpp | 5 + .../webkit/WebCore/platform/text/TextStream.h | 1 + .../WebCore/platform/text/cf/StringImplCF.cpp | 131 +- .../webkit/WebCore/platform/text/mac/ShapeArabic.c | 9 +- .../WebCore/platform/text/mac/StringImplMac.mm | 8 +- .../webkit/WebCore/platform/text/mac/StringMac.mm | 1 + .../WebCore/platform/text/mac/TextBoundaries.mm | 2 + .../WebCore/platform/text/mac/TextCodecMac.cpp | 6 +- .../platform/text/qt/TextBreakIteratorQt.cpp | 11 + .../WebCore/platform/text/qt/TextCodecQt.cpp | 4 +- .../text/win/TextBreakIteratorInternalICUWin.cpp | 6 +- .../webkit/WebCore/platform/win/SystemTimeWin.cpp | 9 - .../webkit/WebCore/plugins/PluginDataNone.cpp | 44 + .../webkit/WebCore/plugins/PluginPackage.cpp | 86 +- .../webkit/WebCore/plugins/PluginPackage.h | 1 + .../webkit/WebCore/plugins/PluginPackageNone.cpp | 77 + .../webkit/WebCore/plugins/PluginStream.cpp | 8 +- src/3rdparty/webkit/WebCore/plugins/PluginView.cpp | 31 +- src/3rdparty/webkit/WebCore/plugins/PluginView.h | 25 +- .../webkit/WebCore/plugins/PluginViewNone.cpp | 156 + .../WebCore/plugins/mac/PluginPackageMac.cpp | 73 +- .../webkit/WebCore/plugins/mac/PluginViewMac.cpp | 10 +- src/3rdparty/webkit/WebCore/plugins/npfunctions.h | 9 + .../WebCore/plugins/qt/PluginContainerQt.cpp | 149 + .../webkit/WebCore/plugins/qt/PluginContainerQt.h | 63 + .../webkit/WebCore/plugins/qt/PluginPackageQt.cpp | 72 +- .../webkit/WebCore/plugins/qt/PluginViewQt.cpp | 149 +- .../WebCore/plugins/win/PluginPackageWin.cpp | 58 +- .../webkit/WebCore/plugins/win/PluginViewWin.cpp | 143 +- .../webkit/WebCore/rendering/EllipsisBox.cpp | 20 +- .../webkit/WebCore/rendering/EllipsisBox.h | 11 +- .../webkit/WebCore/rendering/FixedTableLayout.cpp | 42 +- .../webkit/WebCore/rendering/HitTestRequest.h | 34 +- .../webkit/WebCore/rendering/HitTestResult.cpp | 20 +- .../webkit/WebCore/rendering/HitTestResult.h | 1 + .../webkit/WebCore/rendering/InlineBox.cpp | 81 +- src/3rdparty/webkit/WebCore/rendering/InlineBox.h | 124 +- .../webkit/WebCore/rendering/InlineFlowBox.cpp | 570 +- .../webkit/WebCore/rendering/InlineFlowBox.h | 62 +- .../webkit/WebCore/rendering/InlineTextBox.cpp | 344 +- .../webkit/WebCore/rendering/InlineTextBox.h | 59 +- .../webkit/WebCore/rendering/LayoutState.cpp | 25 +- .../webkit/WebCore/rendering/LayoutState.h | 11 +- .../webkit/WebCore/rendering/ListMarkerBox.cpp | 45 - .../webkit/WebCore/rendering/ListMarkerBox.h | 41 - .../WebCore/rendering/MediaControlElements.cpp | 146 +- .../WebCore/rendering/MediaControlElements.h | 36 +- .../WebCore/rendering/OverlapTestRequestClient.h | 39 + .../WebCore/rendering/PointerEventsHitRules.h | 2 +- .../webkit/WebCore/rendering/RenderApplet.cpp | 27 +- .../webkit/WebCore/rendering/RenderApplet.h | 9 +- .../webkit/WebCore/rendering/RenderArena.cpp | 4 +- src/3rdparty/webkit/WebCore/rendering/RenderBR.cpp | 15 +- src/3rdparty/webkit/WebCore/rendering/RenderBR.h | 8 +- .../webkit/WebCore/rendering/RenderBlock.cpp | 2006 +- .../webkit/WebCore/rendering/RenderBlock.h | 234 +- .../webkit/WebCore/rendering/RenderBox.cpp | 1611 +- src/3rdparty/webkit/WebCore/rendering/RenderBox.h | 298 +- .../WebCore/rendering/RenderBoxModelObject.cpp | 1177 + .../WebCore/rendering/RenderBoxModelObject.h | 135 + .../webkit/WebCore/rendering/RenderButton.cpp | 36 +- .../webkit/WebCore/rendering/RenderButton.h | 22 +- .../webkit/WebCore/rendering/RenderContainer.cpp | 701 - .../webkit/WebCore/rendering/RenderContainer.h | 75 - .../webkit/WebCore/rendering/RenderCounter.cpp | 15 +- .../webkit/WebCore/rendering/RenderCounter.h | 1 - .../webkit/WebCore/rendering/RenderFieldset.cpp | 60 +- .../webkit/WebCore/rendering/RenderFieldset.h | 5 +- .../WebCore/rendering/RenderFileUploadControl.cpp | 22 +- .../WebCore/rendering/RenderFileUploadControl.h | 2 +- .../webkit/WebCore/rendering/RenderFlexibleBox.cpp | 248 +- .../webkit/WebCore/rendering/RenderFlexibleBox.h | 4 +- .../webkit/WebCore/rendering/RenderFlow.cpp | 883 - src/3rdparty/webkit/WebCore/rendering/RenderFlow.h | 146 - .../WebCore/rendering/RenderForeignObject.cpp | 95 +- .../webkit/WebCore/rendering/RenderForeignObject.h | 19 +- .../webkit/WebCore/rendering/RenderFrame.cpp | 39 +- .../webkit/WebCore/rendering/RenderFrame.h | 14 +- .../webkit/WebCore/rendering/RenderFrameSet.cpp | 45 +- .../webkit/WebCore/rendering/RenderFrameSet.h | 12 +- .../webkit/WebCore/rendering/RenderHTMLCanvas.cpp | 16 +- .../webkit/WebCore/rendering/RenderImage.cpp | 91 +- .../webkit/WebCore/rendering/RenderImage.h | 16 + .../rendering/RenderImageGeneratedContent.h | 14 +- .../webkit/WebCore/rendering/RenderInline.cpp | 876 +- .../webkit/WebCore/rendering/RenderInline.h | 129 +- .../webkit/WebCore/rendering/RenderLayer.cpp | 1481 +- .../webkit/WebCore/rendering/RenderLayer.h | 220 +- .../WebCore/rendering/RenderLayerBacking.cpp | 1023 + .../webkit/WebCore/rendering/RenderLayerBacking.h | 172 + .../WebCore/rendering/RenderLayerCompositor.cpp | 827 + .../WebCore/rendering/RenderLayerCompositor.h | 145 + .../webkit/WebCore/rendering/RenderLegend.cpp | 36 - .../webkit/WebCore/rendering/RenderLegend.h | 42 - .../webkit/WebCore/rendering/RenderLineBoxList.cpp | 333 + .../webkit/WebCore/rendering/RenderLineBoxList.h | 86 + .../webkit/WebCore/rendering/RenderListBox.cpp | 121 +- .../webkit/WebCore/rendering/RenderListBox.h | 9 +- .../webkit/WebCore/rendering/RenderListItem.cpp | 32 +- .../webkit/WebCore/rendering/RenderListItem.h | 2 +- .../webkit/WebCore/rendering/RenderListMarker.cpp | 67 +- .../webkit/WebCore/rendering/RenderListMarker.h | 10 +- .../webkit/WebCore/rendering/RenderMarquee.cpp | 29 +- .../webkit/WebCore/rendering/RenderMarquee.h | 3 +- .../webkit/WebCore/rendering/RenderMedia.cpp | 180 +- .../webkit/WebCore/rendering/RenderMedia.h | 27 +- .../WebCore/rendering/RenderMediaControls.cpp | 152 + .../webkit/WebCore/rendering/RenderMediaControls.h | 43 + .../webkit/WebCore/rendering/RenderMenuList.cpp | 138 +- .../webkit/WebCore/rendering/RenderMenuList.h | 15 +- .../webkit/WebCore/rendering/RenderObject.cpp | 2466 +- .../webkit/WebCore/rendering/RenderObject.h | 775 +- .../WebCore/rendering/RenderObjectChildList.cpp | 426 + .../WebCore/rendering/RenderObjectChildList.h | 67 + .../webkit/WebCore/rendering/RenderPart.cpp | 86 +- src/3rdparty/webkit/WebCore/rendering/RenderPart.h | 24 +- .../webkit/WebCore/rendering/RenderPartObject.cpp | 158 +- .../webkit/WebCore/rendering/RenderPartObject.h | 10 +- .../webkit/WebCore/rendering/RenderPath.cpp | 186 +- src/3rdparty/webkit/WebCore/rendering/RenderPath.h | 46 +- .../webkit/WebCore/rendering/RenderReplaced.cpp | 140 +- .../webkit/WebCore/rendering/RenderReplaced.h | 16 +- .../webkit/WebCore/rendering/RenderReplica.cpp | 22 +- .../webkit/WebCore/rendering/RenderReplica.h | 2 +- .../webkit/WebCore/rendering/RenderSVGBlock.h | 3 +- .../WebCore/rendering/RenderSVGContainer.cpp | 356 +- .../webkit/WebCore/rendering/RenderSVGContainer.h | 78 +- .../WebCore/rendering/RenderSVGGradientStop.cpp | 4 +- .../WebCore/rendering/RenderSVGGradientStop.h | 16 +- .../WebCore/rendering/RenderSVGHiddenContainer.cpp | 36 +- .../WebCore/rendering/RenderSVGHiddenContainer.h | 29 +- .../webkit/WebCore/rendering/RenderSVGImage.cpp | 103 +- .../webkit/WebCore/rendering/RenderSVGImage.h | 38 +- .../webkit/WebCore/rendering/RenderSVGInline.cpp | 57 +- .../webkit/WebCore/rendering/RenderSVGInline.h | 18 +- .../WebCore/rendering/RenderSVGInlineText.cpp | 92 +- .../webkit/WebCore/rendering/RenderSVGInlineText.h | 17 +- .../WebCore/rendering/RenderSVGModelObject.cpp | 97 + .../WebCore/rendering/RenderSVGModelObject.h | 71 + .../webkit/WebCore/rendering/RenderSVGRoot.cpp | 305 +- .../webkit/WebCore/rendering/RenderSVGRoot.h | 53 +- .../webkit/WebCore/rendering/RenderSVGTSpan.cpp | 44 - .../webkit/WebCore/rendering/RenderSVGTSpan.h | 11 +- .../webkit/WebCore/rendering/RenderSVGText.cpp | 145 +- .../webkit/WebCore/rendering/RenderSVGText.h | 37 +- .../webkit/WebCore/rendering/RenderSVGTextPath.cpp | 51 +- .../webkit/WebCore/rendering/RenderSVGTextPath.h | 2 - .../rendering/RenderSVGTransformableContainer.cpp | 21 +- .../rendering/RenderSVGTransformableContainer.h | 15 +- .../rendering/RenderSVGViewportContainer.cpp | 126 +- .../WebCore/rendering/RenderSVGViewportContainer.h | 23 +- .../webkit/WebCore/rendering/RenderScrollbar.cpp | 20 +- .../webkit/WebCore/rendering/RenderScrollbar.h | 15 +- .../WebCore/rendering/RenderScrollbarPart.cpp | 38 +- .../webkit/WebCore/rendering/RenderScrollbarPart.h | 5 +- .../webkit/WebCore/rendering/RenderSelectionInfo.h | 104 + .../webkit/WebCore/rendering/RenderSlider.cpp | 395 +- .../webkit/WebCore/rendering/RenderSlider.h | 39 +- .../webkit/WebCore/rendering/RenderTable.cpp | 233 +- .../webkit/WebCore/rendering/RenderTable.h | 39 +- .../webkit/WebCore/rendering/RenderTableCell.cpp | 174 +- .../webkit/WebCore/rendering/RenderTableCell.h | 43 +- .../webkit/WebCore/rendering/RenderTableCol.cpp | 13 +- .../webkit/WebCore/rendering/RenderTableCol.h | 14 +- .../webkit/WebCore/rendering/RenderTableRow.cpp | 44 +- .../webkit/WebCore/rendering/RenderTableRow.h | 17 +- .../WebCore/rendering/RenderTableSection.cpp | 263 +- .../webkit/WebCore/rendering/RenderTableSection.h | 34 +- .../webkit/WebCore/rendering/RenderText.cpp | 428 +- src/3rdparty/webkit/WebCore/rendering/RenderText.h | 74 +- .../webkit/WebCore/rendering/RenderTextControl.cpp | 175 +- .../webkit/WebCore/rendering/RenderTextControl.h | 42 +- .../rendering/RenderTextControlMultiLine.cpp | 49 +- .../WebCore/rendering/RenderTextControlMultiLine.h | 1 - .../rendering/RenderTextControlSingleLine.cpp | 268 +- .../rendering/RenderTextControlSingleLine.h | 23 +- .../WebCore/rendering/RenderTextFragment.cpp | 4 +- .../webkit/WebCore/rendering/RenderTheme.cpp | 172 +- .../webkit/WebCore/rendering/RenderTheme.h | 66 +- .../WebCore/rendering/RenderThemeChromiumLinux.cpp | 607 + .../WebCore/rendering/RenderThemeChromiumLinux.h | 138 + .../WebCore/rendering/RenderThemeChromiumMac.h | 215 + .../WebCore/rendering/RenderThemeChromiumMac.mm | 1997 + .../WebCore/rendering/RenderThemeChromiumSkia.cpp | 2 + .../WebCore/rendering/RenderThemeChromiumSkia.h | 2 + .../WebCore/rendering/RenderThemeChromiumWin.cpp | 930 + .../WebCore/rendering/RenderThemeChromiumWin.h | 158 + .../webkit/WebCore/rendering/RenderThemeMac.h | 18 +- .../webkit/WebCore/rendering/RenderThemeSafari.cpp | 109 +- .../webkit/WebCore/rendering/RenderThemeWin.cpp | 298 +- .../webkit/WebCore/rendering/RenderThemeWin.h | 21 +- .../webkit/WebCore/rendering/RenderTreeAsText.cpp | 124 +- .../webkit/WebCore/rendering/RenderVideo.cpp | 24 +- .../webkit/WebCore/rendering/RenderView.cpp | 281 +- src/3rdparty/webkit/WebCore/rendering/RenderView.h | 151 +- .../webkit/WebCore/rendering/RenderWidget.cpp | 146 +- .../webkit/WebCore/rendering/RenderWidget.h | 48 +- .../webkit/WebCore/rendering/RootInlineBox.cpp | 120 +- .../webkit/WebCore/rendering/RootInlineBox.h | 44 +- .../WebCore/rendering/SVGCharacterLayoutInfo.cpp | 4 +- .../webkit/WebCore/rendering/SVGInlineFlowBox.cpp | 3 +- .../webkit/WebCore/rendering/SVGInlineFlowBox.h | 9 +- .../webkit/WebCore/rendering/SVGInlineTextBox.cpp | 93 +- .../webkit/WebCore/rendering/SVGInlineTextBox.h | 12 +- .../webkit/WebCore/rendering/SVGRenderSupport.cpp | 112 +- .../webkit/WebCore/rendering/SVGRenderSupport.h | 53 +- .../WebCore/rendering/SVGRenderTreeAsText.cpp | 202 +- .../webkit/WebCore/rendering/SVGRenderTreeAsText.h | 6 +- .../webkit/WebCore/rendering/SVGRootInlineBox.cpp | 128 +- .../webkit/WebCore/rendering/SVGRootInlineBox.h | 7 +- .../webkit/WebCore/rendering/ScrollBehavior.cpp | 55 + .../webkit/WebCore/rendering/ScrollBehavior.h | 78 + .../WebCore/rendering/TextControlInnerElements.cpp | 37 +- .../webkit/WebCore/rendering/TransformState.cpp | 169 + .../webkit/WebCore/rendering/TransformState.h | 133 + src/3rdparty/webkit/WebCore/rendering/bidi.cpp | 546 +- src/3rdparty/webkit/WebCore/rendering/bidi.h | 2 - .../webkit/WebCore/rendering/break_lines.cpp | 6 +- .../webkit/WebCore/rendering/style/ContentData.cpp | 58 +- .../webkit/WebCore/rendering/style/ContentData.h | 50 +- .../WebCore/rendering/style/CounterContent.h | 8 +- .../webkit/WebCore/rendering/style/RenderStyle.cpp | 324 +- .../webkit/WebCore/rendering/style/RenderStyle.h | 177 +- .../WebCore/rendering/style/RenderStyleConstants.h | 53 +- .../WebCore/rendering/style/SVGRenderStyle.cpp | 2 +- .../rendering/style/StyleGeneratedImage.cpp | 23 +- .../WebCore/rendering/style/StyleInheritedData.cpp | 2 +- .../rendering/style/StyleRareInheritedData.cpp | 2 +- .../rendering/style/StyleRareNonInheritedData.cpp | 50 +- .../rendering/style/StyleRareNonInheritedData.h | 13 +- .../WebCore/rendering/style/StyleTransformData.cpp | 4 +- .../WebCore/rendering/style/StyleTransformData.h | 1 + .../WebCore/storage/ChangeVersionWrapper.cpp | 3 + .../webkit/WebCore/storage/ChangeVersionWrapper.h | 4 + src/3rdparty/webkit/WebCore/storage/Database.cpp | 61 +- src/3rdparty/webkit/WebCore/storage/Database.h | 17 + src/3rdparty/webkit/WebCore/storage/Database.idl | 4 +- .../webkit/WebCore/storage/DatabaseAuthorizer.cpp | 42 + .../webkit/WebCore/storage/DatabaseAuthorizer.h | 8 +- .../webkit/WebCore/storage/DatabaseDetails.h | 4 + .../webkit/WebCore/storage/DatabaseTask.cpp | 4 + src/3rdparty/webkit/WebCore/storage/DatabaseTask.h | 2 + .../webkit/WebCore/storage/DatabaseThread.cpp | 8 +- .../webkit/WebCore/storage/DatabaseThread.h | 9 +- .../webkit/WebCore/storage/DatabaseTracker.cpp | 3 + .../webkit/WebCore/storage/DatabaseTracker.h | 3 + .../webkit/WebCore/storage/DatabaseTrackerClient.h | 4 + .../webkit/WebCore/storage/LocalStorage.cpp | 2 +- src/3rdparty/webkit/WebCore/storage/LocalStorage.h | 2 +- .../webkit/WebCore/storage/LocalStorageArea.cpp | 100 +- .../webkit/WebCore/storage/LocalStorageArea.h | 9 +- .../webkit/WebCore/storage/LocalStorageThread.cpp | 2 +- .../webkit/WebCore/storage/OriginQuotaManager.cpp | 4 + .../webkit/WebCore/storage/OriginQuotaManager.h | 4 + .../webkit/WebCore/storage/OriginUsageRecord.cpp | 4 + .../webkit/WebCore/storage/OriginUsageRecord.h | 4 + src/3rdparty/webkit/WebCore/storage/SQLError.h | 4 + src/3rdparty/webkit/WebCore/storage/SQLError.idl | 6 +- .../webkit/WebCore/storage/SQLResultSet.cpp | 4 + src/3rdparty/webkit/WebCore/storage/SQLResultSet.h | 4 + .../webkit/WebCore/storage/SQLResultSet.idl | 8 +- .../webkit/WebCore/storage/SQLResultSetRowList.cpp | 4 + .../webkit/WebCore/storage/SQLResultSetRowList.h | 4 + .../webkit/WebCore/storage/SQLResultSetRowList.idl | 4 +- .../webkit/WebCore/storage/SQLStatement.cpp | 14 +- src/3rdparty/webkit/WebCore/storage/SQLStatement.h | 10 +- .../webkit/WebCore/storage/SQLStatementCallback.h | 6 +- .../WebCore/storage/SQLStatementCallback.idl | 35 - .../WebCore/storage/SQLStatementErrorCallback.h | 6 +- .../WebCore/storage/SQLStatementErrorCallback.idl | 35 - .../webkit/WebCore/storage/SQLTransaction.cpp | 43 +- .../webkit/WebCore/storage/SQLTransaction.h | 5 +- .../webkit/WebCore/storage/SQLTransaction.idl | 4 +- .../WebCore/storage/SQLTransactionCallback.h | 4 + .../WebCore/storage/SQLTransactionCallback.idl | 35 - .../WebCore/storage/SQLTransactionErrorCallback.h | 6 +- .../storage/SQLTransactionErrorCallback.idl | 35 - .../webkit/WebCore/storage/SessionStorageArea.cpp | 16 +- .../webkit/WebCore/storage/StorageArea.cpp | 20 +- .../webkit/WebCore/storage/StorageEvent.cpp | 11 +- src/3rdparty/webkit/WebCore/storage/StorageEvent.h | 21 +- .../webkit/WebCore/storage/StorageEvent.idl | 7 +- src/3rdparty/webkit/WebCore/svg/Filter.cpp | 39 - src/3rdparty/webkit/WebCore/svg/Filter.h | 46 - src/3rdparty/webkit/WebCore/svg/FilterBuilder.h | 51 - src/3rdparty/webkit/WebCore/svg/FilterEffect.cpp | 42 - src/3rdparty/webkit/WebCore/svg/FilterEffect.h | 48 - src/3rdparty/webkit/WebCore/svg/SVGAElement.cpp | 9 +- src/3rdparty/webkit/WebCore/svg/SVGAllInOne.cpp | 152 + .../webkit/WebCore/svg/SVGAnimateMotionElement.cpp | 6 +- .../WebCore/svg/SVGAnimateTransformElement.cpp | 5 +- .../webkit/WebCore/svg/SVGAnimatedProperty.h | 2 +- .../webkit/WebCore/svg/SVGAnimationElement.cpp | 4 +- .../webkit/WebCore/svg/SVGCircleElement.cpp | 1 + .../webkit/WebCore/svg/SVGClipPathElement.cpp | 1 + .../svg/SVGComponentTransferFunctionElement.cpp | 3 +- .../svg/SVGComponentTransferFunctionElement.h | 4 +- .../svg/SVGComponentTransferFunctionElement.idl | 2 +- .../webkit/WebCore/svg/SVGCursorElement.cpp | 5 +- src/3rdparty/webkit/WebCore/svg/SVGElement.cpp | 26 +- .../webkit/WebCore/svg/SVGElementInstance.cpp | 164 +- .../webkit/WebCore/svg/SVGElementInstance.h | 3 +- .../webkit/WebCore/svg/SVGElementInstance.idl | 86 +- .../webkit/WebCore/svg/SVGEllipseElement.cpp | 1 + src/3rdparty/webkit/WebCore/svg/SVGException.idl | 2 +- .../WebCore/svg/SVGExternalResourcesRequired.cpp | 3 +- .../webkit/WebCore/svg/SVGFEBlendElement.cpp | 19 +- .../webkit/WebCore/svg/SVGFEBlendElement.h | 7 +- .../webkit/WebCore/svg/SVGFEBlendElement.idl | 2 +- .../webkit/WebCore/svg/SVGFEColorMatrixElement.cpp | 17 +- .../webkit/WebCore/svg/SVGFEColorMatrixElement.h | 7 +- .../webkit/WebCore/svg/SVGFEColorMatrixElement.idl | 2 +- .../WebCore/svg/SVGFEComponentTransferElement.cpp | 25 +- .../WebCore/svg/SVGFEComponentTransferElement.h | 7 +- .../WebCore/svg/SVGFEComponentTransferElement.idl | 2 +- .../webkit/WebCore/svg/SVGFECompositeElement.cpp | 20 +- .../webkit/WebCore/svg/SVGFECompositeElement.h | 7 +- .../webkit/WebCore/svg/SVGFECompositeElement.idl | 2 +- .../WebCore/svg/SVGFEDiffuseLightingElement.cpp | 20 +- .../WebCore/svg/SVGFEDiffuseLightingElement.h | 7 +- .../WebCore/svg/SVGFEDiffuseLightingElement.idl | 2 +- .../WebCore/svg/SVGFEDisplacementMapElement.cpp | 23 +- .../WebCore/svg/SVGFEDisplacementMapElement.h | 7 +- .../WebCore/svg/SVGFEDisplacementMapElement.idl | 2 +- .../WebCore/svg/SVGFEDistantLightElement.cpp | 2 +- .../webkit/WebCore/svg/SVGFEDistantLightElement.h | 2 +- .../WebCore/svg/SVGFEDistantLightElement.idl | 2 +- .../webkit/WebCore/svg/SVGFEFloodElement.cpp | 28 +- .../webkit/WebCore/svg/SVGFEFloodElement.h | 9 +- .../webkit/WebCore/svg/SVGFEFloodElement.idl | 6 +- .../webkit/WebCore/svg/SVGFEFuncAElement.cpp | 2 +- .../webkit/WebCore/svg/SVGFEFuncAElement.h | 2 +- .../webkit/WebCore/svg/SVGFEFuncAElement.idl | 2 +- .../webkit/WebCore/svg/SVGFEFuncBElement.cpp | 2 +- .../webkit/WebCore/svg/SVGFEFuncBElement.h | 2 +- .../webkit/WebCore/svg/SVGFEFuncBElement.idl | 2 +- .../webkit/WebCore/svg/SVGFEFuncGElement.cpp | 2 +- .../webkit/WebCore/svg/SVGFEFuncGElement.h | 2 +- .../webkit/WebCore/svg/SVGFEFuncGElement.idl | 2 +- .../webkit/WebCore/svg/SVGFEFuncRElement.cpp | 2 +- .../webkit/WebCore/svg/SVGFEFuncRElement.h | 2 +- .../webkit/WebCore/svg/SVGFEFuncRElement.idl | 2 +- .../WebCore/svg/SVGFEGaussianBlurElement.cpp | 20 +- .../webkit/WebCore/svg/SVGFEGaussianBlurElement.h | 7 +- .../WebCore/svg/SVGFEGaussianBlurElement.idl | 2 +- .../webkit/WebCore/svg/SVGFEImageElement.cpp | 20 +- .../webkit/WebCore/svg/SVGFEImageElement.h | 6 +- .../webkit/WebCore/svg/SVGFEImageElement.idl | 2 +- .../webkit/WebCore/svg/SVGFELightElement.cpp | 4 +- .../webkit/WebCore/svg/SVGFELightElement.h | 4 +- .../webkit/WebCore/svg/SVGFEMergeElement.cpp | 16 +- .../webkit/WebCore/svg/SVGFEMergeElement.h | 8 +- .../webkit/WebCore/svg/SVGFEMergeElement.idl | 2 +- .../webkit/WebCore/svg/SVGFEMergeNodeElement.cpp | 4 +- .../webkit/WebCore/svg/SVGFEMergeNodeElement.h | 2 +- .../webkit/WebCore/svg/SVGFEMergeNodeElement.idl | 2 +- .../webkit/WebCore/svg/SVGFEOffsetElement.cpp | 17 +- .../webkit/WebCore/svg/SVGFEOffsetElement.h | 7 +- .../webkit/WebCore/svg/SVGFEOffsetElement.idl | 2 +- .../webkit/WebCore/svg/SVGFEPointLightElement.cpp | 2 +- .../webkit/WebCore/svg/SVGFEPointLightElement.h | 2 +- .../webkit/WebCore/svg/SVGFEPointLightElement.idl | 2 +- .../WebCore/svg/SVGFESpecularLightingElement.cpp | 20 +- .../WebCore/svg/SVGFESpecularLightingElement.h | 7 +- .../WebCore/svg/SVGFESpecularLightingElement.idl | 2 +- .../webkit/WebCore/svg/SVGFESpotLightElement.cpp | 2 +- .../webkit/WebCore/svg/SVGFESpotLightElement.h | 2 +- .../webkit/WebCore/svg/SVGFESpotLightElement.idl | 2 +- .../webkit/WebCore/svg/SVGFETileElement.cpp | 17 +- src/3rdparty/webkit/WebCore/svg/SVGFETileElement.h | 7 +- .../webkit/WebCore/svg/SVGFETileElement.idl | 2 +- .../webkit/WebCore/svg/SVGFETurbulenceElement.cpp | 16 +- .../webkit/WebCore/svg/SVGFETurbulenceElement.h | 7 +- .../webkit/WebCore/svg/SVGFETurbulenceElement.idl | 2 +- .../webkit/WebCore/svg/SVGFilterElement.cpp | 26 +- src/3rdparty/webkit/WebCore/svg/SVGFilterElement.h | 2 +- .../webkit/WebCore/svg/SVGFilterElement.idl | 2 +- .../svg/SVGFilterPrimitiveStandardAttributes.cpp | 13 +- .../svg/SVGFilterPrimitiveStandardAttributes.h | 11 +- .../webkit/WebCore/svg/SVGFitToViewBox.cpp | 3 +- src/3rdparty/webkit/WebCore/svg/SVGFont.cpp | 23 +- .../webkit/WebCore/svg/SVGFontFaceElement.cpp | 3 +- .../webkit/WebCore/svg/SVGFontFaceUriElement.cpp | 42 + .../webkit/WebCore/svg/SVGFontFaceUriElement.h | 17 +- .../webkit/WebCore/svg/SVGForeignObjectElement.cpp | 6 +- .../webkit/WebCore/svg/SVGGlyphElement.cpp | 3 +- src/3rdparty/webkit/WebCore/svg/SVGGlyphElement.h | 2 +- .../webkit/WebCore/svg/SVGGradientElement.cpp | 1 + src/3rdparty/webkit/WebCore/svg/SVGHKernElement.h | 2 +- .../webkit/WebCore/svg/SVGImageElement.cpp | 1 + src/3rdparty/webkit/WebCore/svg/SVGImageLoader.cpp | 16 +- src/3rdparty/webkit/WebCore/svg/SVGLangSpace.cpp | 1 + src/3rdparty/webkit/WebCore/svg/SVGLength.cpp | 9 +- src/3rdparty/webkit/WebCore/svg/SVGLineElement.cpp | 1 + .../WebCore/svg/SVGLinearGradientElement.cpp | 3 +- src/3rdparty/webkit/WebCore/svg/SVGList.h | 6 +- src/3rdparty/webkit/WebCore/svg/SVGLocatable.cpp | 70 +- .../webkit/WebCore/svg/SVGMarkerElement.cpp | 1 + src/3rdparty/webkit/WebCore/svg/SVGMaskElement.cpp | 13 +- src/3rdparty/webkit/WebCore/svg/SVGMaskElement.h | 3 +- src/3rdparty/webkit/WebCore/svg/SVGMatrix.idl | 18 +- .../webkit/WebCore/svg/SVGParserUtilities.cpp | 111 +- src/3rdparty/webkit/WebCore/svg/SVGPathElement.cpp | 1 + src/3rdparty/webkit/WebCore/svg/SVGPathSeg.idl | 4 +- .../WebCore/svg/SVGPathSegCurvetoCubicSmooth.h | 2 +- src/3rdparty/webkit/WebCore/svg/SVGPathSegList.idl | 14 +- .../webkit/WebCore/svg/SVGPatternElement.cpp | 20 +- src/3rdparty/webkit/WebCore/svg/SVGPointList.idl | 14 +- src/3rdparty/webkit/WebCore/svg/SVGPolyElement.cpp | 1 + .../webkit/WebCore/svg/SVGPreserveAspectRatio.cpp | 6 +- .../WebCore/svg/SVGRadialGradientElement.cpp | 3 +- src/3rdparty/webkit/WebCore/svg/SVGRectElement.cpp | 1 + src/3rdparty/webkit/WebCore/svg/SVGSVGElement.cpp | 57 +- .../webkit/WebCore/svg/SVGScriptElement.cpp | 8 +- src/3rdparty/webkit/WebCore/svg/SVGScriptElement.h | 3 + src/3rdparty/webkit/WebCore/svg/SVGStopElement.cpp | 3 +- .../webkit/WebCore/svg/SVGStyleElement.cpp | 2 + .../webkit/WebCore/svg/SVGStyledElement.cpp | 11 +- .../WebCore/svg/SVGStyledTransformableElement.cpp | 8 +- src/3rdparty/webkit/WebCore/svg/SVGTests.cpp | 1 + .../webkit/WebCore/svg/SVGTextContentElement.cpp | 51 +- .../webkit/WebCore/svg/SVGTextContentElement.h | 16 +- .../webkit/WebCore/svg/SVGTextContentElement.idl | 16 +- src/3rdparty/webkit/WebCore/svg/SVGTextElement.cpp | 3 +- .../webkit/WebCore/svg/SVGTextPathElement.cpp | 4 +- .../WebCore/svg/SVGTextPositioningElement.cpp | 1 + src/3rdparty/webkit/WebCore/svg/SVGTransform.cpp | 12 +- .../webkit/WebCore/svg/SVGTransformDistance.cpp | 4 +- .../webkit/WebCore/svg/SVGTransformList.idl | 14 +- .../webkit/WebCore/svg/SVGTransformable.cpp | 3 +- .../webkit/WebCore/svg/SVGURIReference.cpp | 2 + src/3rdparty/webkit/WebCore/svg/SVGUseElement.cpp | 40 +- src/3rdparty/webkit/WebCore/svg/SVGViewElement.cpp | 1 + src/3rdparty/webkit/WebCore/svg/SVGViewSpec.idl | 2 +- .../webkit/WebCore/svg/animation/SMILTime.h | 2 - .../WebCore/svg/animation/SMILTimeContainer.cpp | 4 +- .../WebCore/svg/animation/SVGSMILElement.cpp | 4 +- .../webkit/WebCore/svg/graphics/SVGImage.cpp | 117 +- .../webkit/WebCore/svg/graphics/SVGImage.h | 14 +- .../webkit/WebCore/svg/graphics/SVGPaintServer.cpp | 47 +- .../webkit/WebCore/svg/graphics/SVGPaintServer.h | 6 - .../svg/graphics/SVGPaintServerGradient.cpp | 101 +- .../WebCore/svg/graphics/SVGPaintServerGradient.h | 5 - .../WebCore/svg/graphics/SVGPaintServerPattern.cpp | 100 +- .../WebCore/svg/graphics/SVGPaintServerPattern.h | 11 +- .../WebCore/svg/graphics/SVGPaintServerSolid.cpp | 11 - .../WebCore/svg/graphics/SVGPaintServerSolid.h | 1 - .../WebCore/svg/graphics/SVGResourceClipper.cpp | 2 +- .../WebCore/svg/graphics/SVGResourceFilter.cpp | 98 +- .../WebCore/svg/graphics/SVGResourceFilter.h | 51 +- .../WebCore/svg/graphics/SVGResourceMarker.cpp | 6 +- .../WebCore/svg/graphics/SVGResourceMasker.cpp | 47 + .../svg/graphics/filters/SVGDistantLightSource.h | 4 +- .../svg/graphics/filters/SVGFEConvolveMatrix.cpp | 7 +- .../svg/graphics/filters/SVGFEConvolveMatrix.h | 10 +- .../svg/graphics/filters/SVGFEDiffuseLighting.cpp | 7 +- .../svg/graphics/filters/SVGFEDiffuseLighting.h | 9 +- .../svg/graphics/filters/SVGFEDisplacementMap.cpp | 7 +- .../svg/graphics/filters/SVGFEDisplacementMap.h | 9 +- .../WebCore/svg/graphics/filters/SVGFEFlood.cpp | 14 +- .../WebCore/svg/graphics/filters/SVGFEFlood.h | 14 +- .../svg/graphics/filters/SVGFEGaussianBlur.cpp | 7 +- .../svg/graphics/filters/SVGFEGaussianBlur.h | 9 +- .../WebCore/svg/graphics/filters/SVGFEImage.cpp | 7 +- .../WebCore/svg/graphics/filters/SVGFEImage.h | 9 +- .../WebCore/svg/graphics/filters/SVGFEMerge.cpp | 7 +- .../WebCore/svg/graphics/filters/SVGFEMerge.h | 10 +- .../svg/graphics/filters/SVGFEMorphology.cpp | 7 +- .../WebCore/svg/graphics/filters/SVGFEMorphology.h | 9 +- .../WebCore/svg/graphics/filters/SVGFEOffset.cpp | 7 +- .../WebCore/svg/graphics/filters/SVGFEOffset.h | 9 +- .../svg/graphics/filters/SVGFESpecularLighting.cpp | 7 +- .../svg/graphics/filters/SVGFESpecularLighting.h | 11 +- .../WebCore/svg/graphics/filters/SVGFETile.cpp | 7 +- .../WebCore/svg/graphics/filters/SVGFETile.h | 9 +- .../svg/graphics/filters/SVGFETurbulence.cpp | 7 +- .../WebCore/svg/graphics/filters/SVGFETurbulence.h | 9 +- .../WebCore/svg/graphics/filters/SVGFilter.cpp | 47 + .../WebCore/svg/graphics/filters/SVGFilter.h | 53 + .../svg/graphics/filters/SVGFilterBuilder.cpp | 79 + .../svg/graphics/filters/SVGFilterBuilder.h | 56 + .../svg/graphics/filters/SVGFilterEffect.cpp | 133 - .../WebCore/svg/graphics/filters/SVGFilterEffect.h | 99 - .../svg/graphics/filters/SVGLightSource.cpp | 4 +- .../WebCore/svg/graphics/filters/SVGLightSource.h | 4 +- .../svg/graphics/filters/SVGPointLightSource.h | 4 +- .../svg/graphics/filters/SVGSpotLightSource.h | 4 +- .../WebCore/svg/graphics/qt/RenderPathQt.cpp | 47 - .../svg/graphics/qt/SVGPaintServerPatternQt.cpp | 90 - .../WebCore/svg/graphics/qt/SVGPaintServerQt.cpp | 72 - .../svg/graphics/qt/SVGResourceFilterQt.cpp | 50 - .../svg/graphics/qt/SVGResourceMaskerQt.cpp | 38 - src/3rdparty/webkit/WebCore/svg/svgattrs.in | 4 +- src/3rdparty/webkit/WebCore/svg/svgtags.in | 8 +- src/3rdparty/webkit/WebCore/svg/xlinkattrs.in | 2 +- src/3rdparty/webkit/WebCore/wml/WMLAElement.cpp | 19 +- .../webkit/WebCore/wml/WMLAccessElement.cpp | 1 + .../webkit/WebCore/wml/WMLAttributeNames.in | 2 +- src/3rdparty/webkit/WebCore/wml/WMLBRElement.cpp | 1 + src/3rdparty/webkit/WebCore/wml/WMLCardElement.cpp | 25 +- src/3rdparty/webkit/WebCore/wml/WMLCardElement.h | 4 +- src/3rdparty/webkit/WebCore/wml/WMLDoElement.cpp | 10 +- src/3rdparty/webkit/WebCore/wml/WMLDocument.cpp | 8 +- src/3rdparty/webkit/WebCore/wml/WMLDocument.h | 2 + src/3rdparty/webkit/WebCore/wml/WMLElement.cpp | 1 + src/3rdparty/webkit/WebCore/wml/WMLElement.h | 3 +- .../webkit/WebCore/wml/WMLEventHandlingElement.cpp | 27 +- .../webkit/WebCore/wml/WMLEventHandlingElement.h | 16 +- .../webkit/WebCore/wml/WMLFieldSetElement.cpp | 1 + .../webkit/WebCore/wml/WMLFormControlElement.cpp | 80 + .../webkit/WebCore/wml/WMLFormControlElement.h | 53 + src/3rdparty/webkit/WebCore/wml/WMLGoElement.cpp | 5 +- .../webkit/WebCore/wml/WMLImageElement.cpp | 5 +- src/3rdparty/webkit/WebCore/wml/WMLImageLoader.cpp | 4 - .../webkit/WebCore/wml/WMLInputElement.cpp | 507 + src/3rdparty/webkit/WebCore/wml/WMLInputElement.h | 110 + .../WebCore/wml/WMLInsertedLegendElement.cpp | 7 - .../webkit/WebCore/wml/WMLInsertedLegendElement.h | 2 - src/3rdparty/webkit/WebCore/wml/WMLMetaElement.cpp | 1 + src/3rdparty/webkit/WebCore/wml/WMLNoopElement.cpp | 2 +- .../webkit/WebCore/wml/WMLOnEventElement.cpp | 8 +- .../webkit/WebCore/wml/WMLOptGroupElement.cpp | 175 + .../webkit/WebCore/wml/WMLOptGroupElement.h | 69 + .../webkit/WebCore/wml/WMLOptionElement.cpp | 163 + src/3rdparty/webkit/WebCore/wml/WMLOptionElement.h | 69 + src/3rdparty/webkit/WebCore/wml/WMLPElement.cpp | 1 + .../webkit/WebCore/wml/WMLPostfieldElement.cpp | 1 + .../webkit/WebCore/wml/WMLSelectElement.cpp | 224 + src/3rdparty/webkit/WebCore/wml/WMLSelectElement.h | 94 + .../webkit/WebCore/wml/WMLSetvarElement.cpp | 1 + .../webkit/WebCore/wml/WMLTableElement.cpp | 3 +- src/3rdparty/webkit/WebCore/wml/WMLTagNames.in | 11 +- .../webkit/WebCore/wml/WMLTemplateElement.cpp | 7 +- .../webkit/WebCore/wml/WMLTemplateElement.h | 5 +- .../webkit/WebCore/wml/WMLTimerElement.cpp | 1 + .../webkit/WebCore/workers/GenericWorkerTask.h | 415 + src/3rdparty/webkit/WebCore/workers/Worker.cpp | 212 + src/3rdparty/webkit/WebCore/workers/Worker.h | 111 + src/3rdparty/webkit/WebCore/workers/Worker.idl | 48 + .../webkit/WebCore/workers/WorkerContext.cpp | 300 + .../webkit/WebCore/workers/WorkerContext.h | 154 + .../webkit/WebCore/workers/WorkerContext.idl | 86 + .../webkit/WebCore/workers/WorkerContextProxy.h | 64 + .../WebCore/workers/WorkerImportScriptsClient.cpp | 96 + .../WebCore/workers/WorkerImportScriptsClient.h | 77 + .../webkit/WebCore/workers/WorkerLocation.cpp | 85 + .../webkit/WebCore/workers/WorkerLocation.h | 73 + .../webkit/WebCore/workers/WorkerLocation.idl | 48 + .../WebCore/workers/WorkerMessagingProxy.cpp | 344 + .../webkit/WebCore/workers/WorkerMessagingProxy.h | 104 + .../webkit/WebCore/workers/WorkerObjectProxy.h | 64 + .../webkit/WebCore/workers/WorkerRunLoop.cpp | 210 + .../webkit/WebCore/workers/WorkerRunLoop.h | 82 + .../webkit/WebCore/workers/WorkerThread.cpp | 153 + src/3rdparty/webkit/WebCore/workers/WorkerThread.h | 78 + src/3rdparty/webkit/WebCore/xml/XMLHttpRequest.cpp | 539 +- src/3rdparty/webkit/WebCore/xml/XMLHttpRequest.h | 54 +- src/3rdparty/webkit/WebCore/xml/XMLHttpRequest.idl | 5 +- .../webkit/WebCore/xml/XMLHttpRequestException.idl | 5 +- .../WebCore/xml/XMLHttpRequestProgressEvent.idl | 3 +- .../webkit/WebCore/xml/XMLHttpRequestUpload.cpp | 6 +- .../webkit/WebCore/xml/XMLHttpRequestUpload.h | 2 + .../webkit/WebCore/xml/XMLHttpRequestUpload.idl | 3 +- src/3rdparty/webkit/WebCore/xml/XPathException.idl | 2 +- .../webkit/WebCore/xml/XPathExpression.cpp | 21 +- .../webkit/WebCore/xml/XPathExpressionNode.cpp | 4 +- .../webkit/WebCore/xml/XPathExpressionNode.h | 32 +- src/3rdparty/webkit/WebCore/xml/XPathFunctions.cpp | 131 +- src/3rdparty/webkit/WebCore/xml/XPathFunctions.h | 12 +- src/3rdparty/webkit/WebCore/xml/XPathGrammar.y | 4 +- src/3rdparty/webkit/WebCore/xml/XPathNodeSet.cpp | 2 +- src/3rdparty/webkit/WebCore/xml/XPathNodeSet.h | 16 +- src/3rdparty/webkit/WebCore/xml/XPathPath.cpp | 92 +- src/3rdparty/webkit/WebCore/xml/XPathPath.h | 14 +- src/3rdparty/webkit/WebCore/xml/XPathPredicate.cpp | 2 - src/3rdparty/webkit/WebCore/xml/XPathPredicate.h | 16 + src/3rdparty/webkit/WebCore/xml/XPathResult.cpp | 48 +- src/3rdparty/webkit/WebCore/xml/XPathResult.h | 22 +- src/3rdparty/webkit/WebCore/xml/XPathStep.cpp | 283 +- src/3rdparty/webkit/WebCore/xml/XPathStep.h | 41 +- src/3rdparty/webkit/WebCore/xml/XPathUtil.cpp | 20 +- src/3rdparty/webkit/WebCore/xml/XPathValue.cpp | 22 +- .../webkit/WebCore/xml/XPathVariableReference.h | 4 +- src/3rdparty/webkit/WebCore/xml/XSLStyleSheet.cpp | 14 +- src/3rdparty/webkit/WebCore/xml/XSLTExtensions.cpp | 1 + src/3rdparty/webkit/WebCore/xml/XSLTProcessor.cpp | 9 +- .../webkit/WebCore/xml/XSLTUnicodeSort.cpp | 54 +- src/3rdparty/webkit/WebKit.pri | 7 +- src/3rdparty/webkit/WebKit/ChangeLog | 317 + .../webkit/WebKit/StringsNotToBeLocalized.txt | 179 +- src/3rdparty/webkit/WebKit/qt/Api/headers.pri | 3 +- src/3rdparty/webkit/WebKit/qt/Api/qwebdatabase.cpp | 20 + src/3rdparty/webkit/WebKit/qt/Api/qwebelement.cpp | 1603 + src/3rdparty/webkit/WebKit/qt/Api/qwebelement.h | 153 + src/3rdparty/webkit/WebKit/qt/Api/qwebframe.cpp | 284 +- src/3rdparty/webkit/WebKit/qt/Api/qwebframe.h | 17 +- src/3rdparty/webkit/WebKit/qt/Api/qwebframe_p.h | 10 +- src/3rdparty/webkit/WebKit/qt/Api/qwebkitglobal.h | 22 +- src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp | 177 +- src/3rdparty/webkit/WebKit/qt/Api/qwebpage.h | 30 +- src/3rdparty/webkit/WebKit/qt/Api/qwebpage_p.h | 5 + .../webkit/WebKit/qt/Api/qwebsecurityorigin.cpp | 23 +- src/3rdparty/webkit/WebKit/qt/Api/qwebsettings.cpp | 96 +- src/3rdparty/webkit/WebKit/qt/Api/qwebsettings.h | 8 +- src/3rdparty/webkit/WebKit/qt/Api/qwebview.cpp | 121 +- src/3rdparty/webkit/WebKit/qt/Api/qwebview.h | 9 + src/3rdparty/webkit/WebKit/qt/ChangeLog | 1464 +- .../webkit/WebKit/qt/Plugins/ICOHandler.cpp | 1 + .../WebKit/qt/WebCoreSupport/ChromeClientQt.cpp | 25 +- .../WebKit/qt/WebCoreSupport/ChromeClientQt.h | 16 +- .../WebKit/qt/WebCoreSupport/DragClientQt.cpp | 1 + .../WebKit/qt/WebCoreSupport/EditCommandQt.cpp | 1 + .../WebKit/qt/WebCoreSupport/EditorClientQt.cpp | 15 +- .../WebKit/qt/WebCoreSupport/EditorClientQt.h | 1 + .../qt/WebCoreSupport/FrameLoaderClientQt.cpp | 59 +- .../WebKit/qt/WebCoreSupport/FrameLoaderClientQt.h | 11 +- .../WebKit/qt/WebCoreSupport/InspectorClientQt.cpp | 6 + .../WebKit/qt/WebCoreSupport/InspectorClientQt.h | 2 + src/3rdparty/webkit/WebKit/qt/docs/qtwebkit.qdoc | 3 +- .../qt/docs/webkitsnippets/webelement/main.cpp | 69 + .../docs/webkitsnippets/webelement/webelement.pro | 5 + .../WebKit/qt/tests/qwebelement/qwebelement.pro | 7 + .../WebKit/qt/tests/qwebelement/qwebelement.qrc | 6 + .../webkit/WebKit/qt/tests/qwebelement/style.css | 1 + .../webkit/WebKit/qt/tests/qwebelement/style2.css | 1 + .../qt/tests/qwebelement/tst_qwebelement.cpp | 882 + .../webkit/WebKit/qt/tests/qwebframe/qwebframe.qrc | 1 + .../webkit/WebKit/qt/tests/qwebframe/style.css | 1 + .../WebKit/qt/tests/qwebframe/tst_qwebframe.cpp | 63 +- .../qt/tests/qwebpage/frametest/frame_a.html | 2 + .../WebKit/qt/tests/qwebpage/frametest/index.html | 4 + .../webkit/WebKit/qt/tests/qwebpage/qwebpage.pro | 1 + .../WebKit/qt/tests/qwebpage/tst_qwebpage.cpp | 99 +- .../WebKit/qt/tests/qwebpage/tst_qwebpage.qrc | 7 + .../webkit/WebKit/qt/tests/qwebview/.gitignore | 1 + .../webkit/WebKit/qt/tests/qwebview/qwebview.pro | 6 + .../WebKit/qt/tests/qwebview/tst_qwebview.cpp | 165 + src/3rdparty/webkit/WebKit/qt/tests/tests.pro | 2 +- 2871 files changed, 248621 insertions(+), 104532 deletions(-) create mode 100644 src/3rdparty/webkit/JavaScriptCore/assembler/AbstractMacroAssembler.h create mode 100644 src/3rdparty/webkit/JavaScriptCore/assembler/MacroAssemblerCodeRef.h create mode 100644 src/3rdparty/webkit/JavaScriptCore/assembler/MacroAssemblerX86.h create mode 100644 src/3rdparty/webkit/JavaScriptCore/assembler/MacroAssemblerX86Common.h create mode 100644 src/3rdparty/webkit/JavaScriptCore/assembler/MacroAssemblerX86_64.h create mode 100644 src/3rdparty/webkit/JavaScriptCore/debugger/DebuggerActivation.cpp create mode 100644 src/3rdparty/webkit/JavaScriptCore/debugger/DebuggerActivation.h create mode 100644 src/3rdparty/webkit/JavaScriptCore/interpreter/CachedCall.h create mode 100644 src/3rdparty/webkit/JavaScriptCore/interpreter/CallFrameClosure.h create mode 100644 src/3rdparty/webkit/JavaScriptCore/jit/ExecutableAllocatorFixedVMPool.cpp create mode 100644 src/3rdparty/webkit/JavaScriptCore/jit/JITCode.h create mode 100644 src/3rdparty/webkit/JavaScriptCore/jit/JITOpcodes.cpp create mode 100644 src/3rdparty/webkit/JavaScriptCore/jit/JITStubCall.h create mode 100644 src/3rdparty/webkit/JavaScriptCore/jit/JITStubs.cpp create mode 100644 src/3rdparty/webkit/JavaScriptCore/jit/JITStubs.h create mode 100644 src/3rdparty/webkit/JavaScriptCore/parser/NodeConstructors.h create mode 100644 src/3rdparty/webkit/JavaScriptCore/parser/ParserArena.cpp create mode 100644 src/3rdparty/webkit/JavaScriptCore/parser/ParserArena.h delete mode 100644 src/3rdparty/webkit/JavaScriptCore/runtime/ByteArray.cpp delete mode 100644 src/3rdparty/webkit/JavaScriptCore/runtime/ByteArray.h create mode 100644 src/3rdparty/webkit/JavaScriptCore/runtime/LiteralParser.cpp create mode 100644 src/3rdparty/webkit/JavaScriptCore/runtime/LiteralParser.h create mode 100644 src/3rdparty/webkit/JavaScriptCore/runtime/NativeFunctionWrapper.h create mode 100644 src/3rdparty/webkit/JavaScriptCore/runtime/TimeoutChecker.cpp create mode 100644 src/3rdparty/webkit/JavaScriptCore/runtime/TimeoutChecker.h create mode 100644 src/3rdparty/webkit/JavaScriptCore/wtf/ByteArray.cpp create mode 100644 src/3rdparty/webkit/JavaScriptCore/wtf/ByteArray.h create mode 100644 src/3rdparty/webkit/JavaScriptCore/wtf/CONTRIBUTORS.pthreads-win32 create mode 100644 src/3rdparty/webkit/JavaScriptCore/wtf/CrossThreadRefCounted.h create mode 100644 src/3rdparty/webkit/JavaScriptCore/wtf/CurrentTime.cpp create mode 100644 src/3rdparty/webkit/JavaScriptCore/wtf/CurrentTime.h create mode 100644 src/3rdparty/webkit/JavaScriptCore/wtf/FastAllocBase.h create mode 100644 src/3rdparty/webkit/JavaScriptCore/wtf/OwnFastMallocPtr.h create mode 100644 src/3rdparty/webkit/JavaScriptCore/wtf/OwnPtrCommon.h create mode 100644 src/3rdparty/webkit/JavaScriptCore/wtf/PassOwnPtr.h create mode 100644 src/3rdparty/webkit/JavaScriptCore/wtf/PtrAndFlags.h delete mode 100644 src/3rdparty/webkit/JavaScriptCore/wtf/ThreadingGtk.cpp delete mode 100644 src/3rdparty/webkit/JavaScriptCore/wtf/ThreadingQt.cpp create mode 100644 src/3rdparty/webkit/JavaScriptCore/wtf/TypeTraits.cpp create mode 100644 src/3rdparty/webkit/JavaScriptCore/wtf/TypeTraits.h create mode 100644 src/3rdparty/webkit/JavaScriptCore/wtf/VMTags.h create mode 100644 src/3rdparty/webkit/JavaScriptCore/wtf/qt/ThreadingQt.cpp create mode 100644 src/3rdparty/webkit/JavaScriptCore/wtf/unicode/glib/UnicodeGLib.cpp create mode 100644 src/3rdparty/webkit/JavaScriptCore/wtf/unicode/glib/UnicodeGLib.h create mode 100644 src/3rdparty/webkit/JavaScriptCore/wtf/unicode/glib/UnicodeMacrosFromICU.h create mode 100644 src/3rdparty/webkit/JavaScriptCore/yarr/RegexCompiler.cpp create mode 100644 src/3rdparty/webkit/JavaScriptCore/yarr/RegexCompiler.h create mode 100644 src/3rdparty/webkit/JavaScriptCore/yarr/RegexInterpreter.cpp create mode 100644 src/3rdparty/webkit/JavaScriptCore/yarr/RegexInterpreter.h create mode 100644 src/3rdparty/webkit/JavaScriptCore/yarr/RegexJIT.cpp create mode 100644 src/3rdparty/webkit/JavaScriptCore/yarr/RegexJIT.h create mode 100644 src/3rdparty/webkit/JavaScriptCore/yarr/RegexParser.h create mode 100644 src/3rdparty/webkit/JavaScriptCore/yarr/RegexPattern.h create mode 100644 src/3rdparty/webkit/WebCore/ForwardingHeaders/debugger/DebuggerActivation.h create mode 100644 src/3rdparty/webkit/WebCore/ForwardingHeaders/jit/JITCode.h delete mode 100644 src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/ByteArray.h create mode 100644 src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/DateMath.h create mode 100644 src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/ByteArray.h create mode 100644 src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/CrossThreadRefCounted.h create mode 100644 src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/CurrentTime.h create mode 100644 src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/OwnFastMallocPtr.h create mode 100644 src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/OwnPtrCommon.h create mode 100644 src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/PassOwnPtr.h create mode 100644 src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/PtrAndFlags.h create mode 100644 src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/TypeTraits.h create mode 100644 src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/VMTags.h create mode 100644 src/3rdparty/webkit/WebCore/Resources/panIcon.png create mode 100644 src/3rdparty/webkit/WebCore/WebCore.VideoProxy.exp create mode 100644 src/3rdparty/webkit/WebCore/accessibility/AXObjectCache.cpp create mode 100644 src/3rdparty/webkit/WebCore/accessibility/AXObjectCache.h create mode 100644 src/3rdparty/webkit/WebCore/accessibility/AccessibilityARIAGrid.cpp create mode 100644 src/3rdparty/webkit/WebCore/accessibility/AccessibilityARIAGrid.h create mode 100644 src/3rdparty/webkit/WebCore/accessibility/AccessibilityARIAGridCell.cpp create mode 100644 src/3rdparty/webkit/WebCore/accessibility/AccessibilityARIAGridCell.h create mode 100644 src/3rdparty/webkit/WebCore/accessibility/AccessibilityARIAGridRow.cpp create mode 100644 src/3rdparty/webkit/WebCore/accessibility/AccessibilityARIAGridRow.h create mode 100644 src/3rdparty/webkit/WebCore/accessibility/AccessibilityImageMapLink.cpp create mode 100644 src/3rdparty/webkit/WebCore/accessibility/AccessibilityImageMapLink.h create mode 100644 src/3rdparty/webkit/WebCore/accessibility/AccessibilityList.cpp create mode 100644 src/3rdparty/webkit/WebCore/accessibility/AccessibilityList.h create mode 100644 src/3rdparty/webkit/WebCore/accessibility/AccessibilityListBox.cpp create mode 100644 src/3rdparty/webkit/WebCore/accessibility/AccessibilityListBox.h create mode 100644 src/3rdparty/webkit/WebCore/accessibility/AccessibilityListBoxOption.cpp create mode 100644 src/3rdparty/webkit/WebCore/accessibility/AccessibilityListBoxOption.h create mode 100644 src/3rdparty/webkit/WebCore/accessibility/AccessibilityObject.cpp create mode 100644 src/3rdparty/webkit/WebCore/accessibility/AccessibilityObject.h create mode 100644 src/3rdparty/webkit/WebCore/accessibility/AccessibilityRenderObject.cpp create mode 100644 src/3rdparty/webkit/WebCore/accessibility/AccessibilityRenderObject.h create mode 100644 src/3rdparty/webkit/WebCore/accessibility/AccessibilityTable.cpp create mode 100644 src/3rdparty/webkit/WebCore/accessibility/AccessibilityTable.h create mode 100644 src/3rdparty/webkit/WebCore/accessibility/AccessibilityTableCell.cpp create mode 100644 src/3rdparty/webkit/WebCore/accessibility/AccessibilityTableCell.h create mode 100644 src/3rdparty/webkit/WebCore/accessibility/AccessibilityTableColumn.cpp create mode 100644 src/3rdparty/webkit/WebCore/accessibility/AccessibilityTableColumn.h create mode 100644 src/3rdparty/webkit/WebCore/accessibility/AccessibilityTableHeaderContainer.cpp create mode 100644 src/3rdparty/webkit/WebCore/accessibility/AccessibilityTableHeaderContainer.h create mode 100644 src/3rdparty/webkit/WebCore/accessibility/AccessibilityTableRow.cpp create mode 100644 src/3rdparty/webkit/WebCore/accessibility/AccessibilityTableRow.h create mode 100644 src/3rdparty/webkit/WebCore/accessibility/qt/AccessibilityObjectQt.cpp delete mode 100644 src/3rdparty/webkit/WebCore/bindings/js/DOMTimer.cpp delete mode 100644 src/3rdparty/webkit/WebCore/bindings/js/DOMTimer.h create mode 100644 src/3rdparty/webkit/WebCore/bindings/js/JSCDATASectionCustom.cpp create mode 100644 src/3rdparty/webkit/WebCore/bindings/js/JSCoordinatesCustom.cpp delete mode 100644 src/3rdparty/webkit/WebCore/bindings/js/JSEventTargetBase.h delete mode 100644 src/3rdparty/webkit/WebCore/bindings/js/JSEventTargetNodeCustom.cpp create mode 100644 src/3rdparty/webkit/WebCore/bindings/js/JSInspectorControllerCustom.cpp create mode 100644 src/3rdparty/webkit/WebCore/bindings/js/JSLazyEventListener.cpp create mode 100644 src/3rdparty/webkit/WebCore/bindings/js/JSLazyEventListener.h create mode 100644 src/3rdparty/webkit/WebCore/bindings/js/JSWebKitCSSMatrixConstructor.cpp create mode 100644 src/3rdparty/webkit/WebCore/bindings/js/JSWebKitCSSMatrixConstructor.h create mode 100644 src/3rdparty/webkit/WebCore/bindings/js/JSWebKitPointConstructor.cpp create mode 100644 src/3rdparty/webkit/WebCore/bindings/js/JSWebKitPointConstructor.h create mode 100644 src/3rdparty/webkit/WebCore/bindings/js/ScriptCachedFrameData.cpp create mode 100644 src/3rdparty/webkit/WebCore/bindings/js/ScriptCachedFrameData.h delete mode 100644 src/3rdparty/webkit/WebCore/bindings/js/ScriptCachedPageData.cpp delete mode 100644 src/3rdparty/webkit/WebCore/bindings/js/ScriptCachedPageData.h create mode 100644 src/3rdparty/webkit/WebCore/bindings/js/ScriptEventListener.cpp create mode 100644 src/3rdparty/webkit/WebCore/bindings/js/ScriptEventListener.h create mode 100644 src/3rdparty/webkit/WebCore/bindings/js/ScriptFunctionCall.cpp create mode 100644 src/3rdparty/webkit/WebCore/bindings/js/ScriptFunctionCall.h create mode 100644 src/3rdparty/webkit/WebCore/bindings/js/ScriptObject.cpp create mode 100644 src/3rdparty/webkit/WebCore/bindings/js/ScriptObject.h create mode 100644 src/3rdparty/webkit/WebCore/bindings/js/ScriptObjectQuarantine.cpp create mode 100644 src/3rdparty/webkit/WebCore/bindings/js/ScriptObjectQuarantine.h create mode 100644 src/3rdparty/webkit/WebCore/bindings/js/ScriptState.cpp create mode 100644 src/3rdparty/webkit/WebCore/bridge/IdentifierRep.cpp create mode 100644 src/3rdparty/webkit/WebCore/bridge/IdentifierRep.h create mode 100644 src/3rdparty/webkit/WebCore/css/CSSPropertyLonghand.cpp create mode 100644 src/3rdparty/webkit/WebCore/css/CSSPropertyLonghand.h create mode 100644 src/3rdparty/webkit/WebCore/css/WebKitCSSMatrix.cpp create mode 100644 src/3rdparty/webkit/WebCore/css/WebKitCSSMatrix.h create mode 100644 src/3rdparty/webkit/WebCore/css/WebKitCSSMatrix.idl create mode 100644 src/3rdparty/webkit/WebCore/css/mediaControlsChromium.css create mode 100644 src/3rdparty/webkit/WebCore/css/mediaControlsQT.css create mode 100644 src/3rdparty/webkit/WebCore/dom/CheckedRadioButtons.cpp create mode 100644 src/3rdparty/webkit/WebCore/dom/CheckedRadioButtons.h create mode 100644 src/3rdparty/webkit/WebCore/dom/ClientRect.cpp create mode 100644 src/3rdparty/webkit/WebCore/dom/ClientRect.h create mode 100644 src/3rdparty/webkit/WebCore/dom/ClientRect.idl create mode 100644 src/3rdparty/webkit/WebCore/dom/ClientRectList.cpp create mode 100644 src/3rdparty/webkit/WebCore/dom/ClientRectList.h create mode 100644 src/3rdparty/webkit/WebCore/dom/ClientRectList.idl delete mode 100644 src/3rdparty/webkit/WebCore/dom/EventTargetNode.cpp delete mode 100644 src/3rdparty/webkit/WebCore/dom/EventTargetNode.h delete mode 100644 src/3rdparty/webkit/WebCore/dom/EventTargetNode.idl delete mode 100644 src/3rdparty/webkit/WebCore/dom/FormControlElement.h create mode 100644 src/3rdparty/webkit/WebCore/dom/InputElement.cpp create mode 100644 src/3rdparty/webkit/WebCore/dom/InputElement.h create mode 100644 src/3rdparty/webkit/WebCore/dom/MessagePortProxy.h create mode 100644 src/3rdparty/webkit/WebCore/dom/OptionElement.cpp create mode 100644 src/3rdparty/webkit/WebCore/dom/OptionElement.h create mode 100644 src/3rdparty/webkit/WebCore/dom/OptionGroupElement.cpp create mode 100644 src/3rdparty/webkit/WebCore/dom/OptionGroupElement.h create mode 100644 src/3rdparty/webkit/WebCore/dom/SelectElement.cpp create mode 100644 src/3rdparty/webkit/WebCore/dom/SelectElement.h delete mode 100644 src/3rdparty/webkit/WebCore/dom/Worker.cpp delete mode 100644 src/3rdparty/webkit/WebCore/dom/Worker.h delete mode 100644 src/3rdparty/webkit/WebCore/dom/Worker.idl delete mode 100644 src/3rdparty/webkit/WebCore/dom/WorkerContext.cpp delete mode 100644 src/3rdparty/webkit/WebCore/dom/WorkerContext.h delete mode 100644 src/3rdparty/webkit/WebCore/dom/WorkerContext.idl delete mode 100644 src/3rdparty/webkit/WebCore/dom/WorkerLocation.cpp delete mode 100644 src/3rdparty/webkit/WebCore/dom/WorkerLocation.h delete mode 100644 src/3rdparty/webkit/WebCore/dom/WorkerLocation.idl delete mode 100644 src/3rdparty/webkit/WebCore/dom/WorkerMessagingProxy.cpp delete mode 100644 src/3rdparty/webkit/WebCore/dom/WorkerMessagingProxy.h delete mode 100644 src/3rdparty/webkit/WebCore/dom/WorkerTask.cpp delete mode 100644 src/3rdparty/webkit/WebCore/dom/WorkerTask.h delete mode 100644 src/3rdparty/webkit/WebCore/dom/WorkerThread.cpp delete mode 100644 src/3rdparty/webkit/WebCore/dom/WorkerThread.h create mode 100644 src/3rdparty/webkit/WebCore/dom/XMLTokenizerScope.cpp create mode 100644 src/3rdparty/webkit/WebCore/dom/XMLTokenizerScope.h delete mode 100644 src/3rdparty/webkit/WebCore/editing/RemoveNodeAttributeCommand.cpp delete mode 100644 src/3rdparty/webkit/WebCore/editing/RemoveNodeAttributeCommand.h create mode 100644 src/3rdparty/webkit/WebCore/editing/ReplaceNodeWithSpanCommand.cpp create mode 100644 src/3rdparty/webkit/WebCore/editing/ReplaceNodeWithSpanCommand.h delete mode 100644 src/3rdparty/webkit/WebCore/editing/Selection.cpp delete mode 100644 src/3rdparty/webkit/WebCore/editing/Selection.h create mode 100644 src/3rdparty/webkit/WebCore/editing/VisibleSelection.cpp create mode 100644 src/3rdparty/webkit/WebCore/editing/VisibleSelection.h create mode 100644 src/3rdparty/webkit/WebCore/editing/android/EditorAndroid.cpp create mode 100644 src/3rdparty/webkit/WebCore/editing/chromium/EditorChromium.cpp create mode 100644 src/3rdparty/webkit/WebCore/editing/gtk/SelectionControllerGtk.cpp create mode 100644 src/3rdparty/webkit/WebCore/generated/HTMLElementFactory.cpp create mode 100644 src/3rdparty/webkit/WebCore/generated/HTMLElementFactory.h create mode 100644 src/3rdparty/webkit/WebCore/generated/JSClientRect.cpp create mode 100644 src/3rdparty/webkit/WebCore/generated/JSClientRect.h create mode 100644 src/3rdparty/webkit/WebCore/generated/JSClientRectList.cpp create mode 100644 src/3rdparty/webkit/WebCore/generated/JSClientRectList.h create mode 100644 src/3rdparty/webkit/WebCore/generated/JSCoordinates.cpp create mode 100644 src/3rdparty/webkit/WebCore/generated/JSCoordinates.h delete mode 100644 src/3rdparty/webkit/WebCore/generated/JSEventTargetNode.cpp delete mode 100644 src/3rdparty/webkit/WebCore/generated/JSEventTargetNode.h create mode 100644 src/3rdparty/webkit/WebCore/generated/JSInspectorController.cpp create mode 100644 src/3rdparty/webkit/WebCore/generated/JSInspectorController.h create mode 100644 src/3rdparty/webkit/WebCore/generated/JSWebKitCSSMatrix.cpp create mode 100644 src/3rdparty/webkit/WebCore/generated/JSWebKitCSSMatrix.h create mode 100644 src/3rdparty/webkit/WebCore/generated/JSWebKitPoint.cpp create mode 100644 src/3rdparty/webkit/WebCore/generated/JSWebKitPoint.h delete mode 100644 src/3rdparty/webkit/WebCore/generated/JSXSLTProcessor.cpp delete mode 100644 src/3rdparty/webkit/WebCore/generated/JSXSLTProcessor.h create mode 100644 src/3rdparty/webkit/WebCore/history/BackForwardListChromium.cpp create mode 100644 src/3rdparty/webkit/WebCore/history/CachedFrame.cpp create mode 100644 src/3rdparty/webkit/WebCore/history/CachedFrame.h create mode 100644 src/3rdparty/webkit/WebCore/history/CachedFramePlatformData.h delete mode 100644 src/3rdparty/webkit/WebCore/history/CachedPagePlatformData.h create mode 100644 src/3rdparty/webkit/WebCore/history/cf/HistoryPropertyList.cpp create mode 100644 src/3rdparty/webkit/WebCore/history/cf/HistoryPropertyList.h create mode 100644 src/3rdparty/webkit/WebCore/html/CanvasPixelArray.cpp create mode 100644 src/3rdparty/webkit/WebCore/html/CanvasPixelArray.h create mode 100644 src/3rdparty/webkit/WebCore/html/CanvasPixelArray.idl create mode 100644 src/3rdparty/webkit/WebCore/html/CollectionCache.cpp create mode 100644 src/3rdparty/webkit/WebCore/html/CollectionCache.h create mode 100644 src/3rdparty/webkit/WebCore/html/CollectionType.h delete mode 100644 src/3rdparty/webkit/WebCore/html/HTMLElementFactory.cpp delete mode 100644 src/3rdparty/webkit/WebCore/html/HTMLElementFactory.h create mode 100644 src/3rdparty/webkit/WebCore/html/HTMLElementsAllInOne.cpp create mode 100644 src/3rdparty/webkit/WebCore/html/HTMLNoScriptElement.cpp create mode 100644 src/3rdparty/webkit/WebCore/html/HTMLNoScriptElement.h create mode 100644 src/3rdparty/webkit/WebCore/html/HTMLParserQuirks.h create mode 100644 src/3rdparty/webkit/WebCore/inspector/ConsoleMessage.cpp create mode 100644 src/3rdparty/webkit/WebCore/inspector/ConsoleMessage.h create mode 100644 src/3rdparty/webkit/WebCore/inspector/InspectorController.idl create mode 100644 src/3rdparty/webkit/WebCore/inspector/InspectorDOMStorageResource.cpp create mode 100644 src/3rdparty/webkit/WebCore/inspector/InspectorDOMStorageResource.h create mode 100644 src/3rdparty/webkit/WebCore/inspector/InspectorDatabaseResource.cpp create mode 100644 src/3rdparty/webkit/WebCore/inspector/InspectorDatabaseResource.h create mode 100644 src/3rdparty/webkit/WebCore/inspector/InspectorFrontend.cpp create mode 100644 src/3rdparty/webkit/WebCore/inspector/InspectorFrontend.h create mode 100644 src/3rdparty/webkit/WebCore/inspector/InspectorResource.cpp create mode 100644 src/3rdparty/webkit/WebCore/inspector/InspectorResource.h create mode 100644 src/3rdparty/webkit/WebCore/inspector/JSONObject.cpp create mode 100644 src/3rdparty/webkit/WebCore/inspector/JSONObject.h create mode 100644 src/3rdparty/webkit/WebCore/inspector/front-end/BottomUpProfileDataGridTree.js create mode 100644 src/3rdparty/webkit/WebCore/inspector/front-end/DOMStorage.js create mode 100644 src/3rdparty/webkit/WebCore/inspector/front-end/DOMStorageDataGrid.js create mode 100644 src/3rdparty/webkit/WebCore/inspector/front-end/DOMStorageItemsView.js create mode 100644 src/3rdparty/webkit/WebCore/inspector/front-end/Images/domStorage.png create mode 100644 src/3rdparty/webkit/WebCore/inspector/front-end/Images/radioDot.png create mode 100644 src/3rdparty/webkit/WebCore/inspector/front-end/Images/userInputResultIcon.png create mode 100644 src/3rdparty/webkit/WebCore/inspector/front-end/ProfileDataGridTree.js create mode 100644 src/3rdparty/webkit/WebCore/inspector/front-end/TopDownProfileDataGridTree.js create mode 100644 src/3rdparty/webkit/WebCore/loader/CrossOriginAccessControl.cpp create mode 100644 src/3rdparty/webkit/WebCore/loader/CrossOriginAccessControl.h create mode 100644 src/3rdparty/webkit/WebCore/loader/CrossOriginPreflightResultCache.cpp create mode 100644 src/3rdparty/webkit/WebCore/loader/CrossOriginPreflightResultCache.h create mode 100644 src/3rdparty/webkit/WebCore/loader/DocumentThreadableLoader.cpp create mode 100644 src/3rdparty/webkit/WebCore/loader/DocumentThreadableLoader.h delete mode 100644 src/3rdparty/webkit/WebCore/loader/FrameLoaderClient.cpp create mode 100644 src/3rdparty/webkit/WebCore/loader/ThreadableLoader.cpp create mode 100644 src/3rdparty/webkit/WebCore/loader/ThreadableLoader.h create mode 100644 src/3rdparty/webkit/WebCore/loader/ThreadableLoaderClient.h create mode 100644 src/3rdparty/webkit/WebCore/loader/ThreadableLoaderClientWrapper.h create mode 100644 src/3rdparty/webkit/WebCore/loader/WorkerThreadableLoader.cpp create mode 100644 src/3rdparty/webkit/WebCore/loader/WorkerThreadableLoader.h create mode 100644 src/3rdparty/webkit/WebCore/loader/cf/ResourceLoaderCFNet.cpp delete mode 100644 src/3rdparty/webkit/WebCore/page/AXObjectCache.cpp delete mode 100644 src/3rdparty/webkit/WebCore/page/AXObjectCache.h delete mode 100644 src/3rdparty/webkit/WebCore/page/AccessibilityImageMapLink.cpp delete mode 100644 src/3rdparty/webkit/WebCore/page/AccessibilityImageMapLink.h delete mode 100644 src/3rdparty/webkit/WebCore/page/AccessibilityList.cpp delete mode 100644 src/3rdparty/webkit/WebCore/page/AccessibilityList.h delete mode 100644 src/3rdparty/webkit/WebCore/page/AccessibilityListBox.cpp delete mode 100644 src/3rdparty/webkit/WebCore/page/AccessibilityListBox.h delete mode 100644 src/3rdparty/webkit/WebCore/page/AccessibilityListBoxOption.cpp delete mode 100644 src/3rdparty/webkit/WebCore/page/AccessibilityListBoxOption.h delete mode 100644 src/3rdparty/webkit/WebCore/page/AccessibilityObject.cpp delete mode 100644 src/3rdparty/webkit/WebCore/page/AccessibilityObject.h delete mode 100644 src/3rdparty/webkit/WebCore/page/AccessibilityRenderObject.cpp delete mode 100644 src/3rdparty/webkit/WebCore/page/AccessibilityRenderObject.h delete mode 100644 src/3rdparty/webkit/WebCore/page/AccessibilityTable.cpp delete mode 100644 src/3rdparty/webkit/WebCore/page/AccessibilityTable.h delete mode 100644 src/3rdparty/webkit/WebCore/page/AccessibilityTableCell.cpp delete mode 100644 src/3rdparty/webkit/WebCore/page/AccessibilityTableCell.h delete mode 100644 src/3rdparty/webkit/WebCore/page/AccessibilityTableColumn.cpp delete mode 100644 src/3rdparty/webkit/WebCore/page/AccessibilityTableColumn.h delete mode 100644 src/3rdparty/webkit/WebCore/page/AccessibilityTableHeaderContainer.cpp delete mode 100644 src/3rdparty/webkit/WebCore/page/AccessibilityTableHeaderContainer.h delete mode 100644 src/3rdparty/webkit/WebCore/page/AccessibilityTableRow.cpp delete mode 100644 src/3rdparty/webkit/WebCore/page/AccessibilityTableRow.h create mode 100644 src/3rdparty/webkit/WebCore/page/Coordinates.cpp create mode 100644 src/3rdparty/webkit/WebCore/page/Coordinates.h create mode 100644 src/3rdparty/webkit/WebCore/page/Coordinates.idl create mode 100644 src/3rdparty/webkit/WebCore/page/DOMTimer.cpp create mode 100644 src/3rdparty/webkit/WebCore/page/DOMTimer.h delete mode 100644 src/3rdparty/webkit/WebCore/page/FramePrivate.h create mode 100644 src/3rdparty/webkit/WebCore/page/PageGroupLoadDeferrer.cpp create mode 100644 src/3rdparty/webkit/WebCore/page/PageGroupLoadDeferrer.h create mode 100644 src/3rdparty/webkit/WebCore/page/WebKitPoint.h create mode 100644 src/3rdparty/webkit/WebCore/page/WebKitPoint.idl create mode 100644 src/3rdparty/webkit/WebCore/page/android/DragControllerAndroid.cpp create mode 100644 src/3rdparty/webkit/WebCore/page/android/EventHandlerAndroid.cpp create mode 100644 src/3rdparty/webkit/WebCore/page/android/InspectorControllerAndroid.cpp create mode 100644 src/3rdparty/webkit/WebCore/page/animation/AnimationControllerPrivate.h delete mode 100644 src/3rdparty/webkit/WebCore/page/chromium/AccessibilityObjectChromium.cpp delete mode 100644 src/3rdparty/webkit/WebCore/page/chromium/AccessibilityObjectWrapper.h delete mode 100644 src/3rdparty/webkit/WebCore/page/qt/AccessibilityObjectQt.cpp delete mode 100644 src/3rdparty/webkit/WebCore/page/win/AXObjectCacheWin.cpp delete mode 100644 src/3rdparty/webkit/WebCore/page/win/AccessibilityObjectWin.cpp delete mode 100644 src/3rdparty/webkit/WebCore/page/win/AccessibilityObjectWrapperWin.h create mode 100644 src/3rdparty/webkit/WebCore/platform/ContentType.cpp create mode 100644 src/3rdparty/webkit/WebCore/platform/ContentType.h create mode 100644 src/3rdparty/webkit/WebCore/platform/CrossThreadCopier.cpp create mode 100644 src/3rdparty/webkit/WebCore/platform/CrossThreadCopier.h create mode 100644 src/3rdparty/webkit/WebCore/platform/KURLGoogle.cpp create mode 100644 src/3rdparty/webkit/WebCore/platform/KURLGooglePrivate.h create mode 100644 src/3rdparty/webkit/WebCore/platform/KeyboardCodes.h create mode 100644 src/3rdparty/webkit/WebCore/platform/RunLoopTimer.h create mode 100644 src/3rdparty/webkit/WebCore/platform/SuddenTermination.h create mode 100644 src/3rdparty/webkit/WebCore/platform/ThreadTimers.cpp create mode 100644 src/3rdparty/webkit/WebCore/platform/ThreadTimers.h create mode 100644 src/3rdparty/webkit/WebCore/platform/android/ClipboardAndroid.cpp create mode 100644 src/3rdparty/webkit/WebCore/platform/android/ClipboardAndroid.h create mode 100644 src/3rdparty/webkit/WebCore/platform/graphics/GraphicsLayer.cpp create mode 100644 src/3rdparty/webkit/WebCore/platform/graphics/GraphicsLayer.h create mode 100644 src/3rdparty/webkit/WebCore/platform/graphics/GraphicsLayerClient.h create mode 100644 src/3rdparty/webkit/WebCore/platform/graphics/MediaPlayerPrivate.h create mode 100644 src/3rdparty/webkit/WebCore/platform/graphics/filters/Filter.h create mode 100644 src/3rdparty/webkit/WebCore/platform/graphics/filters/FilterEffect.cpp create mode 100644 src/3rdparty/webkit/WebCore/platform/graphics/filters/FilterEffect.h create mode 100644 src/3rdparty/webkit/WebCore/platform/graphics/filters/SourceAlpha.cpp create mode 100644 src/3rdparty/webkit/WebCore/platform/graphics/filters/SourceAlpha.h create mode 100644 src/3rdparty/webkit/WebCore/platform/graphics/filters/SourceGraphic.cpp create mode 100644 src/3rdparty/webkit/WebCore/platform/graphics/filters/SourceGraphic.h create mode 100644 src/3rdparty/webkit/WebCore/platform/graphics/opentype/OpenTypeUtilities.cpp create mode 100644 src/3rdparty/webkit/WebCore/platform/graphics/opentype/OpenTypeUtilities.h create mode 100644 src/3rdparty/webkit/WebCore/platform/graphics/transforms/Matrix3DTransformOperation.cpp create mode 100644 src/3rdparty/webkit/WebCore/platform/graphics/transforms/Matrix3DTransformOperation.h create mode 100644 src/3rdparty/webkit/WebCore/platform/graphics/transforms/PerspectiveTransformOperation.cpp create mode 100644 src/3rdparty/webkit/WebCore/platform/graphics/transforms/PerspectiveTransformOperation.h create mode 100644 src/3rdparty/webkit/WebCore/platform/mac/GeolocationServiceMac.h create mode 100644 src/3rdparty/webkit/WebCore/platform/mac/GeolocationServiceMac.mm create mode 100644 src/3rdparty/webkit/WebCore/platform/mac/RuntimeApplicationChecks.h create mode 100644 src/3rdparty/webkit/WebCore/platform/mac/RuntimeApplicationChecks.mm create mode 100644 src/3rdparty/webkit/WebCore/platform/mac/SuddenTermination.mm delete mode 100644 src/3rdparty/webkit/WebCore/platform/mac/WebCoreTextRenderer.h delete mode 100644 src/3rdparty/webkit/WebCore/platform/mac/WebCoreTextRenderer.mm create mode 100644 src/3rdparty/webkit/WebCore/platform/network/HTTPHeaderMap.cpp delete mode 100644 src/3rdparty/webkit/WebCore/platform/network/chromium/ResourceResponse.h delete mode 100644 src/3rdparty/webkit/WebCore/platform/qt/KeyboardCodes.h delete mode 100644 src/3rdparty/webkit/WebCore/platform/qt/MenuEventProxy.h delete mode 100644 src/3rdparty/webkit/WebCore/platform/qt/SystemTimeQt.cpp delete mode 100644 src/3rdparty/webkit/WebCore/platform/text/TextDecoder.cpp delete mode 100644 src/3rdparty/webkit/WebCore/platform/text/TextDecoder.h create mode 100644 src/3rdparty/webkit/WebCore/platform/text/TextEncodingDetector.h create mode 100644 src/3rdparty/webkit/WebCore/platform/text/TextEncodingDetectorICU.cpp create mode 100644 src/3rdparty/webkit/WebCore/platform/text/TextEncodingDetectorNone.cpp create mode 100644 src/3rdparty/webkit/WebCore/plugins/PluginDataNone.cpp create mode 100644 src/3rdparty/webkit/WebCore/plugins/PluginPackageNone.cpp create mode 100644 src/3rdparty/webkit/WebCore/plugins/PluginViewNone.cpp create mode 100644 src/3rdparty/webkit/WebCore/plugins/qt/PluginContainerQt.cpp create mode 100644 src/3rdparty/webkit/WebCore/plugins/qt/PluginContainerQt.h delete mode 100644 src/3rdparty/webkit/WebCore/rendering/ListMarkerBox.cpp delete mode 100644 src/3rdparty/webkit/WebCore/rendering/ListMarkerBox.h create mode 100644 src/3rdparty/webkit/WebCore/rendering/OverlapTestRequestClient.h create mode 100644 src/3rdparty/webkit/WebCore/rendering/RenderBoxModelObject.cpp create mode 100644 src/3rdparty/webkit/WebCore/rendering/RenderBoxModelObject.h delete mode 100644 src/3rdparty/webkit/WebCore/rendering/RenderContainer.cpp delete mode 100644 src/3rdparty/webkit/WebCore/rendering/RenderContainer.h delete mode 100644 src/3rdparty/webkit/WebCore/rendering/RenderFlow.cpp delete mode 100644 src/3rdparty/webkit/WebCore/rendering/RenderFlow.h create mode 100644 src/3rdparty/webkit/WebCore/rendering/RenderLayerBacking.cpp create mode 100644 src/3rdparty/webkit/WebCore/rendering/RenderLayerBacking.h create mode 100644 src/3rdparty/webkit/WebCore/rendering/RenderLayerCompositor.cpp create mode 100644 src/3rdparty/webkit/WebCore/rendering/RenderLayerCompositor.h delete mode 100644 src/3rdparty/webkit/WebCore/rendering/RenderLegend.cpp delete mode 100644 src/3rdparty/webkit/WebCore/rendering/RenderLegend.h create mode 100644 src/3rdparty/webkit/WebCore/rendering/RenderLineBoxList.cpp create mode 100644 src/3rdparty/webkit/WebCore/rendering/RenderLineBoxList.h create mode 100644 src/3rdparty/webkit/WebCore/rendering/RenderMediaControls.cpp create mode 100644 src/3rdparty/webkit/WebCore/rendering/RenderMediaControls.h create mode 100644 src/3rdparty/webkit/WebCore/rendering/RenderObjectChildList.cpp create mode 100644 src/3rdparty/webkit/WebCore/rendering/RenderObjectChildList.h create mode 100644 src/3rdparty/webkit/WebCore/rendering/RenderSVGModelObject.cpp create mode 100644 src/3rdparty/webkit/WebCore/rendering/RenderSVGModelObject.h create mode 100644 src/3rdparty/webkit/WebCore/rendering/RenderSelectionInfo.h create mode 100644 src/3rdparty/webkit/WebCore/rendering/RenderThemeChromiumLinux.cpp create mode 100644 src/3rdparty/webkit/WebCore/rendering/RenderThemeChromiumLinux.h create mode 100644 src/3rdparty/webkit/WebCore/rendering/RenderThemeChromiumMac.h create mode 100644 src/3rdparty/webkit/WebCore/rendering/RenderThemeChromiumMac.mm create mode 100644 src/3rdparty/webkit/WebCore/rendering/RenderThemeChromiumSkia.cpp create mode 100644 src/3rdparty/webkit/WebCore/rendering/RenderThemeChromiumSkia.h create mode 100644 src/3rdparty/webkit/WebCore/rendering/RenderThemeChromiumWin.cpp create mode 100644 src/3rdparty/webkit/WebCore/rendering/RenderThemeChromiumWin.h create mode 100644 src/3rdparty/webkit/WebCore/rendering/ScrollBehavior.cpp create mode 100644 src/3rdparty/webkit/WebCore/rendering/ScrollBehavior.h create mode 100644 src/3rdparty/webkit/WebCore/rendering/TransformState.cpp create mode 100644 src/3rdparty/webkit/WebCore/rendering/TransformState.h delete mode 100644 src/3rdparty/webkit/WebCore/storage/SQLStatementCallback.idl delete mode 100644 src/3rdparty/webkit/WebCore/storage/SQLStatementErrorCallback.idl delete mode 100644 src/3rdparty/webkit/WebCore/storage/SQLTransactionCallback.idl delete mode 100644 src/3rdparty/webkit/WebCore/storage/SQLTransactionErrorCallback.idl delete mode 100644 src/3rdparty/webkit/WebCore/svg/Filter.cpp delete mode 100644 src/3rdparty/webkit/WebCore/svg/Filter.h delete mode 100644 src/3rdparty/webkit/WebCore/svg/FilterBuilder.h delete mode 100644 src/3rdparty/webkit/WebCore/svg/FilterEffect.cpp delete mode 100644 src/3rdparty/webkit/WebCore/svg/FilterEffect.h create mode 100644 src/3rdparty/webkit/WebCore/svg/SVGAllInOne.cpp create mode 100644 src/3rdparty/webkit/WebCore/svg/graphics/filters/SVGFilter.cpp create mode 100644 src/3rdparty/webkit/WebCore/svg/graphics/filters/SVGFilter.h create mode 100644 src/3rdparty/webkit/WebCore/svg/graphics/filters/SVGFilterBuilder.cpp create mode 100644 src/3rdparty/webkit/WebCore/svg/graphics/filters/SVGFilterBuilder.h delete mode 100644 src/3rdparty/webkit/WebCore/svg/graphics/filters/SVGFilterEffect.cpp delete mode 100644 src/3rdparty/webkit/WebCore/svg/graphics/filters/SVGFilterEffect.h delete mode 100644 src/3rdparty/webkit/WebCore/svg/graphics/qt/RenderPathQt.cpp delete mode 100644 src/3rdparty/webkit/WebCore/svg/graphics/qt/SVGPaintServerPatternQt.cpp delete mode 100644 src/3rdparty/webkit/WebCore/svg/graphics/qt/SVGPaintServerQt.cpp delete mode 100644 src/3rdparty/webkit/WebCore/svg/graphics/qt/SVGResourceFilterQt.cpp delete mode 100644 src/3rdparty/webkit/WebCore/svg/graphics/qt/SVGResourceMaskerQt.cpp create mode 100644 src/3rdparty/webkit/WebCore/wml/WMLFormControlElement.cpp create mode 100644 src/3rdparty/webkit/WebCore/wml/WMLFormControlElement.h create mode 100644 src/3rdparty/webkit/WebCore/wml/WMLInputElement.cpp create mode 100644 src/3rdparty/webkit/WebCore/wml/WMLInputElement.h create mode 100644 src/3rdparty/webkit/WebCore/wml/WMLOptGroupElement.cpp create mode 100644 src/3rdparty/webkit/WebCore/wml/WMLOptGroupElement.h create mode 100644 src/3rdparty/webkit/WebCore/wml/WMLOptionElement.cpp create mode 100644 src/3rdparty/webkit/WebCore/wml/WMLOptionElement.h create mode 100644 src/3rdparty/webkit/WebCore/wml/WMLSelectElement.cpp create mode 100644 src/3rdparty/webkit/WebCore/wml/WMLSelectElement.h create mode 100644 src/3rdparty/webkit/WebCore/workers/GenericWorkerTask.h create mode 100644 src/3rdparty/webkit/WebCore/workers/Worker.cpp create mode 100644 src/3rdparty/webkit/WebCore/workers/Worker.h create mode 100644 src/3rdparty/webkit/WebCore/workers/Worker.idl create mode 100644 src/3rdparty/webkit/WebCore/workers/WorkerContext.cpp create mode 100644 src/3rdparty/webkit/WebCore/workers/WorkerContext.h create mode 100644 src/3rdparty/webkit/WebCore/workers/WorkerContext.idl create mode 100644 src/3rdparty/webkit/WebCore/workers/WorkerContextProxy.h create mode 100644 src/3rdparty/webkit/WebCore/workers/WorkerImportScriptsClient.cpp create mode 100644 src/3rdparty/webkit/WebCore/workers/WorkerImportScriptsClient.h create mode 100644 src/3rdparty/webkit/WebCore/workers/WorkerLocation.cpp create mode 100644 src/3rdparty/webkit/WebCore/workers/WorkerLocation.h create mode 100644 src/3rdparty/webkit/WebCore/workers/WorkerLocation.idl create mode 100644 src/3rdparty/webkit/WebCore/workers/WorkerMessagingProxy.cpp create mode 100644 src/3rdparty/webkit/WebCore/workers/WorkerMessagingProxy.h create mode 100644 src/3rdparty/webkit/WebCore/workers/WorkerObjectProxy.h create mode 100644 src/3rdparty/webkit/WebCore/workers/WorkerRunLoop.cpp create mode 100644 src/3rdparty/webkit/WebCore/workers/WorkerRunLoop.h create mode 100644 src/3rdparty/webkit/WebCore/workers/WorkerThread.cpp create mode 100644 src/3rdparty/webkit/WebCore/workers/WorkerThread.h create mode 100644 src/3rdparty/webkit/WebKit/qt/Api/qwebelement.cpp create mode 100644 src/3rdparty/webkit/WebKit/qt/Api/qwebelement.h create mode 100644 src/3rdparty/webkit/WebKit/qt/docs/webkitsnippets/webelement/main.cpp create mode 100644 src/3rdparty/webkit/WebKit/qt/docs/webkitsnippets/webelement/webelement.pro create mode 100644 src/3rdparty/webkit/WebKit/qt/tests/qwebelement/qwebelement.pro create mode 100644 src/3rdparty/webkit/WebKit/qt/tests/qwebelement/qwebelement.qrc create mode 100644 src/3rdparty/webkit/WebKit/qt/tests/qwebelement/style.css create mode 100644 src/3rdparty/webkit/WebKit/qt/tests/qwebelement/style2.css create mode 100644 src/3rdparty/webkit/WebKit/qt/tests/qwebelement/tst_qwebelement.cpp create mode 100644 src/3rdparty/webkit/WebKit/qt/tests/qwebframe/style.css create mode 100644 src/3rdparty/webkit/WebKit/qt/tests/qwebpage/frametest/frame_a.html create mode 100644 src/3rdparty/webkit/WebKit/qt/tests/qwebpage/frametest/index.html create mode 100644 src/3rdparty/webkit/WebKit/qt/tests/qwebpage/tst_qwebpage.qrc create mode 100644 src/3rdparty/webkit/WebKit/qt/tests/qwebview/.gitignore create mode 100644 src/3rdparty/webkit/WebKit/qt/tests/qwebview/qwebview.pro create mode 100644 src/3rdparty/webkit/WebKit/qt/tests/qwebview/tst_qwebview.cpp diff --git a/src/3rdparty/webkit/ChangeLog b/src/3rdparty/webkit/ChangeLog index 76cfc80..1946d56 100644 --- a/src/3rdparty/webkit/ChangeLog +++ b/src/3rdparty/webkit/ChangeLog @@ -1,3 +1,303 @@ +2009-05-29 Gustavo Noronha Silva + + Reviewed by Jan Alonzo. + + Add a test-case for our HTTP backend, currently checking the + ref-counting of the SoupMessage. + + * GNUmakefile.am: + +2009-05-28 Dirk Schulze + + Reviewed by Nikolas Zimmermann. + + Enable the new build flag --filters for Gtk. More details in WebCore/ChangeLog. + + * configure.ac: + +2009-05-19 Xan Lopez + + Reviewed by Jan Alonzo and Gustavo Noronha. + + https://bugs.webkit.org/show_bug.cgi?id=25415 + [GTK][ATK] Please implement support for get_text_at_offset + + Add new test file for ATK. + + * GNUmakefile.am: + +2009-05-28 Gustavo Noronha Silva + + Rubber-stamped by Xan Lopez. + + Fix webkitgtk_cleanfiles to clean gtk-doc-related files in the + correct directory, so that we pass make distcheck. + + * GNUmakefile.am: + +2009-05-28 Xan Lopez + + Bump version numbers in preparation for 1.1.8 release. + + * configure.ac: + +2009-05-23 Jan Michael Alonzo + + Unreviewed build fix. Add gstreamer-video-0.10 libs to + GSTREAMER_LIBS to resolve an undefined reference to gst_video_get_size + - symbol used in MediaPlayerPrivateGstreamer. + + * configure.ac: + +2009-05-23 Jan Michael Alonzo + + Reviewed by Xan Lopez. + + [Gtk] Various autotools build refactoring and fixes + https://bugs.webkit.org/show_bug.cgi?id=25286 + + Refactor library LIBS. Move third-party libs in libwebkit instead + of libWebCore. + + * GNUmakefile.am: + +2009-05-22 Antonio Gomes + + Reviewed by Gustavo Noronha. + + Make Gtk build not bail out if gtk-doc-tools is not installed. + + Warning message shown instead. + + * autogen.sh: + +2009-05-22 Gustavo Noronha Silva + + Reviewed by Xan Lopez. + + Add big warnings about the glib unicode backend being slow and + incomplete, since it is a work in progress. + + * autotools/webkit.m4: + * configure.ac: + +2009-05-22 Dominik Röttsches + + Reviewed by Gustavo Noronha. + + https://bugs.webkit.org/show_bug.cgi?id=15914 + [GTK] Implement Unicode functionality using GLib + + Initial version of this patch by Jürg Billeter. + + Adding options for --with-unicode-backend=icu|glib + and checking for pango version >= 1.21.0 if GLib backend + is selected. Temporarily, until remaining parts of + this patch are committed, introduce WTF_USE_GLIB_ICU_UNICODE_HYBRID + macro to allow for a mixed compilation with WTF Unicode + backend based on GLib while text codecs and TextBreakIterator + remain ICU dependent. + + * GNUmakefile.am: + * configure.ac: + +2009-05-18 Gustavo Noronha Silva + + Reviewed by Gavin Barraclough. + + Enable YARR, and disable WREC for GTK+. + + * configure.ac: + +2009-05-18 Jan Michael Alonzo + + Reviewed by Xan Lopez. + + [Gtk] Various autotools build refactoring and fixes + https://bugs.webkit.org/show_bug.cgi?id=25286 + + Add support for running unit tests. Also run the tests whenever + the 'check' target runs. + + * GNUmakefile.am: + +2009-05-18 Jan Michael Alonzo + + Reviewed by Xan Lopez. + + [Gtk] Various autotools build refactoring and fixes + https://bugs.webkit.org/show_bug.cgi?id=25286 + + Style fixes + + * GNUmakefile.am: + +2009-05-18 Jan Michael Alonzo + + Reviewed by Xan Lopez. + + [Gtk] Various autotools build refactoring and fixes + https://bugs.webkit.org/show_bug.cgi?id=25286 + + Add -no-install and -no-fast-install to programs and tests that we + don't install. Also remove -O2 since this is already handled at + configure time. + + * GNUmakefile.am: + +2009-05-17 Jan Michael Alonzo + + Reviewed by Xan Lopez. + + [Gtk] Various autotools build refactoring and fixes + https://bugs.webkit.org/show_bug.cgi?id=25286 + + Refactor library cflags + + * GNUmakefile.am: + +2009-05-15 Fridrich Strba + + Reviewed by Jan Alonzo. + + Use AC_CANONICAL_HOST instead of AC_CANONICAL_SYSTEM, since + the JIT compiler is not a cross-compiler + + * configure.ac: + +2009-05-13 Xan Lopez + + Unreviewed: bump versions in preparation for 1.1.7 release. + + * configure.ac: + +2009-05-13 Xan Lopez + + Rubber-stamped by Gustavo Noronha. + + Revert commit r43563, since it breaks WebKitGTK+ when compiled + with gcc 4.4. + + * GNUmakefile.am: + +2009-05-12 Jan Michael Alonzo + + Reviewed by Holger Freyther. + + [Gtk] Various autotools build refactoring and fixes + https://bugs.webkit.org/show_bug.cgi?id=25286 + + Refactor use of CFLAGS, CXXFLAGS, LIBADD and LDFLAGS. + + * GNUmakefile.am: + +2009-05-09 Jan Michael Alonzo + + Reviewed by Gustavo Noronha. + + WebKit-r43163 won't build for gtk-directfb + https://bugs.webkit.org/show_bug.cgi?id=25538 + + Move the ENCHANT check out of the with_target conditional since it + applies to all targets + + * configure.ac: + +2009-05-09 Mike Hommey + + Reviewed by Geoffrey Garen. Landed by Jan Alonzo. + + Enable JIT on x86-64 gtk+ + https://bugs.webkit.org/show_bug.cgi?id=24724 + + * configure.ac: + +2009-05-08 Gustavo Noronha Silva + + Reviewed by Xan Lopez. + + Ship the gtk-doc.make file, so as to not depend on gtkdoc-tools. + + * GNUmakefile.am: + * autogen.sh: + +2009-05-06 Tor Arne Vestbø + + Reviewed by Simon Hausmann. + + Build QtWebKit as a framework on Mac + + This implies both debug and release build by default, unless + one of the --debug or --release config options are passed to + the build-webkit script. + + Frameworks can be disabled by passing CONFIG+=webkit_no_framework + to the build-webkit script. + + To be able to build both debug and release targets in parallel + we have to use separate output directories for the generated + sources, which is not optimal, but required to avoid race conditions. + + An optimization would be to only require this spit-up on Mac. + + * WebKit.pri: + +2009-04-30 Jan Michael Alonzo + + Unreviewed build GTK build fix + + * configure.ac: typo fix - javascript_debugger should be enable_javascript_debugger + +2009-04-30 Dimitri Glazkov + + Unreviewed, build fix. + + https://bugs.webkit.org/show_bug.cgi?id=25470 + Extend the cover of ENABLE_JAVASCRIPT_DEBUGGER to profiler. + + * configure.ac: Add autoconfig options, missed in the first commit. + +2009-04-28 Xan Lopez + + Unreviewed: bump versions in preparation for 1.1.6 release. + + * configure.ac: + +2009-04-25 Jan Michael Alonzo + + Reviewed by Xan Lopez. + + [GTK] Error reporting + https://bugs.webkit.org/show_bug.cgi?id=18344 + + Add webkiterror to the build. + + * GNUmakefile.am: + +2009-04-25 Jan Michael Alonzo + + Reviewed by Xan Lopez. + + [GTK] Error reporting + https://bugs.webkit.org/show_bug.cgi?id=18344 + + Add the default error page for installation. + + * GNUmakefile.am: + +2009-04-24 Diego Escalante Urrelo + + Reviewed by Gustavo Noronha. + + https://bugs.webkit.org/show_bug.cgi?id=15616 + [GTK] Add spell checking + + Add enchant support for spell-checking-languages property to work + properly. + + * GNUmakefile.am: + * configure.ac: + 2009-04-24 Simon Hausmann Reviewed by Ariya Hidayat. @@ -6,6 +306,375 @@ * WebKit.pro: Include docs.pri for "make docs" target. +2009-04-14 Xan Lopez + + Unreviewed version bump in preparation for 1.1.5 release. + + * configure.ac: + +2009-04-06 Gustavo Noronha Silva + + Rubber-stamped by Sam Weinig. + + Added rules to maintain the localization support. We cannot simply + use whatever gettextize gives us because our build system is + non-recursive. + + * GNUmakefile.am: + * configure.ac: + +2009-04-05 Mike Hommey + + Reviewed by Holger Freyther. + + Filter out all C++ symbols + https://bugs.webkit.org/show_bug.cgi?id=24960 + + Considering the public API is all C, we can just filter out all + C++ mangled symbols, which will avoid exporting symbols in some + corner cases such as gcc bugs on specific architectures, etc. + + * autotools/symbols.filter: + +2009-04-03 Gustavo Noronha Silva + + Reviewed by Holger Freyther. + + Require GTK+ >= 2.10; 2.8 is already very old, and some very + useful APIs are only available since 2.10. + + * configure.ac: + +2009-04-01 Christian Dywan + + Reviewed by Holger Freyther. + + Unit test WebKitDownload + http://bugs.webkit.org/show_bug.cgi?id=24844 + + * GNUmakefile.am: Add a unit test for downloading. + +2009-04-01 Gustavo Noronha Silva + + Unreviewed build fix. Fix make distcheck, after the gtk-doc + integration. + + * GNUmakefile.am: + +2009-03-30 Gustavo Noronha Silva + + Reviewed by Holger Freyther. + + Integrate gtk-doc into the Gtk+ buildsystem. + + * autogen.sh: + * configure.ac: + +2009-03-30 Xan Lopez + + Unreviewed: bump version to 1.1.4 for release. + + * configure.ac: + +2009-03-21 Xan Lopez + + Reviewed by Holger Freyther. + + Require gnome-keyring 2.26.0, since we were depending on an + unreleased trunk revision between 2.25.91 and 2.26.0. + + * configure.ac: + +2009-03-20 Jan Michael Alonzo + + Reviewed by Holger Freyther. + + [GTK] Misc patches for WebKitWebHistoryItem + https://bugs.webkit.org/show_bug.cgi?id=24493 + + Added build support for build the WebKitWebHistoryItem unit test. + + * GNUmakefile.am: + +2009-03-20 Jan Michael Alonzo + + Reviewed by Holger Freyther. + + Separate gtk unit tests + https://bugs.webkit.org/show_bug.cgi?id=24039 + + Build the unit tests accordingly. + + * GNUmakefile.am: + +2009-03-17 Gustavo Noronha Silva + + Reviewed by Mark Rowe. + + Enable HTML5 media elements support by default in the GTK+ port. + + * configure.ac: + +2009-03-17 Mike Hommey + + Reviewed by Holger Freyther. + + Do not export cti* symbols. + See http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=519924. + + * autotools/symbols.filter: + +2009-03-15 Xan Lopez + + Bump version to 1.1.3 for release and fix soversion + calculation (oops). Thanks to Frederik Himpe for pointing this + out. + + * configure.ac: + +2009-03-15 Xan Lopez + + Bump version and libtool version for release. + + * configure.ac: + +2009-03-14 Xan Lopez + + No review, build fix. + + Split clean rules to make distcheck pass. + + * GNUmakefile.am: + +2009-03-13 Mark Rowe + + Reviewed by Dan Bernstein. + + Remove rarely used Makefile targets from the Makefile. + + There are many situations in which the targets don't work as expected, + and their primary use is addressed by having the build system default + to building the appropriate architecture. + + * Makefile.shared: + +2009-03-11 Jan Michael Alonzo + + Reviewed by Holger Freyther. + + [Gtk] Fix make clean targets + https://bugs.webkit.org/show_bug.cgi?id=24450 + + Fix 'make' clean targets. We shouldn't be removing DerivedSources + if it's only clean. Only remove it if it's distclean or + maintainer-clean. Also remove build-related auxillary files on + dist/maintainer clean. + + * GNUmakefile.am: + +2009-03-11 Jan Michael Alonzo + + Reviewed by Holger Freyther + + [GTK]DumpRenderTree doesn't compile for non-X11 GTK ports anymore + https://bugs.webkit.org/show_bug.cgi?id=2260 + + pangoft2 is also used in directfb builds so use it for all targets + + * configure.ac: + +2009-03-02 Xan Lopez + + Reviewed by Mark Rowe. + + https://bugs.webkit.org/show_bug.cgi?id=24287 + [GTK] Move auth dialog feature to WebKit/ + + Add WebKitSoupAuthDialog files to build. + + * GNUmakefile.am: + +2009-03-03 Gustavo Noronha Silva + + Reviewed by Alexey Proskuryakov. + + https://bugs.webkit.org/show_bug.cgi?id=16826 + [Gtk] Implement WebKitDownload + + Adding new files related to WebKitDownload to the GTK+ port. + + * GNUmakefile.am: + +2009-03-02 Gustavo Noronha Silva + + Unreviewed build fix; adding missing files to EXTRA_DIST, so that + they show up in the tarball. + + * GNUmakefile.am: + +2009-03-01 Christian Dywan + + * configure.ac: Bump GTK port version to 1.1.1. + +2009-02-27 Gustavo Noronha Silva + + Unreviewed build fix. Adding the WebKit/gtk/webkitmarshal.list + file to EXTRA_DIST to fix make dist. + + * GNUmakefile.am: + +2009-02-26 Xan Lopez + + Reviewed by Holger Freyther. + + https://bugs.webkit.org/show_bug.cgi?id=16947 + [GTK] Missing HTTP Auth challenge + + Add HTTP authentication dialog with optional GNOME Keyring + storage. + + * GNUmakefile.am: + * configure.ac: + +2009-02-26 Xan Lopez + + Reviewed by Holger Freyther. + + https://bugs.webkit.org/show_bug.cgi?id=16947 + [GTK] Missing HTTP Auth challenge + + Take marshallers to be built from a manually maintained list + instead of grepping the sources. + + It's much faster, especially so now that we want to add + marshallers from WebCore too. A system to only take into account + the modified files when generating the marshallers from sources + could be hacked, but I think it's overkill considering how rarely + a new marshaller is added. + + * GNUmakefile.am: + +2009-02-24 Jan Michael Alonzo + + Reviewed by Alexey Proskuryakov. + + [Gtk] add options for 3D transforms and HTML5 channel messaging to the build + https://bugs.webkit.org/show_bug.cgi?id=24072 + + Add options for toggling 3D transforms and HTML5 channel messaging + support on or off. + + Also fix the web-workers option. It should be web-workers and not workers. + + * configure.ac: + +2009-02-23 Xan Lopez + + Reviewed by Alexey Proskuryakov. + + https://bugs.webkit.org/show_bug.cgi?id=22624 + [SOUP][GTK] Need API to get SoupSession from WebKit. + + Remove CURL support, the only supported HTTP backend is SOUP now. + + * GNUmakefile.am: + * configure.ac: + +2009-02-19 Christian Dywan + + Rubber-stamped by Holger Freyther. + + http://bugs.webkit.org/show_bug.cgi?id=22811 + Underlinking in Programs_UnitTests (GTK+ build) + + * GNUmakefile.am: Add GLIB_LIBS to unit test library flags. + +2009-02-18 Gustavo Noronha Silva + + Reviewed by Holger Freyther. + + Fix symbols.filter location, and add other missing files to the + autotools build, so that make dist works. + + * GNUmakefile.am: + +2009-02-17 Gustavo Noronha Silva + + Reviewed by Alexey Proskuryakov. + + https://bugs.webkit.org/show_bug.cgi?id=23939 + Release build being built with debugging symbols + + * configure.ac: Revert change done in revision 40790, since we + already have a AC_PROG_CXX macro call as part of WEBKIT_INIT + +2009-02-12 Gustavo Noronha Silva + + Reviewed by Eric Seidel. + + * configure.ac: Make soup the default HTTP backend for the Gtk port. + +2009-02-09 Calvin Walton + + Reviewed by Holger Freyther. + + https://bugs.webkit.org/show_bug.cgi?id=23823 + + [Gtk] Fix build with recent autotools + + Current versions of automake/libtool don't assume you want C++ enabled + by default any more, so explicitly check for a C++ compiler. + + * configure.ac: Add AC_PROG_CXX macro + +2009-02-02 Christian Dywan + + Rubber-stamped by Holger Freyther. + + Don't require Geolocation by default. + + * configure.ac: + +2009-01-30 Jan Michael Alonzo + + Reviewed by Nikolas Zimmermann. + + [Gtk] Refactor autoconf/configure.ac in preparation for jsc and webkit build splits + https://bugs.webkit.org/show_bug.cgi?id=22136 + + * GNUmakefile.am: + * acinclude.m4: Removed. + * autogen.sh: + * autotools/acinclude.m4: Added. + * autotools/dolt.m4: Added. + * autotools/symbols.filter: Renamed from symbols.filter. + * autotools/webkit.m4: Added. + * configure.ac: + +2009-01-30 Holger Hans Peter Freyther + + Reviewed by Nikolas Zimmermann. + + [GTK] Implement GeolocationService using the Geoclue library + + https://bugs.webkit.org/show_bug.cgi?id=22022 + + Untested implementation of the GeolocationService using the geoclue + library. Velocity handling is completely missing and the accuracy + handling might be wrong. + + * GNUmakefile.am: + * configure.ac: + +2009-01-11 Xan Lopez + + Reviewed by Holger Freyther. + + Bump version to 1.1.0 since we are breaking ABI and adding new + major features. + + * configure.ac: + 2008-12-19 Marco Barisione Reviewed by Holger Freyther. @@ -203,7 +872,7 @@ 2008-11-16 Geoffrey Garen Not reviewed. - + Try to fix gtk build. * configure.ac: @@ -801,7 +1470,7 @@ Reviewed by Mark. Add x86_64 rule. - + * Makefile: 2008-05-09 Simon Hausmann @@ -809,11 +1478,11 @@ Reviewed by Holger. Removed explicit linkage against libxml and libxslt on Qt/Mac builds. - + This dependency is completely unnecessary here and creates only problems by propagating through WebCore.pro over libQtWebKit.prl right now customer applications. - + * WebKit.pri: @@ -822,7 +1491,7 @@ Reviewed by Mark. Add an "x86_64" make rule. - + * Makefile.shared: 2008-05-02 Jan Michael Alonzo @@ -973,7 +1642,7 @@ http://bugs.webkit.org/show_bug.cgi?id=16476 Add support for multiple http backends, and add soup backend (off by default). - + * GNUmakefile.am: * configure.ac: @@ -1060,7 +1729,7 @@ Add separator '\' after libJavaScriptCore_la_LIBADD and cleanup whitespaces introduced in the previous commit. - * GNUmakefile.am: + * GNUmakefile.am: 2008-02-23 Jan Michael Alonzo @@ -2452,7 +3121,7 @@ Reviewed by Lars. Don't compile the ICO plugin when building against Qt >= 4.4 - + * WebKit.pro: diff --git a/src/3rdparty/webkit/JavaScriptCore/API/APICast.h b/src/3rdparty/webkit/JavaScriptCore/API/APICast.h index d356bca..762a15e 100644 --- a/src/3rdparty/webkit/JavaScriptCore/API/APICast.h +++ b/src/3rdparty/webkit/JavaScriptCore/API/APICast.h @@ -26,7 +26,10 @@ #ifndef APICast_h #define APICast_h +#include "JSNumberCell.h" #include "JSValue.h" +#include +#include namespace JSC { class ExecState; @@ -34,7 +37,6 @@ namespace JSC { class JSGlobalData; class JSObject; class JSValue; - class JSValuePtr; } typedef const struct OpaqueJSContextGroup* JSContextGroupRef; @@ -56,9 +58,18 @@ inline JSC::ExecState* toJS(JSGlobalContextRef c) return reinterpret_cast(c); } -inline JSC::JSValuePtr toJS(JSValueRef v) +inline JSC::JSValue toJS(JSC::ExecState* exec, JSValueRef v) { - return JSC::JSValuePtr::decode(reinterpret_cast(const_cast(v))); + JSC::JSValue jsValue = JSC::JSValue::decode(reinterpret_cast(const_cast(v))); +#if USE(ALTERNATE_JSIMMEDIATE) + UNUSED_PARAM(exec); +#else + if (jsValue && jsValue.isNumber()) { + ASSERT(jsValue.isAPIMangledNumber()); + return JSC::jsNumber(exec, jsValue.uncheckedGetNumber()); + } +#endif + return jsValue; } inline JSC::JSObject* toJS(JSObjectRef o) @@ -76,14 +87,17 @@ inline JSC::JSGlobalData* toJS(JSContextGroupRef g) return reinterpret_cast(const_cast(g)); } -inline JSValueRef toRef(JSC::JSValuePtr v) +inline JSValueRef toRef(JSC::ExecState* exec, JSC::JSValue v) { - return reinterpret_cast(JSC::JSValuePtr::encode(v)); -} - -inline JSValueRef* toRef(JSC::JSValuePtr* v) -{ - return reinterpret_cast(v); +#if USE(ALTERNATE_JSIMMEDIATE) + UNUSED_PARAM(exec); +#else + if (v && v.isNumber()) { + ASSERT(!v.isAPIMangledNumber()); + return reinterpret_cast(JSC::JSValue::encode(JSC::jsAPIMangledNumber(exec, v.uncheckedGetNumber()))); + } +#endif + return reinterpret_cast(JSC::JSValue::encode(v)); } inline JSObjectRef toRef(JSC::JSObject* o) diff --git a/src/3rdparty/webkit/JavaScriptCore/API/JSBase.cpp b/src/3rdparty/webkit/JavaScriptCore/API/JSBase.cpp index 2ffe345..fc3d0fe 100644 --- a/src/3rdparty/webkit/JavaScriptCore/API/JSBase.cpp +++ b/src/3rdparty/webkit/JavaScriptCore/API/JSBase.cpp @@ -55,15 +55,15 @@ JSValueRef JSEvaluateScript(JSContextRef ctx, JSStringRef script, JSObjectRef th if (completion.complType() == Throw) { if (exception) - *exception = toRef(completion.value()); + *exception = toRef(exec, completion.value()); return 0; } - + if (completion.value()) - return toRef(completion.value()); + return toRef(exec, completion.value()); // happens, for example, when the only statement is an empty (';') statement - return toRef(jsUndefined()); + return toRef(exec, jsUndefined()); } bool JSCheckScriptSyntax(JSContextRef ctx, JSStringRef script, JSStringRef sourceURL, int startingLineNumber, JSValueRef* exception) @@ -76,7 +76,7 @@ bool JSCheckScriptSyntax(JSContextRef ctx, JSStringRef script, JSStringRef sourc Completion completion = checkSyntax(exec->dynamicGlobalObject()->globalExec(), source); if (completion.complType() == Throw) { if (exception) - *exception = toRef(completion.value()); + *exception = toRef(exec, completion.value()); return false; } diff --git a/src/3rdparty/webkit/JavaScriptCore/API/JSBase.h b/src/3rdparty/webkit/JavaScriptCore/API/JSBase.h index f44d4ad..6f012ca 100644 --- a/src/3rdparty/webkit/JavaScriptCore/API/JSBase.h +++ b/src/3rdparty/webkit/JavaScriptCore/API/JSBase.h @@ -65,14 +65,20 @@ typedef struct OpaqueJSValue* JSObjectRef; /* JavaScript symbol exports */ #undef JS_EXPORT -#if defined(__GNUC__) +#if defined(BUILDING_WX__) + #define JS_EXPORT +#elif defined(__GNUC__) #define JS_EXPORT __attribute__((visibility("default"))) #elif defined(WIN32) || defined(_WIN32) /* * TODO: Export symbols with JS_EXPORT when using MSVC. * See http://bugs.webkit.org/show_bug.cgi?id=16227 */ - #define JS_EXPORT + #if defined(BUILDING_JavaScriptCore) || defined(BUILDING_WTF) + #define JS_EXPORT __declspec(dllexport) + #else + #define JS_EXPORT __declspec(dllimport) + #endif #else #define JS_EXPORT #endif diff --git a/src/3rdparty/webkit/JavaScriptCore/API/JSBasePrivate.h b/src/3rdparty/webkit/JavaScriptCore/API/JSBasePrivate.h index 6beacda..befa316 100644 --- a/src/3rdparty/webkit/JavaScriptCore/API/JSBasePrivate.h +++ b/src/3rdparty/webkit/JavaScriptCore/API/JSBasePrivate.h @@ -43,7 +43,7 @@ owns a large non-GC memory region. Calling this function will encourage the garbage collector to collect soon, hoping to reclaim that large non-GC memory region. */ -JS_EXPORT void JSReportExtraMemoryCost(JSContextRef ctx, size_t size) AVAILABLE_AFTER_WEBKIT_VERSION_3_1; +JS_EXPORT void JSReportExtraMemoryCost(JSContextRef ctx, size_t size) AVAILABLE_IN_WEBKIT_VERSION_4_0; #ifdef __cplusplus } diff --git a/src/3rdparty/webkit/JavaScriptCore/API/JSCallbackConstructor.cpp b/src/3rdparty/webkit/JavaScriptCore/API/JSCallbackConstructor.cpp index e10733e..64c83cb 100644 --- a/src/3rdparty/webkit/JavaScriptCore/API/JSCallbackConstructor.cpp +++ b/src/3rdparty/webkit/JavaScriptCore/API/JSCallbackConstructor.cpp @@ -61,10 +61,17 @@ static JSObject* constructJSCallback(ExecState* exec, JSObject* constructor, con int argumentCount = static_cast(args.size()); Vector arguments(argumentCount); for (int i = 0; i < argumentCount; i++) - arguments[i] = toRef(args.at(exec, i)); - - JSLock::DropAllLocks dropAllLocks(exec); - return toJS(callback(ctx, constructorRef, argumentCount, arguments.data(), toRef(exec->exceptionSlot()))); + arguments[i] = toRef(exec, args.at(i)); + + JSValueRef exception = 0; + JSObjectRef result; + { + JSLock::DropAllLocks dropAllLocks(exec); + result = callback(ctx, constructorRef, argumentCount, arguments.data(), &exception); + } + if (exception) + exec->setException(toJS(exec, exception)); + return toJS(result); } return toJS(JSObjectMake(ctx, static_cast(constructor)->classRef(), 0)); diff --git a/src/3rdparty/webkit/JavaScriptCore/API/JSCallbackConstructor.h b/src/3rdparty/webkit/JavaScriptCore/API/JSCallbackConstructor.h index cb8307f..1f06249 100644 --- a/src/3rdparty/webkit/JavaScriptCore/API/JSCallbackConstructor.h +++ b/src/3rdparty/webkit/JavaScriptCore/API/JSCallbackConstructor.h @@ -39,7 +39,7 @@ public: JSObjectCallAsConstructorCallback callback() const { return m_callback; } static const ClassInfo info; - static PassRefPtr createStructure(JSValuePtr proto) + static PassRefPtr createStructure(JSValue proto) { return Structure::create(proto, TypeInfo(ObjectType, ImplementsHasInstance | HasStandardGetOwnPropertySlot)); } diff --git a/src/3rdparty/webkit/JavaScriptCore/API/JSCallbackFunction.cpp b/src/3rdparty/webkit/JavaScriptCore/API/JSCallbackFunction.cpp index b82932e..1b3217b 100644 --- a/src/3rdparty/webkit/JavaScriptCore/API/JSCallbackFunction.cpp +++ b/src/3rdparty/webkit/JavaScriptCore/API/JSCallbackFunction.cpp @@ -46,19 +46,27 @@ JSCallbackFunction::JSCallbackFunction(ExecState* exec, JSObjectCallAsFunctionCa { } -JSValuePtr JSCallbackFunction::call(ExecState* exec, JSObject* functionObject, JSValuePtr thisValue, const ArgList& args) +JSValue JSCallbackFunction::call(ExecState* exec, JSObject* functionObject, JSValue thisValue, const ArgList& args) { JSContextRef execRef = toRef(exec); JSObjectRef functionRef = toRef(functionObject); - JSObjectRef thisObjRef = toRef(thisValue->toThisObject(exec)); + JSObjectRef thisObjRef = toRef(thisValue.toThisObject(exec)); int argumentCount = static_cast(args.size()); Vector arguments(argumentCount); for (int i = 0; i < argumentCount; i++) - arguments[i] = toRef(args.at(exec, i)); + arguments[i] = toRef(exec, args.at(i)); - JSLock::DropAllLocks dropAllLocks(exec); - return toJS(static_cast(functionObject)->m_callback(execRef, functionRef, thisObjRef, argumentCount, arguments.data(), toRef(exec->exceptionSlot()))); + JSValueRef exception = 0; + JSValueRef result; + { + JSLock::DropAllLocks dropAllLocks(exec); + result = static_cast(functionObject)->m_callback(execRef, functionRef, thisObjRef, argumentCount, arguments.data(), &exception); + } + if (exception) + exec->setException(toJS(exec, exception)); + + return toJS(exec, result); } CallType JSCallbackFunction::getCallData(CallData& callData) diff --git a/src/3rdparty/webkit/JavaScriptCore/API/JSCallbackFunction.h b/src/3rdparty/webkit/JavaScriptCore/API/JSCallbackFunction.h index 46f6fcc..7dd87b5 100644 --- a/src/3rdparty/webkit/JavaScriptCore/API/JSCallbackFunction.h +++ b/src/3rdparty/webkit/JavaScriptCore/API/JSCallbackFunction.h @@ -39,7 +39,7 @@ public: // InternalFunction mish-mashes constructor and function behavior -- we should // refactor the code so this override isn't necessary - static PassRefPtr createStructure(JSValuePtr proto) + static PassRefPtr createStructure(JSValue proto) { return Structure::create(proto, TypeInfo(ObjectType, HasStandardGetOwnPropertySlot)); } @@ -48,7 +48,7 @@ private: virtual CallType getCallData(CallData&); virtual const ClassInfo* classInfo() const { return &info; } - static JSValuePtr call(ExecState*, JSObject*, JSValuePtr, const ArgList&); + static JSValue JSC_HOST_CALL call(ExecState*, JSObject*, JSValue, const ArgList&); JSObjectCallAsFunctionCallback m_callback; }; diff --git a/src/3rdparty/webkit/JavaScriptCore/API/JSCallbackObject.h b/src/3rdparty/webkit/JavaScriptCore/API/JSCallbackObject.h index 9001c43..9d22ad9 100644 --- a/src/3rdparty/webkit/JavaScriptCore/API/JSCallbackObject.h +++ b/src/3rdparty/webkit/JavaScriptCore/API/JSCallbackObject.h @@ -48,7 +48,7 @@ public: JSClassRef classRef() const { return m_callbackObjectData->jsClass; } bool inherits(JSClassRef) const; - static PassRefPtr createStructure(JSValuePtr proto) + static PassRefPtr createStructure(JSValue proto) { return Structure::create(proto, TypeInfo(ObjectType, ImplementsHasInstance | OverridesHasInstance)); } @@ -59,12 +59,12 @@ private: virtual bool getOwnPropertySlot(ExecState*, const Identifier&, PropertySlot&); virtual bool getOwnPropertySlot(ExecState*, unsigned, PropertySlot&); - virtual void put(ExecState*, const Identifier&, JSValuePtr, PutPropertySlot&); + virtual void put(ExecState*, const Identifier&, JSValue, PutPropertySlot&); virtual bool deleteProperty(ExecState*, const Identifier&); virtual bool deleteProperty(ExecState*, unsigned); - virtual bool hasInstance(ExecState* exec, JSValuePtr value, JSValuePtr proto); + virtual bool hasInstance(ExecState* exec, JSValue value, JSValue proto); virtual void getPropertyNames(ExecState*, PropertyNameArray&); @@ -77,14 +77,14 @@ private: void init(ExecState*); - static JSCallbackObject* asCallbackObject(JSValuePtr); + static JSCallbackObject* asCallbackObject(JSValue); - static JSValuePtr call(ExecState*, JSObject* functionObject, JSValuePtr thisValue, const ArgList&); + static JSValue JSC_HOST_CALL call(ExecState*, JSObject* functionObject, JSValue thisValue, const ArgList&); static JSObject* construct(ExecState*, JSObject* constructor, const ArgList&); - static JSValuePtr staticValueGetter(ExecState*, const Identifier&, const PropertySlot&); - static JSValuePtr staticFunctionGetter(ExecState*, const Identifier&, const PropertySlot&); - static JSValuePtr callbackGetter(ExecState*, const Identifier&, const PropertySlot&); + 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) diff --git a/src/3rdparty/webkit/JavaScriptCore/API/JSCallbackObjectFunctions.h b/src/3rdparty/webkit/JavaScriptCore/API/JSCallbackObjectFunctions.h index fdbafbc..987c59f 100644 --- a/src/3rdparty/webkit/JavaScriptCore/API/JSCallbackObjectFunctions.h +++ b/src/3rdparty/webkit/JavaScriptCore/API/JSCallbackObjectFunctions.h @@ -40,7 +40,7 @@ namespace JSC { template -inline JSCallbackObject* JSCallbackObject::asCallbackObject(JSValuePtr value) +inline JSCallbackObject* JSCallbackObject::asCallbackObject(JSValue value) { ASSERT(asObject(value)->inherits(&info)); return static_cast(asObject(value)); @@ -99,7 +99,7 @@ template UString JSCallbackObject::className() const { UString thisClassName = classRef()->className(); - if (!thisClassName.isNull()) + if (!thisClassName.isEmpty()) return thisClassName; return Base::className(); @@ -125,9 +125,19 @@ bool JSCallbackObject::getOwnPropertySlot(ExecState* exec, const Identifie } else if (JSObjectGetPropertyCallback getProperty = jsClass->getProperty) { if (!propertyNameRef) propertyNameRef = OpaqueJSString::create(propertyName.ustring()); - JSLock::DropAllLocks dropAllLocks(exec); - if (JSValueRef value = getProperty(ctx, thisRef, propertyNameRef.get(), toRef(exec->exceptionSlot()))) { - slot.setValue(toJS(value)); + JSValueRef exception = 0; + JSValueRef value; + { + JSLock::DropAllLocks dropAllLocks(exec); + value = getProperty(ctx, thisRef, propertyNameRef.get(), &exception); + } + exec->setException(toJS(exec, exception)); + if (value) { + slot.setValue(toJS(exec, value)); + return true; + } + if (exception) { + slot.setValue(jsUndefined()); return true; } } @@ -157,19 +167,25 @@ bool JSCallbackObject::getOwnPropertySlot(ExecState* exec, unsigned proper } template -void JSCallbackObject::put(ExecState* exec, const Identifier& propertyName, JSValuePtr value, PutPropertySlot& slot) +void JSCallbackObject::put(ExecState* exec, const Identifier& propertyName, JSValue value, PutPropertySlot& slot) { JSContextRef ctx = toRef(exec); JSObjectRef thisRef = toRef(this); RefPtr propertyNameRef; - JSValueRef valueRef = toRef(value); + JSValueRef valueRef = toRef(exec, value); for (JSClassRef jsClass = classRef(); jsClass; jsClass = jsClass->parentClass) { if (JSObjectSetPropertyCallback setProperty = jsClass->setProperty) { if (!propertyNameRef) propertyNameRef = OpaqueJSString::create(propertyName.ustring()); - JSLock::DropAllLocks dropAllLocks(exec); - if (setProperty(ctx, thisRef, propertyNameRef.get(), valueRef, toRef(exec->exceptionSlot()))) + JSValueRef exception = 0; + bool result; + { + JSLock::DropAllLocks dropAllLocks(exec); + result = setProperty(ctx, thisRef, propertyNameRef.get(), valueRef, &exception); + } + exec->setException(toJS(exec, exception)); + if (result || exception) return; } @@ -180,8 +196,14 @@ void JSCallbackObject::put(ExecState* exec, const Identifier& propertyName if (JSObjectSetPropertyCallback setProperty = entry->setProperty) { if (!propertyNameRef) propertyNameRef = OpaqueJSString::create(propertyName.ustring()); - JSLock::DropAllLocks dropAllLocks(exec); - if (setProperty(ctx, thisRef, propertyNameRef.get(), valueRef, toRef(exec->exceptionSlot()))) + JSValueRef exception = 0; + bool result; + { + JSLock::DropAllLocks dropAllLocks(exec); + result = setProperty(ctx, thisRef, propertyNameRef.get(), valueRef, &exception); + } + exec->setException(toJS(exec, exception)); + if (result || exception) return; } else throwError(exec, ReferenceError, "Attempt to set a property that is not settable."); @@ -212,8 +234,14 @@ bool JSCallbackObject::deleteProperty(ExecState* exec, const Identifier& p if (JSObjectDeletePropertyCallback deleteProperty = jsClass->deleteProperty) { if (!propertyNameRef) propertyNameRef = OpaqueJSString::create(propertyName.ustring()); - JSLock::DropAllLocks dropAllLocks(exec); - if (deleteProperty(ctx, thisRef, propertyNameRef.get(), toRef(exec->exceptionSlot()))) + JSValueRef exception = 0; + bool result; + { + JSLock::DropAllLocks dropAllLocks(exec); + result = deleteProperty(ctx, thisRef, propertyNameRef.get(), &exception); + } + exec->setException(toJS(exec, exception)); + if (result || exception) return true; } @@ -266,9 +294,15 @@ JSObject* JSCallbackObject::construct(ExecState* exec, JSObject* construct int argumentCount = static_cast(args.size()); Vector arguments(argumentCount); for (int i = 0; i < argumentCount; i++) - arguments[i] = toRef(args.at(exec, i)); - JSLock::DropAllLocks dropAllLocks(exec); - return toJS(callAsConstructor(execRef, constructorRef, argumentCount, arguments.data(), toRef(exec->exceptionSlot()))); + arguments[i] = toRef(exec, args.at(i)); + JSValueRef exception = 0; + JSObject* result; + { + JSLock::DropAllLocks dropAllLocks(exec); + result = toJS(callAsConstructor(execRef, constructorRef, argumentCount, arguments.data(), &exception)); + } + exec->setException(toJS(exec, exception)); + return result; } } @@ -277,15 +311,21 @@ JSObject* JSCallbackObject::construct(ExecState* exec, JSObject* construct } template -bool JSCallbackObject::hasInstance(ExecState* exec, JSValuePtr value, JSValuePtr) +bool JSCallbackObject::hasInstance(ExecState* exec, JSValue value, JSValue) { JSContextRef execRef = toRef(exec); JSObjectRef thisRef = toRef(this); for (JSClassRef jsClass = classRef(); jsClass; jsClass = jsClass->parentClass) { if (JSObjectHasInstanceCallback hasInstance = jsClass->hasInstance) { - JSLock::DropAllLocks dropAllLocks(exec); - return hasInstance(execRef, thisRef, toRef(value), toRef(exec->exceptionSlot())); + JSValueRef exception = 0; + bool result; + { + JSLock::DropAllLocks dropAllLocks(exec); + result = hasInstance(execRef, thisRef, toRef(exec, value), &exception); + } + exec->setException(toJS(exec, exception)); + return result; } } return false; @@ -304,25 +344,31 @@ CallType JSCallbackObject::getCallData(CallData& callData) } template -JSValuePtr JSCallbackObject::call(ExecState* exec, JSObject* functionObject, JSValuePtr thisValue, const ArgList& args) +JSValue JSCallbackObject::call(ExecState* exec, JSObject* functionObject, JSValue thisValue, const ArgList& args) { JSContextRef execRef = toRef(exec); JSObjectRef functionRef = toRef(functionObject); - JSObjectRef thisObjRef = toRef(thisValue->toThisObject(exec)); + JSObjectRef thisObjRef = toRef(thisValue.toThisObject(exec)); for (JSClassRef jsClass = static_cast*>(functionObject)->classRef(); jsClass; jsClass = jsClass->parentClass) { if (JSObjectCallAsFunctionCallback callAsFunction = jsClass->callAsFunction) { int argumentCount = static_cast(args.size()); Vector arguments(argumentCount); for (int i = 0; i < argumentCount; i++) - arguments[i] = toRef(args.at(exec, i)); - JSLock::DropAllLocks dropAllLocks(exec); - return toJS(callAsFunction(execRef, functionRef, thisObjRef, argumentCount, arguments.data(), toRef(exec->exceptionSlot()))); + arguments[i] = toRef(exec, args.at(i)); + JSValueRef exception = 0; + JSValue result; + { + JSLock::DropAllLocks dropAllLocks(exec); + result = toJS(exec, callAsFunction(execRef, functionRef, thisObjRef, argumentCount, arguments.data(), &exception)); + } + exec->setException(toJS(exec, exception)); + return result; } } ASSERT_NOT_REACHED(); // getCallData should prevent us from reaching here - return noValue(); + return JSValue(); } template @@ -376,9 +422,17 @@ double JSCallbackObject::toNumber(ExecState* exec) const for (JSClassRef jsClass = classRef(); jsClass; jsClass = jsClass->parentClass) if (JSObjectConvertToTypeCallback convertToType = jsClass->convertToType) { - JSLock::DropAllLocks dropAllLocks(exec); - if (JSValueRef value = convertToType(ctx, thisRef, kJSTypeNumber, toRef(exec->exceptionSlot()))) - return toJS(value)->getNumber(); + JSValueRef exception = 0; + JSValueRef value; + { + JSLock::DropAllLocks dropAllLocks(exec); + value = convertToType(ctx, thisRef, kJSTypeNumber, &exception); + } + exec->setException(toJS(exec, exception)); + if (value) { + double dValue; + return toJS(exec, value).getNumber(dValue) ? dValue : NaN; + } } return Base::toNumber(exec); @@ -392,13 +446,17 @@ UString JSCallbackObject::toString(ExecState* exec) const for (JSClassRef jsClass = classRef(); jsClass; jsClass = jsClass->parentClass) if (JSObjectConvertToTypeCallback convertToType = jsClass->convertToType) { + JSValueRef exception = 0; JSValueRef value; { JSLock::DropAllLocks dropAllLocks(exec); - value = convertToType(ctx, thisRef, kJSTypeString, toRef(exec->exceptionSlot())); + value = convertToType(ctx, thisRef, kJSTypeString, &exception); } + exec->setException(toJS(exec, exception)); if (value) - return toJS(value)->getString(); + return toJS(exec, value).getString(); + if (exception) + return ""; } return Base::toString(exec); @@ -427,7 +485,7 @@ bool JSCallbackObject::inherits(JSClassRef c) const } template -JSValuePtr JSCallbackObject::staticValueGetter(ExecState* exec, const Identifier& propertyName, const PropertySlot& slot) +JSValue JSCallbackObject::staticValueGetter(ExecState* exec, const Identifier& propertyName, const PropertySlot& slot) { JSCallbackObject* thisObj = asCallbackObject(slot.slotBase()); @@ -440,16 +498,24 @@ JSValuePtr JSCallbackObject::staticValueGetter(ExecState* exec, const Iden if (JSObjectGetPropertyCallback getProperty = entry->getProperty) { if (!propertyNameRef) propertyNameRef = OpaqueJSString::create(propertyName.ustring()); - JSLock::DropAllLocks dropAllLocks(exec); - if (JSValueRef value = getProperty(toRef(exec), thisRef, propertyNameRef.get(), toRef(exec->exceptionSlot()))) - return toJS(value); + JSValueRef exception = 0; + JSValueRef value; + { + JSLock::DropAllLocks dropAllLocks(exec); + value = getProperty(toRef(exec), thisRef, propertyNameRef.get(), &exception); + } + exec->setException(toJS(exec, exception)); + if (value) + return toJS(exec, value); + if (exception) + return jsUndefined(); } return throwError(exec, ReferenceError, "Static value property defined with NULL getProperty callback."); } template -JSValuePtr JSCallbackObject::staticFunctionGetter(ExecState* exec, const Identifier& propertyName, const PropertySlot& slot) +JSValue JSCallbackObject::staticFunctionGetter(ExecState* exec, const Identifier& propertyName, const PropertySlot& slot) { JSCallbackObject* thisObj = asCallbackObject(slot.slotBase()); @@ -474,7 +540,7 @@ JSValuePtr JSCallbackObject::staticFunctionGetter(ExecState* exec, const I } template -JSValuePtr JSCallbackObject::callbackGetter(ExecState* exec, const Identifier& propertyName, const PropertySlot& slot) +JSValue JSCallbackObject::callbackGetter(ExecState* exec, const Identifier& propertyName, const PropertySlot& slot) { JSCallbackObject* thisObj = asCallbackObject(slot.slotBase()); @@ -485,9 +551,17 @@ JSValuePtr JSCallbackObject::callbackGetter(ExecState* exec, const Identif if (JSObjectGetPropertyCallback getProperty = jsClass->getProperty) { if (!propertyNameRef) propertyNameRef = OpaqueJSString::create(propertyName.ustring()); - JSLock::DropAllLocks dropAllLocks(exec); - if (JSValueRef value = getProperty(toRef(exec), thisRef, propertyNameRef.get(), toRef(exec->exceptionSlot()))) - return toJS(value); + JSValueRef exception = 0; + JSValueRef value; + { + JSLock::DropAllLocks dropAllLocks(exec); + value = getProperty(toRef(exec), thisRef, propertyNameRef.get(), &exception); + } + exec->setException(toJS(exec, exception)); + if (value) + return toJS(exec, value); + if (exception) + return jsUndefined(); } return throwError(exec, ReferenceError, "hasProperty callback returned true for a property that doesn't exist."); diff --git a/src/3rdparty/webkit/JavaScriptCore/API/JSClassRef.cpp b/src/3rdparty/webkit/JavaScriptCore/API/JSClassRef.cpp index 77a33f0..afde7ce 100644 --- a/src/3rdparty/webkit/JavaScriptCore/API/JSClassRef.cpp +++ b/src/3rdparty/webkit/JavaScriptCore/API/JSClassRef.cpp @@ -111,7 +111,7 @@ PassRefPtr OpaqueJSClass::createNoAutomaticPrototype(const JSClas return adoptRef(new OpaqueJSClass(definition, 0)); } -void clearReferenceToPrototype(JSObjectRef prototype) +static void clearReferenceToPrototype(JSObjectRef prototype) { OpaqueJSClassContextData* jsClassData = static_cast(JSObjectGetPrivate(prototype)); ASSERT(jsClassData); diff --git a/src/3rdparty/webkit/JavaScriptCore/API/JSContextRef.cpp b/src/3rdparty/webkit/JavaScriptCore/API/JSContextRef.cpp index 40c45d3..a3bdc69 100644 --- a/src/3rdparty/webkit/JavaScriptCore/API/JSContextRef.cpp +++ b/src/3rdparty/webkit/JavaScriptCore/API/JSContextRef.cpp @@ -44,6 +44,7 @@ using namespace JSC; JSContextGroupRef JSContextGroupCreate() { + initializeThreading(); return toRef(JSGlobalData::create().releaseRef()); } @@ -60,6 +61,7 @@ void JSContextGroupRelease(JSContextGroupRef group) JSGlobalContextRef JSGlobalContextCreate(JSClassRef globalObjectClass) { + initializeThreading(); #if PLATFORM(DARWIN) // When running on Tiger or Leopard, or if the application was linked before JSGlobalContextCreate was changed // to use a unique JSGlobalData, we use a shared one for compatibility. @@ -95,7 +97,7 @@ JSGlobalContextRef JSGlobalContextCreateInGroup(JSContextGroupRef group, JSClass JSGlobalObject* globalObject = new (globalData.get()) JSCallbackObject(globalObjectClass); ExecState* exec = globalObject->globalExec(); - JSValuePtr prototype = globalObjectClass->prototype(exec); + JSValue prototype = globalObjectClass->prototype(exec); if (!prototype) prototype = jsNull(); globalObject->resetPrototype(prototype); diff --git a/src/3rdparty/webkit/JavaScriptCore/API/JSContextRef.h b/src/3rdparty/webkit/JavaScriptCore/API/JSContextRef.h index bc89511..c5c8a71 100644 --- a/src/3rdparty/webkit/JavaScriptCore/API/JSContextRef.h +++ b/src/3rdparty/webkit/JavaScriptCore/API/JSContextRef.h @@ -48,7 +48,7 @@ extern "C" { synchronization is required. @result The created JSContextGroup. */ -JS_EXPORT JSContextGroupRef JSContextGroupCreate() AVAILABLE_AFTER_WEBKIT_VERSION_3_1; +JS_EXPORT JSContextGroupRef JSContextGroupCreate() AVAILABLE_IN_WEBKIT_VERSION_4_0; /*! @function @@ -56,14 +56,14 @@ JS_EXPORT JSContextGroupRef JSContextGroupCreate() AVAILABLE_AFTER_WEBKIT_VERSIO @param group The JSContextGroup to retain. @result A JSContextGroup that is the same as group. */ -JS_EXPORT JSContextGroupRef JSContextGroupRetain(JSContextGroupRef group) AVAILABLE_AFTER_WEBKIT_VERSION_3_1; +JS_EXPORT JSContextGroupRef JSContextGroupRetain(JSContextGroupRef group) AVAILABLE_IN_WEBKIT_VERSION_4_0; /*! @function @abstract Releases a JavaScript context group. @param group The JSContextGroup to release. */ -JS_EXPORT void JSContextGroupRelease(JSContextGroupRef group) AVAILABLE_AFTER_WEBKIT_VERSION_3_1; +JS_EXPORT void JSContextGroupRelease(JSContextGroupRef group) AVAILABLE_IN_WEBKIT_VERSION_4_0; /*! @function @@ -92,7 +92,7 @@ JS_EXPORT JSGlobalContextRef JSGlobalContextCreate(JSClassRef globalObjectClass) @result A JSGlobalContext with a global object of class globalObjectClass and a context group equal to group. */ -JS_EXPORT JSGlobalContextRef JSGlobalContextCreateInGroup(JSContextGroupRef group, JSClassRef globalObjectClass) AVAILABLE_AFTER_WEBKIT_VERSION_3_1; +JS_EXPORT JSGlobalContextRef JSGlobalContextCreateInGroup(JSContextGroupRef group, JSClassRef globalObjectClass) AVAILABLE_IN_WEBKIT_VERSION_4_0; /*! @function @@ -123,7 +123,7 @@ JS_EXPORT JSObjectRef JSContextGetGlobalObject(JSContextRef ctx); @param ctx The JSContext whose group you want to get. @result ctx's group. */ -JS_EXPORT JSContextGroupRef JSContextGetGroup(JSContextRef ctx) AVAILABLE_AFTER_WEBKIT_VERSION_3_1; +JS_EXPORT JSContextGroupRef JSContextGetGroup(JSContextRef ctx) AVAILABLE_IN_WEBKIT_VERSION_4_0; #ifdef __cplusplus } diff --git a/src/3rdparty/webkit/JavaScriptCore/API/JSObjectRef.cpp b/src/3rdparty/webkit/JavaScriptCore/API/JSObjectRef.cpp index c08b8b0..50ee635 100644 --- a/src/3rdparty/webkit/JavaScriptCore/API/JSObjectRef.cpp +++ b/src/3rdparty/webkit/JavaScriptCore/API/JSObjectRef.cpp @@ -32,6 +32,7 @@ #include "ErrorConstructor.h" #include "FunctionConstructor.h" #include "Identifier.h" +#include "InitializeThreading.h" #include "JSArray.h" #include "JSCallbackConstructor.h" #include "JSCallbackFunction.h" @@ -52,6 +53,7 @@ using namespace JSC; JSClassRef JSClassCreate(const JSClassDefinition* definition) { + initializeThreading(); RefPtr jsClass = (definition->attributes & kJSClassAttributeNoAutomaticPrototype) ? OpaqueJSClass::createNoAutomaticPrototype(definition) : OpaqueJSClass::create(definition); @@ -103,10 +105,10 @@ JSObjectRef JSObjectMakeConstructor(JSContextRef ctx, JSClassRef jsClass, JSObje exec->globalData().heap.registerThread(); JSLock lock(exec); - JSValuePtr jsPrototype = jsClass - ? jsClass->prototype(exec) - : exec->lexicalGlobalObject()->objectPrototype(); - + JSValue jsPrototype = jsClass ? jsClass->prototype(exec) : 0; + if (!jsPrototype) + jsPrototype = exec->lexicalGlobalObject()->objectPrototype(); + JSCallbackConstructor* constructor = new (exec) JSCallbackConstructor(exec->lexicalGlobalObject()->callbackConstructorStructure(), jsClass, callAsConstructor); constructor->putDirect(exec->propertyNames().prototype, jsPrototype, DontEnum | DontDelete | ReadOnly); return toRef(constructor); @@ -120,7 +122,7 @@ JSObjectRef JSObjectMakeFunction(JSContextRef ctx, JSStringRef name, unsigned pa Identifier nameID = name ? name->identifier(&exec->globalData()) : Identifier(exec, "anonymous"); - ArgList args; + MarkedArgumentBuffer args; for (unsigned i = 0; i < parameterCount; i++) args.append(jsString(exec, parameterNames[i]->ustring())); args.append(jsString(exec, body->ustring())); @@ -128,7 +130,7 @@ JSObjectRef JSObjectMakeFunction(JSContextRef ctx, JSStringRef name, unsigned pa JSObject* result = constructFunction(exec, args, nameID, sourceURL->ustring(), startingLineNumber); if (exec->hadException()) { if (exception) - *exception = toRef(exec->exception()); + *exception = toRef(exec, exec->exception()); exec->clearException(); result = 0; } @@ -143,9 +145,9 @@ JSObjectRef JSObjectMakeArray(JSContextRef ctx, size_t argumentCount, const JSVa JSObject* result; if (argumentCount) { - ArgList argList; + MarkedArgumentBuffer argList; for (size_t i = 0; i < argumentCount; ++i) - argList.append(toJS(arguments[i])); + argList.append(toJS(exec, arguments[i])); result = constructArray(exec, argList); } else @@ -153,7 +155,7 @@ JSObjectRef JSObjectMakeArray(JSContextRef ctx, size_t argumentCount, const JSVa if (exec->hadException()) { if (exception) - *exception = toRef(exec->exception()); + *exception = toRef(exec, exec->exception()); exec->clearException(); result = 0; } @@ -167,14 +169,14 @@ JSObjectRef JSObjectMakeDate(JSContextRef ctx, size_t argumentCount, const JSVal exec->globalData().heap.registerThread(); JSLock lock(exec); - ArgList argList; + MarkedArgumentBuffer argList; for (size_t i = 0; i < argumentCount; ++i) - argList.append(toJS(arguments[i])); + argList.append(toJS(exec, arguments[i])); JSObject* result = constructDate(exec, argList); if (exec->hadException()) { if (exception) - *exception = toRef(exec->exception()); + *exception = toRef(exec, exec->exception()); exec->clearException(); result = 0; } @@ -188,14 +190,14 @@ JSObjectRef JSObjectMakeError(JSContextRef ctx, size_t argumentCount, const JSVa exec->globalData().heap.registerThread(); JSLock lock(exec); - ArgList argList; + MarkedArgumentBuffer argList; for (size_t i = 0; i < argumentCount; ++i) - argList.append(toJS(arguments[i])); + argList.append(toJS(exec, arguments[i])); JSObject* result = constructError(exec, argList); if (exec->hadException()) { if (exception) - *exception = toRef(exec->exception()); + *exception = toRef(exec, exec->exception()); exec->clearException(); result = 0; } @@ -209,14 +211,14 @@ JSObjectRef JSObjectMakeRegExp(JSContextRef ctx, size_t argumentCount, const JSV exec->globalData().heap.registerThread(); JSLock lock(exec); - ArgList argList; + MarkedArgumentBuffer argList; for (size_t i = 0; i < argumentCount; ++i) - argList.append(toJS(arguments[i])); + argList.append(toJS(exec, arguments[i])); JSObject* result = constructRegExp(exec, argList); if (exec->hadException()) { if (exception) - *exception = toRef(exec->exception()); + *exception = toRef(exec, exec->exception()); exec->clearException(); result = 0; } @@ -224,18 +226,26 @@ JSObjectRef JSObjectMakeRegExp(JSContextRef ctx, size_t argumentCount, const JSV return toRef(result); } -JSValueRef JSObjectGetPrototype(JSContextRef, JSObjectRef object) +JSValueRef JSObjectGetPrototype(JSContextRef ctx, JSObjectRef object) { + ExecState* exec = toJS(ctx); + exec->globalData().heap.registerThread(); + JSLock lock(exec); + JSObject* jsObject = toJS(object); - return toRef(jsObject->prototype()); + return toRef(exec, jsObject->prototype()); } -void JSObjectSetPrototype(JSContextRef, JSObjectRef object, JSValueRef value) +void JSObjectSetPrototype(JSContextRef ctx, JSObjectRef object, JSValueRef value) { + ExecState* exec = toJS(ctx); + exec->globalData().heap.registerThread(); + JSLock lock(exec); + JSObject* jsObject = toJS(object); - JSValuePtr jsValue = toJS(value); + JSValue jsValue = toJS(exec, value); - jsObject->setPrototype(jsValue->isObject() ? jsValue : jsNull()); + jsObject->setPrototype(jsValue.isObject() ? jsValue : jsNull()); } bool JSObjectHasProperty(JSContextRef ctx, JSObjectRef object, JSStringRef propertyName) @@ -257,13 +267,13 @@ JSValueRef JSObjectGetProperty(JSContextRef ctx, JSObjectRef object, JSStringRef JSObject* jsObject = toJS(object); - JSValuePtr jsValue = jsObject->get(exec, propertyName->identifier(&exec->globalData())); + JSValue jsValue = jsObject->get(exec, propertyName->identifier(&exec->globalData())); if (exec->hadException()) { if (exception) - *exception = toRef(exec->exception()); + *exception = toRef(exec, exec->exception()); exec->clearException(); } - return toRef(jsValue); + return toRef(exec, jsValue); } void JSObjectSetProperty(JSContextRef ctx, JSObjectRef object, JSStringRef propertyName, JSValueRef value, JSPropertyAttributes attributes, JSValueRef* exception) @@ -274,7 +284,7 @@ void JSObjectSetProperty(JSContextRef ctx, JSObjectRef object, JSStringRef prope JSObject* jsObject = toJS(object); Identifier name(propertyName->identifier(&exec->globalData())); - JSValuePtr jsValue = toJS(value); + JSValue jsValue = toJS(exec, value); if (attributes && !jsObject->hasProperty(exec, name)) jsObject->putWithAttributes(exec, name, jsValue, attributes); @@ -285,7 +295,7 @@ void JSObjectSetProperty(JSContextRef ctx, JSObjectRef object, JSStringRef prope if (exec->hadException()) { if (exception) - *exception = toRef(exec->exception()); + *exception = toRef(exec, exec->exception()); exec->clearException(); } } @@ -298,13 +308,13 @@ JSValueRef JSObjectGetPropertyAtIndex(JSContextRef ctx, JSObjectRef object, unsi JSObject* jsObject = toJS(object); - JSValuePtr jsValue = jsObject->get(exec, propertyIndex); + JSValue jsValue = jsObject->get(exec, propertyIndex); if (exec->hadException()) { if (exception) - *exception = toRef(exec->exception()); + *exception = toRef(exec, exec->exception()); exec->clearException(); } - return toRef(jsValue); + return toRef(exec, jsValue); } @@ -315,12 +325,12 @@ void JSObjectSetPropertyAtIndex(JSContextRef ctx, JSObjectRef object, unsigned p JSLock lock(exec); JSObject* jsObject = toJS(object); - JSValuePtr jsValue = toJS(value); + JSValue jsValue = toJS(exec, value); jsObject->put(exec, propertyIndex, jsValue); if (exec->hadException()) { if (exception) - *exception = toRef(exec->exception()); + *exception = toRef(exec, exec->exception()); exec->clearException(); } } @@ -336,7 +346,7 @@ bool JSObjectDeleteProperty(JSContextRef ctx, JSObjectRef object, JSStringRef pr bool result = jsObject->deleteProperty(exec, propertyName->identifier(&exec->globalData())); if (exec->hadException()) { if (exception) - *exception = toRef(exec->exception()); + *exception = toRef(exec, exec->exception()); exec->clearException(); } return result; @@ -387,19 +397,19 @@ JSValueRef JSObjectCallAsFunction(JSContextRef ctx, JSObjectRef object, JSObject if (!jsThisObject) jsThisObject = exec->globalThisValue(); - ArgList argList; + MarkedArgumentBuffer argList; for (size_t i = 0; i < argumentCount; i++) - argList.append(toJS(arguments[i])); + argList.append(toJS(exec, arguments[i])); CallData callData; CallType callType = jsObject->getCallData(callData); if (callType == CallTypeNone) return 0; - JSValueRef result = toRef(call(exec, jsObject, callType, callData, jsThisObject, argList)); + JSValueRef result = toRef(exec, call(exec, jsObject, callType, callData, jsThisObject, argList)); if (exec->hadException()) { if (exception) - *exception = toRef(exec->exception()); + *exception = toRef(exec, exec->exception()); exec->clearException(); result = 0; } @@ -426,13 +436,13 @@ JSObjectRef JSObjectCallAsConstructor(JSContextRef ctx, JSObjectRef object, size if (constructType == ConstructTypeNone) return 0; - ArgList argList; + MarkedArgumentBuffer argList; for (size_t i = 0; i < argumentCount; i++) - argList.append(toJS(arguments[i])); + argList.append(toJS(exec, arguments[i])); JSObjectRef result = toRef(construct(exec, jsObject, constructType, constructData, argList)); if (exec->hadException()) { if (exception) - *exception = toRef(exec->exception()); + *exception = toRef(exec, exec->exception()); exec->clearException(); result = 0; } @@ -465,7 +475,7 @@ JSPropertyNameArrayRef JSObjectCopyPropertyNames(JSContextRef ctx, JSObjectRef o jsObject->getPropertyNames(exec, array); size_t size = array.size(); - propertyNames->array.reserveCapacity(size); + propertyNames->array.reserveInitialCapacity(size); for (size_t i = 0; i < size; ++i) propertyNames->array.append(JSRetainPtr(Adopt, OpaqueJSString::create(array[i].ustring()).releaseRef())); diff --git a/src/3rdparty/webkit/JavaScriptCore/API/JSObjectRef.h b/src/3rdparty/webkit/JavaScriptCore/API/JSObjectRef.h index 461764c..3e8b0eb 100644 --- a/src/3rdparty/webkit/JavaScriptCore/API/JSObjectRef.h +++ b/src/3rdparty/webkit/JavaScriptCore/API/JSObjectRef.h @@ -441,7 +441,7 @@ JS_EXPORT JSObjectRef JSObjectMakeConstructor(JSContextRef ctx, JSClassRef jsCla @discussion The behavior of this function does not exactly match the behavior of the built-in Array constructor. Specifically, if one argument is supplied, this function returns an array with one element. */ -JS_EXPORT JSObjectRef JSObjectMakeArray(JSContextRef ctx, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception) AVAILABLE_AFTER_WEBKIT_VERSION_3_1; +JS_EXPORT JSObjectRef JSObjectMakeArray(JSContextRef ctx, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception) AVAILABLE_IN_WEBKIT_VERSION_4_0; /*! @function @@ -452,7 +452,7 @@ JS_EXPORT JSObjectRef JSObjectMakeArray(JSContextRef ctx, size_t argumentCount, @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 JSObject that is a Date. */ -JS_EXPORT JSObjectRef JSObjectMakeDate(JSContextRef ctx, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception) AVAILABLE_AFTER_WEBKIT_VERSION_3_1; +JS_EXPORT JSObjectRef JSObjectMakeDate(JSContextRef ctx, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception) AVAILABLE_IN_WEBKIT_VERSION_4_0; /*! @function @@ -463,7 +463,7 @@ JS_EXPORT JSObjectRef JSObjectMakeDate(JSContextRef ctx, size_t argumentCount, c @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 JSObject that is a Error. */ -JS_EXPORT JSObjectRef JSObjectMakeError(JSContextRef ctx, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception) AVAILABLE_AFTER_WEBKIT_VERSION_3_1; +JS_EXPORT JSObjectRef JSObjectMakeError(JSContextRef ctx, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception) AVAILABLE_IN_WEBKIT_VERSION_4_0; /*! @function @@ -474,7 +474,7 @@ JS_EXPORT JSObjectRef JSObjectMakeError(JSContextRef ctx, size_t argumentCount, @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 JSObject that is a RegExp. */ -JS_EXPORT JSObjectRef JSObjectMakeRegExp(JSContextRef ctx, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception) AVAILABLE_AFTER_WEBKIT_VERSION_3_1; +JS_EXPORT JSObjectRef JSObjectMakeRegExp(JSContextRef ctx, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception) AVAILABLE_IN_WEBKIT_VERSION_4_0; /*! @function diff --git a/src/3rdparty/webkit/JavaScriptCore/API/JSStringRef.cpp b/src/3rdparty/webkit/JavaScriptCore/API/JSStringRef.cpp index 6452ffc..8e236e4 100644 --- a/src/3rdparty/webkit/JavaScriptCore/API/JSStringRef.cpp +++ b/src/3rdparty/webkit/JavaScriptCore/API/JSStringRef.cpp @@ -26,6 +26,7 @@ #include "config.h" #include "JSStringRef.h" +#include "InitializeThreading.h" #include "OpaqueJSString.h" #include @@ -34,11 +35,13 @@ using namespace WTF::Unicode; JSStringRef JSStringCreateWithCharacters(const JSChar* chars, size_t numChars) { + initializeThreading(); return OpaqueJSString::create(chars, numChars).releaseRef(); } JSStringRef JSStringCreateWithUTF8CString(const char* string) { + initializeThreading(); if (string) { size_t length = strlen(string); Vector buffer(length); diff --git a/src/3rdparty/webkit/JavaScriptCore/API/JSStringRefCF.cpp b/src/3rdparty/webkit/JavaScriptCore/API/JSStringRefCF.cpp index 65edd09..d1f6fe3 100644 --- a/src/3rdparty/webkit/JavaScriptCore/API/JSStringRefCF.cpp +++ b/src/3rdparty/webkit/JavaScriptCore/API/JSStringRefCF.cpp @@ -27,6 +27,7 @@ #include "JSStringRefCF.h" #include "APICast.h" +#include "InitializeThreading.h" #include "JSStringRef.h" #include "OpaqueJSString.h" #include @@ -35,7 +36,11 @@ JSStringRef JSStringCreateWithCFString(CFStringRef string) { - CFIndex length = CFStringGetLength(string); + JSC::initializeThreading(); + + // We cannot use CFIndex here since CFStringGetLength can return values larger than + // it can hold. () + size_t length = CFStringGetLength(string); if (length) { OwnArrayPtr buffer(new UniChar[length]); CFStringGetCharacters(string, CFRangeMake(0, length), buffer.get()); @@ -44,7 +49,7 @@ JSStringRef JSStringCreateWithCFString(CFStringRef string) } else { return OpaqueJSString::create(0, 0).releaseRef(); } - } +} CFStringRef JSStringCopyCFString(CFAllocatorRef alloc, JSStringRef string) { diff --git a/src/3rdparty/webkit/JavaScriptCore/API/JSValueRef.cpp b/src/3rdparty/webkit/JavaScriptCore/API/JSValueRef.cpp index 351a105..2207181 100644 --- a/src/3rdparty/webkit/JavaScriptCore/API/JSValueRef.cpp +++ b/src/3rdparty/webkit/JavaScriptCore/API/JSValueRef.cpp @@ -41,66 +41,99 @@ #include // for std::min -JSType JSValueGetType(JSContextRef, JSValueRef value) +JSType JSValueGetType(JSContextRef ctx, JSValueRef value) { - JSC::JSValuePtr jsValue = toJS(value); - if (jsValue->isUndefined()) + JSC::ExecState* exec = toJS(ctx); + exec->globalData().heap.registerThread(); + JSC::JSLock lock(exec); + + JSC::JSValue jsValue = toJS(exec, value); + + if (jsValue.isUndefined()) return kJSTypeUndefined; - if (jsValue->isNull()) + if (jsValue.isNull()) return kJSTypeNull; - if (jsValue->isBoolean()) + if (jsValue.isBoolean()) return kJSTypeBoolean; - if (jsValue->isNumber()) + if (jsValue.isNumber()) return kJSTypeNumber; - if (jsValue->isString()) + if (jsValue.isString()) return kJSTypeString; - ASSERT(jsValue->isObject()); + ASSERT(jsValue.isObject()); return kJSTypeObject; } using namespace JSC; // placed here to avoid conflict between JSC::JSType and JSType, above. -bool JSValueIsUndefined(JSContextRef, JSValueRef value) +bool JSValueIsUndefined(JSContextRef ctx, JSValueRef value) { - JSValuePtr jsValue = toJS(value); - return jsValue->isUndefined(); + ExecState* exec = toJS(ctx); + exec->globalData().heap.registerThread(); + JSLock lock(exec); + + JSValue jsValue = toJS(exec, value); + return jsValue.isUndefined(); } -bool JSValueIsNull(JSContextRef, JSValueRef value) +bool JSValueIsNull(JSContextRef ctx, JSValueRef value) { - JSValuePtr jsValue = toJS(value); - return jsValue->isNull(); + ExecState* exec = toJS(ctx); + exec->globalData().heap.registerThread(); + JSLock lock(exec); + + JSValue jsValue = toJS(exec, value); + return jsValue.isNull(); } -bool JSValueIsBoolean(JSContextRef, JSValueRef value) +bool JSValueIsBoolean(JSContextRef ctx, JSValueRef value) { - JSValuePtr jsValue = toJS(value); - return jsValue->isBoolean(); + ExecState* exec = toJS(ctx); + exec->globalData().heap.registerThread(); + JSLock lock(exec); + + JSValue jsValue = toJS(exec, value); + return jsValue.isBoolean(); } -bool JSValueIsNumber(JSContextRef, JSValueRef value) +bool JSValueIsNumber(JSContextRef ctx, JSValueRef value) { - JSValuePtr jsValue = toJS(value); - return jsValue->isNumber(); + ExecState* exec = toJS(ctx); + exec->globalData().heap.registerThread(); + JSLock lock(exec); + + JSValue jsValue = toJS(exec, value); + return jsValue.isNumber(); } -bool JSValueIsString(JSContextRef, JSValueRef value) +bool JSValueIsString(JSContextRef ctx, JSValueRef value) { - JSValuePtr jsValue = toJS(value); - return jsValue->isString(); + ExecState* exec = toJS(ctx); + exec->globalData().heap.registerThread(); + JSLock lock(exec); + + JSValue jsValue = toJS(exec, value); + return jsValue.isString(); } -bool JSValueIsObject(JSContextRef, JSValueRef value) +bool JSValueIsObject(JSContextRef ctx, JSValueRef value) { - JSValuePtr jsValue = toJS(value); - return jsValue->isObject(); + ExecState* exec = toJS(ctx); + exec->globalData().heap.registerThread(); + JSLock lock(exec); + + JSValue jsValue = toJS(exec, value); + return jsValue.isObject(); } -bool JSValueIsObjectOfClass(JSContextRef, JSValueRef value, JSClassRef jsClass) +bool JSValueIsObjectOfClass(JSContextRef ctx, JSValueRef value, JSClassRef jsClass) { - JSValuePtr jsValue = toJS(value); + ExecState* exec = toJS(ctx); + exec->globalData().heap.registerThread(); + JSLock lock(exec); + + JSValue jsValue = toJS(exec, value); - if (JSObject* o = jsValue->getObject()) { + if (JSObject* o = jsValue.getObject()) { if (o->inherits(&JSCallbackObject::info)) return static_cast*>(o)->inherits(jsClass); else if (o->inherits(&JSCallbackObject::info)) @@ -115,25 +148,28 @@ bool JSValueIsEqual(JSContextRef ctx, JSValueRef a, JSValueRef b, JSValueRef* ex exec->globalData().heap.registerThread(); JSLock lock(exec); - JSValuePtr jsA = toJS(a); - JSValuePtr jsB = toJS(b); + JSValue jsA = toJS(exec, a); + JSValue jsB = toJS(exec, b); - bool result = equal(exec, jsA, jsB); // false if an exception is thrown + bool result = JSValue::equal(exec, jsA, jsB); // false if an exception is thrown if (exec->hadException()) { if (exception) - *exception = toRef(exec->exception()); + *exception = toRef(exec, exec->exception()); exec->clearException(); } return result; } -bool JSValueIsStrictEqual(JSContextRef, JSValueRef a, JSValueRef b) +bool JSValueIsStrictEqual(JSContextRef ctx, JSValueRef a, JSValueRef b) { - JSValuePtr jsA = toJS(a); - JSValuePtr jsB = toJS(b); - - bool result = strictEqual(jsA, jsB); - return result; + ExecState* exec = toJS(ctx); + exec->globalData().heap.registerThread(); + JSLock lock(exec); + + JSValue jsA = toJS(exec, a); + JSValue jsB = toJS(exec, b); + + return JSValue::strictEqual(jsA, jsB); } bool JSValueIsInstanceOfConstructor(JSContextRef ctx, JSValueRef value, JSObjectRef constructor, JSValueRef* exception) @@ -142,32 +178,45 @@ bool JSValueIsInstanceOfConstructor(JSContextRef ctx, JSValueRef value, JSObject exec->globalData().heap.registerThread(); JSLock lock(exec); - JSValuePtr jsValue = toJS(value); + JSValue jsValue = toJS(exec, value); + JSObject* jsConstructor = toJS(constructor); if (!jsConstructor->structure()->typeInfo().implementsHasInstance()) return false; bool result = jsConstructor->hasInstance(exec, jsValue, jsConstructor->get(exec, exec->propertyNames().prototype)); // false if an exception is thrown if (exec->hadException()) { if (exception) - *exception = toRef(exec->exception()); + *exception = toRef(exec, exec->exception()); exec->clearException(); } return result; } -JSValueRef JSValueMakeUndefined(JSContextRef) +JSValueRef JSValueMakeUndefined(JSContextRef ctx) { - return toRef(jsUndefined()); + ExecState* exec = toJS(ctx); + exec->globalData().heap.registerThread(); + JSLock lock(exec); + + return toRef(exec, jsUndefined()); } -JSValueRef JSValueMakeNull(JSContextRef) +JSValueRef JSValueMakeNull(JSContextRef ctx) { - return toRef(jsNull()); + ExecState* exec = toJS(ctx); + exec->globalData().heap.registerThread(); + JSLock lock(exec); + + return toRef(exec, jsNull()); } -JSValueRef JSValueMakeBoolean(JSContextRef, bool value) +JSValueRef JSValueMakeBoolean(JSContextRef ctx, bool value) { - return toRef(jsBoolean(value)); + ExecState* exec = toJS(ctx); + exec->globalData().heap.registerThread(); + JSLock lock(exec); + + return toRef(exec, jsBoolean(value)); } JSValueRef JSValueMakeNumber(JSContextRef ctx, double value) @@ -176,7 +225,7 @@ JSValueRef JSValueMakeNumber(JSContextRef ctx, double value) exec->globalData().heap.registerThread(); JSLock lock(exec); - return toRef(jsNumber(exec, value)); + return toRef(exec, jsNumber(exec, value)); } JSValueRef JSValueMakeString(JSContextRef ctx, JSStringRef string) @@ -185,14 +234,17 @@ JSValueRef JSValueMakeString(JSContextRef ctx, JSStringRef string) exec->globalData().heap.registerThread(); JSLock lock(exec); - return toRef(jsString(exec, string->ustring())); + return toRef(exec, jsString(exec, string->ustring())); } bool JSValueToBoolean(JSContextRef ctx, JSValueRef value) { ExecState* exec = toJS(ctx); - JSValuePtr jsValue = toJS(value); - return jsValue->toBoolean(exec); + exec->globalData().heap.registerThread(); + JSLock lock(exec); + + JSValue jsValue = toJS(exec, value); + return jsValue.toBoolean(exec); } double JSValueToNumber(JSContextRef ctx, JSValueRef value, JSValueRef* exception) @@ -201,12 +253,12 @@ double JSValueToNumber(JSContextRef ctx, JSValueRef value, JSValueRef* exception exec->globalData().heap.registerThread(); JSLock lock(exec); - JSValuePtr jsValue = toJS(value); + JSValue jsValue = toJS(exec, value); - double number = jsValue->toNumber(exec); + double number = jsValue.toNumber(exec); if (exec->hadException()) { if (exception) - *exception = toRef(exec->exception()); + *exception = toRef(exec, exec->exception()); exec->clearException(); number = NaN; } @@ -219,12 +271,12 @@ JSStringRef JSValueToStringCopy(JSContextRef ctx, JSValueRef value, JSValueRef* exec->globalData().heap.registerThread(); JSLock lock(exec); - JSValuePtr jsValue = toJS(value); + JSValue jsValue = toJS(exec, value); - RefPtr stringRef(OpaqueJSString::create(jsValue->toString(exec))); + RefPtr stringRef(OpaqueJSString::create(jsValue.toString(exec))); if (exec->hadException()) { if (exception) - *exception = toRef(exec->exception()); + *exception = toRef(exec, exec->exception()); exec->clearException(); stringRef.clear(); } @@ -237,12 +289,12 @@ JSObjectRef JSValueToObject(JSContextRef ctx, JSValueRef value, JSValueRef* exce exec->globalData().heap.registerThread(); JSLock lock(exec); - JSValuePtr jsValue = toJS(value); + JSValue jsValue = toJS(exec, value); - JSObjectRef objectRef = toRef(jsValue->toObject(exec)); + JSObjectRef objectRef = toRef(jsValue.toObject(exec)); if (exec->hadException()) { if (exception) - *exception = toRef(exec->exception()); + *exception = toRef(exec, exec->exception()); exec->clearException(); objectRef = 0; } @@ -255,7 +307,7 @@ void JSValueProtect(JSContextRef ctx, JSValueRef value) exec->globalData().heap.registerThread(); JSLock lock(exec); - JSValuePtr jsValue = toJS(value); + JSValue jsValue = toJS(exec, value); gcProtect(jsValue); } @@ -265,6 +317,6 @@ void JSValueUnprotect(JSContextRef ctx, JSValueRef value) exec->globalData().heap.registerThread(); JSLock lock(exec); - JSValuePtr jsValue = toJS(value); + JSValue jsValue = toJS(exec, value); gcUnprotect(jsValue); } diff --git a/src/3rdparty/webkit/JavaScriptCore/API/WebKitAvailability.h b/src/3rdparty/webkit/JavaScriptCore/API/WebKitAvailability.h index 1273360..8402528 100644 --- a/src/3rdparty/webkit/JavaScriptCore/API/WebKitAvailability.h +++ b/src/3rdparty/webkit/JavaScriptCore/API/WebKitAvailability.h @@ -38,6 +38,7 @@ #define WEBKIT_VERSION_2_0 0x0200 #define WEBKIT_VERSION_3_0 0x0300 #define WEBKIT_VERSION_3_1 0x0310 +#define WEBKIT_VERSION_4_0 0x0400 #define WEBKIT_VERSION_LATEST 0x9999 #ifdef __APPLE__ @@ -640,123 +641,123 @@ /* - * AVAILABLE_AFTER_WEBKIT_VERSION_3_1 + * AVAILABLE_IN_WEBKIT_VERSION_4_0 * - * Used on declarations introduced after WebKit 3.1 + * Used on declarations introduced in WebKit 4.0 */ #if WEBKIT_VERSION_MAX_ALLOWED < WEBKIT_VERSION_LATEST - #define AVAILABLE_AFTER_WEBKIT_VERSION_3_1 UNAVAILABLE_ATTRIBUTE + #define AVAILABLE_IN_WEBKIT_VERSION_4_0 UNAVAILABLE_ATTRIBUTE #elif WEBKIT_VERSION_MIN_REQUIRED < WEBKIT_VERSION_LATEST - #define AVAILABLE_AFTER_WEBKIT_VERSION_3_1 WEAK_IMPORT_ATTRIBUTE + #define AVAILABLE_IN_WEBKIT_VERSION_4_0 WEAK_IMPORT_ATTRIBUTE #else - #define AVAILABLE_AFTER_WEBKIT_VERSION_3_1 + #define AVAILABLE_IN_WEBKIT_VERSION_4_0 #endif /* - * AVAILABLE_AFTER_WEBKIT_VERSION_3_1_BUT_DEPRECATED + * AVAILABLE_IN_WEBKIT_VERSION_4_0_BUT_DEPRECATED * - * Used on declarations introduced after WebKit 3.1, - * and deprecated after WebKit 3.1 + * Used on declarations introduced in WebKit 4.0, + * and deprecated in WebKit 4.0 */ #if WEBKIT_VERSION_MIN_REQUIRED >= WEBKIT_VERSION_LATEST - #define AVAILABLE_AFTER_WEBKIT_VERSION_3_1_BUT_DEPRECATED DEPRECATED_ATTRIBUTE + #define AVAILABLE_IN_WEBKIT_VERSION_4_0_BUT_DEPRECATED DEPRECATED_ATTRIBUTE #else - #define AVAILABLE_AFTER_WEBKIT_VERSION_3_1_BUT_DEPRECATED AVAILABLE_AFTER_WEBKIT_VERSION_3_1 + #define AVAILABLE_IN_WEBKIT_VERSION_4_0_BUT_DEPRECATED AVAILABLE_IN_WEBKIT_VERSION_4_0 #endif /* - * AVAILABLE_WEBKIT_VERSION_1_0_AND_LATER_BUT_DEPRECATED_AFTER_WEBKIT_VERSION_3_1 + * AVAILABLE_WEBKIT_VERSION_1_0_AND_LATER_BUT_DEPRECATED_IN_WEBKIT_VERSION_4_0 * * Used on declarations introduced in WebKit 1.0, - * but later deprecated after WebKit 3.1 + * but later deprecated in WebKit 4.0 */ #if WEBKIT_VERSION_MIN_REQUIRED >= WEBKIT_VERSION_LATEST - #define AVAILABLE_WEBKIT_VERSION_1_0_AND_LATER_BUT_DEPRECATED_AFTER_WEBKIT_VERSION_3_1 DEPRECATED_ATTRIBUTE + #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_AFTER_WEBKIT_VERSION_3_1 AVAILABLE_WEBKIT_VERSION_1_0_AND_LATER + #define AVAILABLE_WEBKIT_VERSION_1_0_AND_LATER_BUT_DEPRECATED_IN_WEBKIT_VERSION_4_0 AVAILABLE_WEBKIT_VERSION_1_0_AND_LATER #endif /* - * AVAILABLE_WEBKIT_VERSION_1_1_AND_LATER_BUT_DEPRECATED_AFTER_WEBKIT_VERSION_3_1 + * AVAILABLE_WEBKIT_VERSION_1_1_AND_LATER_BUT_DEPRECATED_IN_WEBKIT_VERSION_4_0 * * Used on declarations introduced in WebKit 1.1, - * but later deprecated after WebKit 3.1 + * but later deprecated in WebKit 4.0 */ #if WEBKIT_VERSION_MIN_REQUIRED >= WEBKIT_VERSION_LATEST - #define AVAILABLE_WEBKIT_VERSION_1_1_AND_LATER_BUT_DEPRECATED_AFTER_WEBKIT_VERSION_3_1 DEPRECATED_ATTRIBUTE + #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_AFTER_WEBKIT_VERSION_3_1 AVAILABLE_WEBKIT_VERSION_1_1_AND_LATER + #define AVAILABLE_WEBKIT_VERSION_1_1_AND_LATER_BUT_DEPRECATED_IN_WEBKIT_VERSION_4_0 AVAILABLE_WEBKIT_VERSION_1_1_AND_LATER #endif /* - * AVAILABLE_WEBKIT_VERSION_1_2_AND_LATER_BUT_DEPRECATED_AFTER_WEBKIT_VERSION_3_1 + * AVAILABLE_WEBKIT_VERSION_1_2_AND_LATER_BUT_DEPRECATED_IN_WEBKIT_VERSION_4_0 * * Used on declarations introduced in WebKit 1.2, - * but later deprecated after WebKit 3.1 + * but later deprecated in WebKit 4.0 */ #if WEBKIT_VERSION_MIN_REQUIRED >= WEBKIT_VERSION_LATEST - #define AVAILABLE_WEBKIT_VERSION_1_2_AND_LATER_BUT_DEPRECATED_AFTER_WEBKIT_VERSION_3_1 DEPRECATED_ATTRIBUTE + #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_AFTER_WEBKIT_VERSION_3_1 AVAILABLE_WEBKIT_VERSION_1_2_AND_LATER + #define AVAILABLE_WEBKIT_VERSION_1_2_AND_LATER_BUT_DEPRECATED_IN_WEBKIT_VERSION_4_0 AVAILABLE_WEBKIT_VERSION_1_2_AND_LATER #endif /* - * AVAILABLE_WEBKIT_VERSION_1_3_AND_LATER_BUT_DEPRECATED_AFTER_WEBKIT_VERSION_3_1 + * AVAILABLE_WEBKIT_VERSION_1_3_AND_LATER_BUT_DEPRECATED_IN_WEBKIT_VERSION_4_0 * * Used on declarations introduced in WebKit 1.3, - * but later deprecated after WebKit 3.1 + * but later deprecated in WebKit 4.0 */ #if WEBKIT_VERSION_MIN_REQUIRED >= WEBKIT_VERSION_LATEST - #define AVAILABLE_WEBKIT_VERSION_1_3_AND_LATER_BUT_DEPRECATED_AFTER_WEBKIT_VERSION_3_1 DEPRECATED_ATTRIBUTE + #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_AFTER_WEBKIT_VERSION_3_1 AVAILABLE_WEBKIT_VERSION_1_3_AND_LATER + #define AVAILABLE_WEBKIT_VERSION_1_3_AND_LATER_BUT_DEPRECATED_IN_WEBKIT_VERSION_4_0 AVAILABLE_WEBKIT_VERSION_1_3_AND_LATER #endif /* - * AVAILABLE_WEBKIT_VERSION_2_0_AND_LATER_BUT_DEPRECATED_AFTER_WEBKIT_VERSION_3_1 + * AVAILABLE_WEBKIT_VERSION_2_0_AND_LATER_BUT_DEPRECATED_IN_WEBKIT_VERSION_4_0 * * Used on declarations introduced in WebKit 2.0, - * but later deprecated after WebKit 3.1 + * but later deprecated in WebKit 4.0 */ #if WEBKIT_VERSION_MIN_REQUIRED >= WEBKIT_VERSION_LATEST - #define AVAILABLE_WEBKIT_VERSION_2_0_AND_LATER_BUT_DEPRECATED_AFTER_WEBKIT_VERSION_3_1 DEPRECATED_ATTRIBUTE + #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_AFTER_WEBKIT_VERSION_3_1 AVAILABLE_WEBKIT_VERSION_2_0_AND_LATER + #define AVAILABLE_WEBKIT_VERSION_2_0_AND_LATER_BUT_DEPRECATED_IN_WEBKIT_VERSION_4_0 AVAILABLE_WEBKIT_VERSION_2_0_AND_LATER #endif /* - * AVAILABLE_WEBKIT_VERSION_3_0_AND_LATER_BUT_DEPRECATED_AFTER_WEBKIT_VERSION_3_1 + * AVAILABLE_WEBKIT_VERSION_3_0_AND_LATER_BUT_DEPRECATED_IN_WEBKIT_VERSION_4_0 * * Used on declarations introduced in WebKit 3.0, - * but later deprecated after WebKit 3.1 + * but later deprecated in WebKit 4.0 */ #if WEBKIT_VERSION_MIN_REQUIRED >= WEBKIT_VERSION_LATEST - #define AVAILABLE_WEBKIT_VERSION_3_0_AND_LATER_BUT_DEPRECATED_AFTER_WEBKIT_VERSION_3_1 DEPRECATED_ATTRIBUTE + #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_AFTER_WEBKIT_VERSION_3_1 AVAILABLE_WEBKIT_VERSION_3_0_AND_LATER + #define AVAILABLE_WEBKIT_VERSION_3_0_AND_LATER_BUT_DEPRECATED_IN_WEBKIT_VERSION_4_0 AVAILABLE_WEBKIT_VERSION_3_0_AND_LATER #endif /* - * AVAILABLE_WEBKIT_VERSION_3_1_AND_LATER_BUT_DEPRECATED_AFTER_WEBKIT_VERSION_3_1 + * AVAILABLE_WEBKIT_VERSION_3_1_AND_LATER_BUT_DEPRECATED_IN_WEBKIT_VERSION_4_0 * * Used on declarations introduced in WebKit 3.1, - * but later deprecated after WebKit 3.1 + * but later deprecated in WebKit 4.0 */ #if WEBKIT_VERSION_MIN_REQUIRED >= WEBKIT_VERSION_LATEST - #define AVAILABLE_WEBKIT_VERSION_3_1_AND_LATER_BUT_DEPRECATED_AFTER_WEBKIT_VERSION_3_1 DEPRECATED_ATTRIBUTE + #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_AFTER_WEBKIT_VERSION_3_1 AVAILABLE_WEBKIT_VERSION_3_1_AND_LATER + #define AVAILABLE_WEBKIT_VERSION_3_1_AND_LATER_BUT_DEPRECATED_IN_WEBKIT_VERSION_4_0 AVAILABLE_WEBKIT_VERSION_3_1_AND_LATER #endif /* - * DEPRECATED_AFTER_WEBKIT_VERSION_3_1 + * DEPRECATED_IN_WEBKIT_VERSION_4_0 * - * Used on types deprecated after WebKit 3.1 + * Used on types deprecated in WebKit 4.0 */ #if WEBKIT_VERSION_MIN_REQUIRED >= WEBKIT_VERSION_LATEST - #define DEPRECATED_AFTER_WEBKIT_VERSION_3_1 DEPRECATED_ATTRIBUTE + #define DEPRECATED_IN_WEBKIT_VERSION_4_0 DEPRECATED_ATTRIBUTE #else - #define DEPRECATED_AFTER_WEBKIT_VERSION_3_1 + #define DEPRECATED_IN_WEBKIT_VERSION_4_0 #endif diff --git a/src/3rdparty/webkit/JavaScriptCore/ChangeLog b/src/3rdparty/webkit/JavaScriptCore/ChangeLog index 3321570..fbda515 100644 --- a/src/3rdparty/webkit/JavaScriptCore/ChangeLog +++ b/src/3rdparty/webkit/JavaScriptCore/ChangeLog @@ -1,123 +1,13253 @@ +2009-06-08 Tor Arne Vestbø + + Reviewed by Simon Hausmann. + + [Qt] Use $QMAKE_PATH_SEP instead of hardcoded / to fix Windows build + + * JavaScriptCore.pri: + * JavaScriptCore.pro: + * jsc.pro: + +2009-06-07 Gavin Barraclough + + RS by Sam Weinig. + + Remove bonus bogus \n from last commit. + + * jit/JITStubs.cpp: + (JSC::): + +2009-06-07 Gavin Barraclough + + Reviewed by Sam Weinig. + + Change the implementation of op_throw so the stub function always modifies its + return address - if it doesn't find a 'catch' it will switch to a trampoline + to force a return from JIT execution. This saves memory, by avoiding the need + for a unique return for every op_throw. + + * jit/JITOpcodes.cpp: + (JSC::JIT::emit_op_throw): + JITStubs::cti_op_throw now always changes its return address, + remove return code generated after the stub call (this is now + handled by ctiOpThrowNotCaught). + * jit/JITStubs.cpp: + (JSC::): + Add ctiOpThrowNotCaught definitions. + (JSC::JITStubs::DEFINE_STUB_FUNCTION): + Change cti_op_throw to always change its return address. + * jit/JITStubs.h: + Add ctiOpThrowNotCaught declaration. + +2009-06-05 Gavin Barraclough + + Rudder stamped by Sam Weinig. + + Add missing ASSERT. + + * assembler/X86Assembler.h: + (JSC::X86Assembler::getRelocatedAddress): + +2009-06-05 Gavin Barraclough + + Reviewed by Sam Weinig. + + Switch storePtrWithPatch to take the initial immediate value as an argument. + + * assembler/MacroAssemblerX86.h: + (JSC::MacroAssemblerX86::storePtrWithPatch): + * assembler/MacroAssemblerX86_64.h: + (JSC::MacroAssemblerX86_64::storePtrWithPatch): + * jit/JITOpcodes.cpp: + (JSC::JIT::emit_op_jsr): + +2009-06-05 Gavin Barraclough + + Reviewed by Sam Weinig. + + Remove patchLength..tByIdExternalLoadPrefix magic numbers from JIT.h. + + These aren't really suitable values to be tracking within common code + of the JIT, since they are not (and realistically cannot) be checked + by ASSERTs, as the other repatch offsets are. Move this functionality + (skipping the REX prefix when patching load instructions to LEAs on + x86-64) into the X86Assembler. + + * assembler/AbstractMacroAssembler.h: + (JSC::AbstractMacroAssembler::CodeLocationInstruction::repatchLoadPtrToLEA): + * assembler/X86Assembler.h: + (JSC::X86Assembler::repatchLoadPtrToLEA): + * jit/JIT.h: + * jit/JITPropertyAccess.cpp: + (JSC::JIT::patchGetByIdSelf): + (JSC::JIT::patchPutByIdReplace): + +2009-06-05 Shinichiro Hamaji + + Bug 26160: Compile fails in MacOSX when GNU fileutils are installed + + + + Reviewed by Alexey Proskuryakov. + + Use /bin/ln instead of ln for cases where this command is used with -h option. + As this option is not supported by GNU fileutils, this change helps users + who have GNU fileutils in their PATH. + + * JavaScriptCore.xcodeproj/project.pbxproj: + +2009-06-05 Gavin Barraclough + + Reviewed by Oliver Hunt. + + Remove DoubleNotEqual floating point comparison condition for now - + it is not used, and it is unclear the semantics are correct (I think + this comparison would actually give you not-equal-or-unordered, which + might be what is wanted... we can revisit this interface & get it + right when required). + + Also, fix asserts in branchArith32 ops. All adds & subs can check + for Signed, multiply only sets OF so can only check for overflow. + + * assembler/MacroAssemblerX86Common.h: + (JSC::MacroAssemblerX86Common::): + (JSC::MacroAssemblerX86Common::branchAdd32): + (JSC::MacroAssemblerX86Common::branchMul32): + (JSC::MacroAssemblerX86Common::branchSub32): + +2009-06-05 Gavin Barraclough + + Reviewed by Oliver Hunt. + + Minor tidy up in JITStubs. + + * jit/JITStubs.cpp: + (JSC::StackHack::StackHack): + * jit/JITStubs.h: + +2009-06-05 Koen Kooi + + Reviewed by Xan Lopez. + + Build fix for glib unicode backend. + + * wtf/unicode/glib/UnicodeMacrosFromICU.h: + +2009-06-05 Gavin Barraclough + + Reviewed by Oliver Hunt. + + 3 tiny cleanups: + + * assembler/MacroAssemblerX86.h: + * assembler/MacroAssemblerX86_64.h: + (JSC::MacroAssemblerX86_64::storePtrWithPatch): + store*() methods should take an ImplicitAddress, rather than an Address. + * assembler/X86Assembler.h: + Make patchPointer private. + * jit/JITOpcodes.cpp: + (JSC::JIT::emit_op_ret): + Remove empty line at end of function. + +2009-06-05 Gavin Barraclough + + Reviewed by Oliver Hunt. + + Encapsulate many uses of void* in the assembler & jit with types that provide + more semantic information. The new types are: + + * MacroAssemblerCodePtr - this wraps a pointer into JIT generated code. + * FunctionPtr - this wraps a pointer to a C/C++ function in JSC. + * ReturnAddressPtr - this wraps a return address resulting from a 'call' instruction. + + Wrapping these types allows for stronger type-checking than is possible with everything + represented a void*. For example, it is now enforced by the type system that near + calls can only be linked to JIT code and not to C functions in JSC (this was previously + required, but could not be enforced on the interface). + + * assembler/AbstractMacroAssembler.h: + (JSC::AbstractMacroAssembler::CodeLocationCommon::CodeLocationCommon): + (JSC::AbstractMacroAssembler::CodeLocationCommon::dataLocation): + (JSC::AbstractMacroAssembler::CodeLocationCommon::executableAddress): + (JSC::AbstractMacroAssembler::CodeLocationCommon::reset): + (JSC::AbstractMacroAssembler::CodeLocationInstruction::repatchLoadToLEA): + (JSC::AbstractMacroAssembler::CodeLocationInstruction::CodeLocationInstruction): + (JSC::AbstractMacroAssembler::CodeLocationLabel::addressForSwitch): + (JSC::AbstractMacroAssembler::CodeLocationLabel::addressForExceptionHandler): + (JSC::AbstractMacroAssembler::CodeLocationLabel::addressForJSR): + (JSC::AbstractMacroAssembler::CodeLocationLabel::operator!): + (JSC::AbstractMacroAssembler::CodeLocationLabel::reset): + (JSC::AbstractMacroAssembler::CodeLocationLabel::CodeLocationLabel): + (JSC::AbstractMacroAssembler::CodeLocationLabel::getJumpDestination): + (JSC::AbstractMacroAssembler::CodeLocationJump::relink): + (JSC::AbstractMacroAssembler::CodeLocationJump::CodeLocationJump): + (JSC::AbstractMacroAssembler::CodeLocationCall::relink): + (JSC::AbstractMacroAssembler::CodeLocationCall::calleeReturnAddressValue): + (JSC::AbstractMacroAssembler::CodeLocationCall::CodeLocationCall): + (JSC::AbstractMacroAssembler::CodeLocationNearCall::relink): + (JSC::AbstractMacroAssembler::CodeLocationNearCall::calleeReturnAddressValue): + (JSC::AbstractMacroAssembler::CodeLocationNearCall::CodeLocationNearCall): + (JSC::AbstractMacroAssembler::CodeLocationDataLabel32::repatch): + (JSC::AbstractMacroAssembler::CodeLocationDataLabel32::CodeLocationDataLabel32): + (JSC::AbstractMacroAssembler::CodeLocationDataLabelPtr::repatch): + (JSC::AbstractMacroAssembler::CodeLocationDataLabelPtr::CodeLocationDataLabelPtr): + (JSC::AbstractMacroAssembler::ProcessorReturnAddress::relinkCallerToTrampoline): + (JSC::AbstractMacroAssembler::ProcessorReturnAddress::relinkCallerToFunction): + (JSC::AbstractMacroAssembler::ProcessorReturnAddress::relinkNearCallerToTrampoline): + (JSC::AbstractMacroAssembler::ProcessorReturnAddress::addressForLookup): + (JSC::AbstractMacroAssembler::trampolineAt): + (JSC::AbstractMacroAssembler::PatchBuffer::link): + (JSC::AbstractMacroAssembler::PatchBuffer::performFinalization): + (JSC::::CodeLocationCommon::instructionAtOffset): + (JSC::::CodeLocationCommon::labelAtOffset): + (JSC::::CodeLocationCommon::jumpAtOffset): + (JSC::::CodeLocationCommon::callAtOffset): + (JSC::::CodeLocationCommon::nearCallAtOffset): + (JSC::::CodeLocationCommon::dataLabelPtrAtOffset): + (JSC::::CodeLocationCommon::dataLabel32AtOffset): + * assembler/MacroAssemblerCodeRef.h: + (JSC::FunctionPtr::FunctionPtr): + (JSC::FunctionPtr::value): + (JSC::FunctionPtr::executableAddress): + (JSC::ReturnAddressPtr::ReturnAddressPtr): + (JSC::ReturnAddressPtr::value): + (JSC::MacroAssemblerCodePtr::MacroAssemblerCodePtr): + (JSC::MacroAssemblerCodePtr::executableAddress): + (JSC::MacroAssemblerCodePtr::dataLocation): + (JSC::MacroAssemblerCodeRef::MacroAssemblerCodeRef): + * assembler/X86Assembler.h: + (JSC::X86Assembler::patchPointerForCall): + * jit/JIT.cpp: + (JSC::ctiPatchNearCallByReturnAddress): + (JSC::ctiPatchCallByReturnAddress): + (JSC::JIT::privateCompile): + (JSC::JIT::privateCompileCTIMachineTrampolines): + * jit/JIT.h: + (JSC::JIT::compileCTIMachineTrampolines): + * jit/JITCall.cpp: + (JSC::JIT::compileOpCall): + * jit/JITCode.h: + (JSC::JITCode::operator !): + (JSC::JITCode::addressForCall): + (JSC::JITCode::offsetOf): + (JSC::JITCode::execute): + (JSC::JITCode::size): + (JSC::JITCode::HostFunction): + * jit/JITInlineMethods.h: + (JSC::JIT::emitNakedCall): + * jit/JITPropertyAccess.cpp: + (JSC::JIT::privateCompilePutByIdTransition): + (JSC::JIT::patchGetByIdSelf): + (JSC::JIT::patchPutByIdReplace): + (JSC::JIT::privateCompilePatchGetArrayLength): + (JSC::JIT::privateCompileGetByIdProto): + (JSC::JIT::privateCompileGetByIdChain): + * jit/JITStubs.cpp: + (JSC::JITThunks::JITThunks): + (JSC::JITThunks::tryCachePutByID): + (JSC::JITThunks::tryCacheGetByID): + (JSC::JITStubs::DEFINE_STUB_FUNCTION): + * jit/JITStubs.h: + (JSC::JITThunks::ctiArrayLengthTrampoline): + (JSC::JITThunks::ctiStringLengthTrampoline): + (JSC::JITThunks::ctiVirtualCallPreLink): + (JSC::JITThunks::ctiVirtualCallLink): + (JSC::JITThunks::ctiVirtualCall): + (JSC::JITThunks::ctiNativeCallThunk): + * yarr/RegexJIT.h: + (JSC::Yarr::RegexCodeBlock::operator!): + (JSC::Yarr::RegexCodeBlock::execute): + +2009-06-05 Antti Koivisto + + Try to unbreak Windows build. + + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: + +2009-06-03 Antti Koivisto + + Reviewed by Dave Kilzer. + + https://bugs.webkit.org/show_bug.cgi?id=13128 + Safari not obeying cache header + + Export JSC::parseDate() + + * JavaScriptCore.exp: + * JavaScriptCore.xcodeproj/project.pbxproj: + +2009-06-04 Oliver Hunt + + Reviewed by Gavin Barraclough. + + Bug in property caching of getters and setters. + + Make sure that the transition logic accounts for getters and setters. + If we don't we end up screwing up the transition tables so that some + transitions will start incorrectly believing that they need to check + for getters and setters. + + * runtime/JSObject.cpp: + (JSC::JSObject::defineGetter): + (JSC::JSObject::defineSetter): + * runtime/JSObject.h: + (JSC::): + * runtime/Structure.h: + +2009-06-04 Gavin Barraclough + + Reviewed by Sam Weinig. + + Minor tweak to PatchBuffer, change it so it no longer holds a CodeRef, and instead + holds a separate code pointer and executable pool. Since it now always holds its + own copy of the code size, and to simplify the construction sequence, it's neater + this way. + + * assembler/AbstractMacroAssembler.h: + (JSC::AbstractMacroAssembler::PatchBuffer::PatchBuffer): + (JSC::AbstractMacroAssembler::PatchBuffer::finalizeCode): + (JSC::AbstractMacroAssembler::PatchBuffer::code): + (JSC::AbstractMacroAssembler::PatchBuffer::performFinalization): + +2009-06-04 Gavin Barraclough + + Reviewed by Oliver Hunt. + + Remove 'JIT_STUB_ARGUMENT_STACK' this is unused and untested. + + This just leaves JIT_STUB_ARGUMENT_REGISTER and JIT_STUB_ARGUMENT_VA_LIST. + Since JIT_STUB_ARGUMENT_REGISTER is the sensible configuration on most platforms, + remove this define and make this the default behaviour. + Platforms must now define JIT_STUB_ARGUMENT_VA_LIST to get crazy va_list voodoo, + if they so desire. + + (Refactoring of #ifdefs only, no functional change, no performance impact.) + + * jit/JIT.h: + * jit/JITInlineMethods.h: + (JSC::JIT::restoreArgumentReference): + (JSC::JIT::restoreArgumentReferenceForTrampoline): + * jit/JITStubs.cpp: + (JSC::): + * jit/JITStubs.h: + * wtf/Platform.h: + +2009-06-04 Gavin Barraclough + + Rubber stamped by Sam Weinig. + + * jit/JITArithmetic.cpp: + Remove some redundant typedefs, unused since arithmetic was added to the MacroAssembler interface. + +2009-06-04 Brent Fulgham + + Build fix due to header include problem. + + * interpreter/Interpreter.h: Remove wtf from includes so that + compile can find the headers in expected places. + +2009-06-04 Zoltan Horvath + + Reviewed by Darin Adler. + + HashTable class (JavaScriptCore/wtf/HashTable.h) doesn't instantiated by 'new', so + inheritance was removed. HashTable struct has been instantiated by operator new in + JSGlobalData.cpp:106. + HashTable couldn't inherited from FastAllocBase since struct with inheritance is + no longer POD, so HashTable struct has been instantiated by fastNew, destroyed by + fastDelete. + + * interpreter/Interpreter.h: + * runtime/JSGlobalData.cpp: + (JSC::JSGlobalData::JSGlobalData): + (JSC::JSGlobalData::~JSGlobalData): + * wtf/HashTable.h: + +2009-06-04 Gavin Barraclough + + Reviewed by Oliver Hunt. + + Wrap the code that plants pushes/pops planted by JIT in explanatorily named + methods; move property storage reallocation into a standard stub function. + + ~No performance impact (possible <1% progression on x86-64, likely just noise). + + * jit/JIT.cpp: + (JSC::JIT::privateCompile): + (JSC::JIT::privateCompileCTIMachineTrampolines): + Wrap calls to push/pop. + * jit/JIT.h: + Declare the new wrapper methods. + * jit/JITInlineMethods.h: + (JSC::JIT::preverveReturnAddressAfterCall): + (JSC::JIT::restoreReturnAddressBeforeReturn): + Define the new wrapper methods. + * jit/JITOpcodes.cpp: + (JSC::JIT::emit_op_end): + (JSC::JIT::emit_op_ret): + Wrap calls to push/pop. + * jit/JITPropertyAccess.cpp: + (JSC::JIT::privateCompilePutByIdTransition): + Move property storage reallocation into a standard stub function. + * jit/JITStubs.cpp: + (JSC::JITStubs::DEFINE_STUB_FUNCTION): + * jit/JITStubs.h: + (JSC::JITStubs::): + +2009-06-04 Laszlo Gombos + + Reviewed by Ariya Hidayat. + + [Qt] Single-threaded QtWebKit configuration + + + * JavaScriptCore.pri: Use ThreadingNone.cpp instead of + ThreadingQt.cpp and make sure ENABLE_JSC_MULTIPLE_THREADS is turned off + when ENABLE_SINGLE_THREADED is tuned on + * wtf/ThreadingNone.cpp: + (WTF::ThreadCondition::wait): Fix compilation warning. + (WTF::ThreadCondition::timedWait): Ditto. + +2009-06-02 Mark Rowe + + Reviewed by Anders Carlsson. + + Remove workaround that was added to address as it no longer affects our Tiger builds. + + * Configurations/Base.xcconfig: + +2009-06-02 Xan Lopez + + Reviewed by Sam Weinig. + + Use C-style comments in Platform.h so it can be included from C + files. + + * wtf/Platform.h: + +2009-06-02 Tor Arne Vestbø + + Rubber-stamped by Simon Hausmann. + + Use File::Spec->tmpdir instead of hardcoded paths for tempfile() dir + + This fixes the Windows-build if the user does not have a /tmp directory. + + * pcre/dftables: + +2009-06-02 Gavin Barraclough + + Reviewed by Oliver ">>" Hunt. + + emitSlow_op_rshift is linking the wrong number of slow cases, if !supportsFloatingPoint(). + Fixerate, and refactor/comment the code a little to make it clearer what is going on. + + * jit/JITArithmetic.cpp: + (JSC::JIT::emit_op_rshift): + (JSC::JIT::emitSlow_op_rshift): + +2009-06-01 Gavin Barraclough + + Reviewed by NOBODY - speculative windows build fix (errm, for the other patch!). + + * jit/JITStubs.cpp: + (JSC::): + +2009-06-01 Gavin Barraclough + + Reviewed by NOBODY - speculative windows build fix. + + * assembler/AbstractMacroAssembler.h: + (JSC::::CodeLocationCall::CodeLocationCall): + (JSC::::CodeLocationNearCall::CodeLocationNearCall): + +2009-06-01 Gavin Barraclough + + Reviewed by Olliej Hunt. + + Change JITStub functions from being static members on the JITStub class to be + global extern "C" functions, and switch their the function signature declaration + in the definition of the functions to be C-macro generated. This makes it easier + to work with the stub functions from assembler code (since the names no longer + require mangling), and by delaring the functions with a macro we can look at + also auto-generating asm thunks to wrap the JITStub functions to perform the + work currently in 'restoreArgumentReference' (as a memory saving). + + Making this change also forces us to be a bit more realistic about what is private + on the Register and CallFrame objects. Presently most everything on these classes + is private, and the classes have plenty of friends. We could befriend all the + global functions to perpetuate the delusion of encapsulation, but using friends is + a bit of a sledgehammer solution here - since friends can poke around with all of + the class's privates, and since all the major classes taht operate on Regsiters are + currently friends, right there is currently in practice very little protection at + all. Better to start removing friend delclarations, and exposing just the parts + that need to be exposed. + + * interpreter/CallFrame.h: + (JSC::ExecState::returnPC): + (JSC::ExecState::setCallerFrame): + (JSC::ExecState::returnValueRegister): + (JSC::ExecState::setArgumentCount): + (JSC::ExecState::setCallee): + (JSC::ExecState::setCodeBlock): + * interpreter/Interpreter.h: + * interpreter/Register.h: + (JSC::Register::Register): + (JSC::Register::i): + * jit/JITStubs.cpp: + (JSC::): + (JSC::JITThunks::JITThunks): + (JSC::JITThunks::tryCachePutByID): + (JSC::JITThunks::tryCacheGetByID): + (JSC::JITStubs::DEFINE_STUB_FUNCTION): + * jit/JITStubs.h: + (JSC::JITStubs::): + * runtime/JSFunction.h: + (JSC::JSFunction::nativeFunction): + (JSC::JSFunction::classInfo): + * runtime/JSGlobalData.h: + +2009-06-01 Oliver Hunt + + Reviewed by Gavin Barraclough. + + Tidy up the literal parser. + + Make the number lexing in the LiteralParser exactly match the JSON spec, which + makes us cover more cases, but also more strict. Also made string lexing only + allow double-quoted strings. + + * runtime/LiteralParser.cpp: + (JSC::LiteralParser::Lexer::lex): + (JSC::LiteralParser::Lexer::lexString): + (JSC::LiteralParser::Lexer::lexNumber): + +2009-06-01 Gavin Barraclough + + Reviewed by Sam "WX" Weinig. + + Allow the JIT to operate without relying on use of RWX memory, on platforms where this is supported. + + This patch adds a switch to Platform.h (ENABLE_ASSEMBLER_WX_EXCLUSIVE) which enables this mode of operation. + When this flag is set, all executable memory will be allocated RX, and switched to RW only whilst being + modified. Upon completion of code generation the protection is switched back to RX to allow execution. + + Further optimization will be required before it is desirable to enable this mode of operation by default; + enabling this presently incurs a 5%-10% regression. + + (Submitting disabled - no performance impact). + + * assembler/AbstractMacroAssembler.h: + (JSC::AbstractMacroAssembler::CodeLocationInstruction::repatchLoadToLEA): + (JSC::AbstractMacroAssembler::CodeLocationLabel::fromFunctionPointer): + (JSC::AbstractMacroAssembler::CodeLocationJump::relink): + (JSC::AbstractMacroAssembler::CodeLocationCall::relink): + (JSC::AbstractMacroAssembler::CodeLocationNearCall::relink): + (JSC::AbstractMacroAssembler::CodeLocationDataLabel32::repatch): + (JSC::AbstractMacroAssembler::CodeLocationDataLabelPtr::repatch): + (JSC::AbstractMacroAssembler::ProcessorReturnAddress::relinkCallerToTrampoline): + (JSC::AbstractMacroAssembler::ProcessorReturnAddress::relinkCallerToFunction): + (JSC::AbstractMacroAssembler::ProcessorReturnAddress::relinkNearCallerToTrampoline): + (JSC::AbstractMacroAssembler::ProcessorReturnAddress::relinkNearCallerToFunction): + (JSC::AbstractMacroAssembler::PatchBuffer::PatchBuffer): + (JSC::AbstractMacroAssembler::PatchBuffer::~PatchBuffer): + (JSC::AbstractMacroAssembler::PatchBuffer::link): + (JSC::AbstractMacroAssembler::PatchBuffer::patch): + (JSC::AbstractMacroAssembler::PatchBuffer::performFinalization): + (JSC::::CodeLocationCommon::nearCallAtOffset): + (JSC::::CodeLocationCall::CodeLocationCall): + (JSC::::CodeLocationNearCall::CodeLocationNearCall): + * assembler/AssemblerBuffer.h: + (JSC::AssemblerBuffer::executableCopy): + * assembler/X86Assembler.h: + (JSC::CAN_SIGN_EXTEND_U32_64): + (JSC::X86Assembler::linkJump): + (JSC::X86Assembler::linkCall): + (JSC::X86Assembler::patchPointer): + (JSC::X86Assembler::relinkJump): + (JSC::X86Assembler::relinkCall): + (JSC::X86Assembler::repatchInt32): + (JSC::X86Assembler::repatchPointer): + (JSC::X86Assembler::repatchLoadToLEA): + (JSC::X86Assembler::patchInt32): + (JSC::X86Assembler::patchRel32): + * jit/ExecutableAllocator.h: + (JSC::ExecutableAllocator::): + (JSC::ExecutableAllocator::makeWritable): + (JSC::ExecutableAllocator::makeExecutable): + * jit/ExecutableAllocatorFixedVMPool.cpp: + (JSC::FixedVMPoolAllocator::FixedVMPoolAllocator): + * jit/ExecutableAllocatorPosix.cpp: + (JSC::ExecutablePool::systemAlloc): + (JSC::ExecutablePool::systemRelease): + (JSC::ExecutableAllocator::reprotectRegion): + * jit/ExecutableAllocatorWin.cpp: + * jit/JITPropertyAccess.cpp: + (JSC::JIT::patchGetByIdSelf): + (JSC::JIT::patchPutByIdReplace): + * wtf/Platform.h: + +2009-05-29 Zoltan Horvath + + Reviewed by Darin Adler. + + Inherits Interpreter class from FastAllocBase because it has been + instantiated by 'new' in JavaScriptCore/runtime/JSGlobalData.cpp. + + * interpreter/Interpreter.h: + +2009-06-01 David Levin + + Reviewed by NOBODY (windows build fix). + + Add exports for windows (corresponding to the JavaScriptCore.exp modification + in the previous change). + + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: + +2009-06-01 David Levin + + Reviewed by Darin Alder and Maciej Stachowiak. + + Bug 26057: StringImpl should share buffers with UString. + https://bugs.webkit.org/show_bug.cgi?id=26057 + + * JavaScriptCore.exp: + * runtime/UString.cpp: + (JSC::UString::Rep::create): + (JSC::UString::BaseString::sharedBuffer): Only do the sharing when + the buffer exceeds a certain size. The size was tuned by running + various dom benchmarks with numbers ranging from 20 to 800 and finding + a place that seemed to do the best overall. + * runtime/UString.h: + +2009-05-31 Gavin Barraclough + + Reviewed by Olliej "you just need to change NativeFunctionWrapper.h" Hunt. + + Add ENABLE_JIT_OPTIMIZE_NATIVE_CALL switch to allow JIT to operate without native call optimizations. + + * runtime/NativeFunctionWrapper.h: + * wtf/Platform.h: + +2009-05-30 Darin Adler + + Reviewed by Sam Weinig. + + REGRESSION (r42734): Celtic Kane JavaScript benchmark does not run: + "Maximum call stack size exceeded" + + * runtime/ArrayPrototype.cpp: + (JSC::arrayProtoFuncToString): Use the same recursion limit as the other recursion checks. + We need a limit of at least 100 to run the benchmark above. + (JSC::arrayProtoFuncToLocaleString): Ditto. + (JSC::arrayProtoFuncJoin): Ditto. + +2009-05-28 Dirk Schulze + + Reviewed by Nikolas Zimmermann. + + Added new build flag --filters for Mac. More details in WebCore/ChangeLog. + + * Configurations/FeatureDefines.xcconfig: + +2009-05-27 Oliver Hunt + + Reviewed by Mark Rowe. + + Stack overflow in JSC::stringProtoFuncReplace() running jsFunFuzz + + We should always check for exceptions after creating a CachedCall, this wasn't being done in + the string replace logic. + + * runtime/StringPrototype.cpp: + (JSC::stringProtoFuncReplace): + +2009-05-27 Gustavo Noronha Silva + + Unreviewed (make distcheck) build fix; adding missing headers. + + * GNUmakefile.am: + +2009-05-27 Jessie Berlin + + Reviewed by Adam Roben + + Fix the Windows build. + + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: + +2009-05-27 Fridrich Strba + + Reviewed by Gustavo Noronha. + + When building on Windows, consider Windows specific files. + + * GNUmakefile.am: + +2009-05-27 Fridrich Strba + + Reviewed by Maciej Stachowiak. + + When building with MinGW, don't use the __declspec(dl{import,export}) + decorations and rely on the linker to use its nifty auto-import feature. + It is extremely hard to get the decorations right with MinGW in general + and impossible in WebKit, where the resulting shared library is linking + together some static libraries. + + * config.h: + +2009-05-26 Holger Hans Peter Freyther + + Reviewed by Xan Lopez. + + https://bugs.webkit.org/show_bug.cgi?id=25613 + + Be able to use GOwnPtr for GHashTable as well. The assumption + is that the hash table has been created with g_hash_table_new_full + and has proper destruction functions. + + * wtf/GOwnPtr.cpp: + (WTF::GHashTable): + * wtf/GOwnPtr.h: + +2009-05-26 Oliver Hunt + + Reviewed by Gavin Barraclough. + + REGRESSION: Assertion failure due to forward references + + Add a pattern type for forward references to ensure that we don't confuse the + quantifier alternatives assertion. + + * yarr/RegexCompiler.cpp: + (JSC::Yarr::RegexPatternConstructor::atomBackReference): + (JSC::Yarr::RegexPatternConstructor::setupAlternativeOffsets): + * yarr/RegexInterpreter.cpp: + (JSC::Yarr::ByteCompiler::emitDisjunction): + * yarr/RegexJIT.cpp: + (JSC::Yarr::RegexGenerator::generateTerm): + * yarr/RegexPattern.h: + (JSC::Yarr::PatternTerm::): + (JSC::Yarr::PatternTerm::PatternTerm): + (JSC::Yarr::PatternTerm::ForwardReference): + +2009-05-26 Gavin Barraclough + + Reviewed by Oliver Hunt. + + Fix for: REGRESSION: jQuery load() issue (25981), + and also an ASSERT failure on http://ihasahotdog.com/. + + When overwriting a property on a dictionary with a cached specific value, + clear the cache if new value being written is different. + + * JavaScriptCore.exp: + Export the new symbols. + * jit/JITStubs.cpp: + (JSC::JITStubs::cti_op_get_by_id_method_check_second): + Close dictionary prototypes upon caching a method access, as would happen when caching + a regular get_by_id. + * runtime/JSObject.h: + (JSC::JSObject::propertyStorage): + (JSC::JSObject::locationForOffset): + Make these methods private. + (JSC::JSObject::putDirectInternal): + When overwriting a property on a dictionary with a cached specific value, + clear the cache if new value being written is different. + * runtime/Structure.cpp: + (JSC::Structure::despecifyDictionaryFunction): + Reset the specific value field for a given property in a dictionary. + (JSC::Structure::despecifyFunctionTransition): + Rename of 'changeFunctionTransition' (this was already internally refered to as a despecification). + * runtime/Structure.h: + Declare new method. + +2009-05-26 Gavin Barraclough + + Reviewed by Oliver "pieces of eight" Hunt. + + When reseting RegexPattern class, should fully reset the class, not just bits of it. + In particular, we delete the cached character classes (for wordchars, etc), but do + not reset the set of pointers to the cached classes. In the case of a repeated parse + due to an illegal back-reference we will continue to use the deleted character class. + + * yarr/RegexPattern.h: + (JSC::Yarr::RegexPattern::reset): + +2009-05-26 Brent Fulgham + + Build fix to correct r44161. + + * wtf/FastAllocBase.h: + +2009-05-26 Zoltan Horvath + + Reviewed by Maciej Stachowiak. + + Inherite HashTable from FastAllocBase, because it has been instantiated by + 'new' in JavaScriptCore/runtime/JSGlobalData.cpp. + + * wtf/HashTable.h: + * wtf/FastAllocBase.h: Remove 'wtf' path from TypeTraits.h to allow use outside of wtf. + +2009-05-25 David Levin + + Reviewed by Maciej Stachowiak and Oliver Hunt. + + https://bugs.webkit.org/show_bug.cgi?id=25126 + Allow the buffer underlying UString to be shared. + + In order to not grow the underlying size of any structure, + there is a union in the Rep string which holds + + m_sharedBuffer -- a pointer to the shared ref counted buffer + if the class is BaseString and the buffer is being shared OR + + m_baseString -- the BaseString if the class is only UString::Rep + but not a UString::BaseString + + Ideally, m_sharedBuffer would be a RefPtr, but it cannot be because + it is in a union. + + No change in sunspider perf. + + * JavaScriptCore.vcproj/WTF/WTF.vcproj: + * JavaScriptCore.xcodeproj/project.pbxproj: + * runtime/UString.cpp: + (JSC::UString::Rep::share): + (JSC::UString::Rep::destroy): + (JSC::UString::BaseString::sharedBuffer): + (JSC::UString::BaseString::setSharedBuffer): + (JSC::UString::BaseString::slowIsBufferReadOnly): + (JSC::expandCapacity): + (JSC::UString::Rep::reserveCapacity): + (JSC::UString::expandPreCapacity): + (JSC::concatenate): + (JSC::UString::append): + * runtime/UString.h: + (JSC::UString::Rep::Rep): + (JSC::UString::Rep::): + (JSC::UString::BaseString::isShared): + (JSC::UString::BaseString::isBufferReadOnly): + (JSC::UString::Rep::baseString): + * wtf/CrossThreadRefCounted.h: + (WTF::CrossThreadRefCounted::isShared): + * wtf/OwnFastMallocPtr.h: Added. + (WTF::OwnFastMallocPtr::OwnFastMallocPtr): + (WTF::OwnFastMallocPtr::~OwnFastMallocPtr): + (WTF::OwnFastMallocPtr::get): + (WTF::OwnFastMallocPtr::release): + +2009-05-25 Oliver Hunt + + Reviewed by Maciej Stachowiak. + + Re-add interpreter logic to jit-enabled builds as GCC mysteriously regresses without it + + * wtf/Platform.h: + +2009-05-25 Fridrich Strba + + Reviewed by Maciej Stachowiak. + + The functions written in assembly need to have a leading + underscore on Windows too. + + * jit/JITStubs.cpp: + +2009-05-24 Steve Falkenburg + + Build fix for experimental PGO Windows target. + + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: + +2009-05-23 David Kilzer + + Part 1 of 2: Bug 25495: Implement PassOwnPtr and replace uses of std::auto_ptr + + + + Reviewed by Oliver Hunt. + + * GNUmakefile.am: Added OwnPtrCommon.h and PassOwnPtr.h. + * JavaScriptCore.vcproj/WTF/WTF.vcproj: Ditto. + * JavaScriptCore.xcodeproj/project.pbxproj: Ditto. + + * wtf/OwnPtr.h: + (WTF::OwnPtr::OwnPtr): Added constructors that take a + PassOwnPtr. Also added a copy constructor declaration that's + required when assigning a PassOwnPtr to a stack-based OwnPtr. + (WTF::operator=): Added assignment operator methods that take a + PassOwnPtr. + (WTF::swap): Reformatted. + (WTF::operator==): Whitespace changes. + (WTF::operator!=): Ditto. + + * wtf/OwnPtrCommon.h: Added. + (WTF::deleteOwnedPtr): + + * wtf/PassOwnPtr.h: Added. + (WTF::PassOwnPtr::PassOwnPtr): + (WTF::PassOwnPtr::~PassOwnPtr): + (WTF::PassOwnPtr::get): + (WTF::PassOwnPtr::clear): + (WTF::PassOwnPtr::release): + (WTF::PassOwnPtr::operator*): + (WTF::PassOwnPtr::operator->): + (WTF::PassOwnPtr::operator!): + (WTF::PassOwnPtr::operator UnspecifiedBoolType): + (WTF::::operator): + (WTF::operator==): + (WTF::operator!=): + (WTF::static_pointer_cast): + (WTF::const_pointer_cast): + (WTF::getPtr): + +2009-05-23 Oliver Hunt + + Reviewed by Maciej Stachowiak. + + Remove interpreter specific logic from the JIT builds. + + This saves ~100k in JSC release builds. + + * interpreter/Interpreter.cpp: + (JSC::Interpreter::privateExecute): + * interpreter/Interpreter.h: + * wtf/Platform.h: + +2009-05-22 Mark Rowe + + Part two of an attempted Windows build fix. + + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: + +2009-05-22 Mark Rowe + + Part one of an attempted Windows build fix. + + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: + +2009-05-21 Gavin Barraclough + + Reviewed by Geoff Garen. + + op_method_check + + Optimize method calls, by caching specific function values within the Structure. + The new opcode is used almost like an x86 opcode prefix byte to optimize op_get_by_id, + where the property access is being used to read a function to be passed to op-call (i.e. + 'foo.bar();'). This patch modifies the Structure class such that when a property is + put to an object for the first time we will check if the value is a function. If it is, + we will cache the function value on the Structure. A Structure in such a state guarantees + that not only does a property with the given identifier exist on the object, but also that + its value is unchanged. Upon any further attempt to put a property with the same identifier + (but a different value) to the object, it will transition back to a normal Structure (where + it will guarantee the presence but not the value of the property). + + op_method_check makes use of the new information made available by the Structure, by + augmenting the functionality of op_get_by_id. Upon generating a FunctionCallDotNode a + check will be emitted prior to the property access reading the function value, and the JIT + will generate an extra (initially unlinked but patchable) set of checks prior to the regular + JIT code for get_by_id. The new code will do inline structure and prototype structure check + (unlike a regular get_by_id, which can only handle 'self' accesses inline), and then performs + an immediate load of the function value, rather than using memory accesses to load the value + from the obejct's property storage array. If the method check fails it will revert, or if + the access is polymorphic, the op_get_by_id will continue to operate - and optimize itself - + just as any other regular op_get_by_id would. + + ~2.5% on v8-tests, due to a ~9% progression on richards. + + * API/JSCallbackObjectFunctions.h: + (JSC::::put): + (JSC::::staticFunctionGetter): + * API/JSObjectRef.cpp: + (JSObjectMakeConstructor): + * JavaScriptCore.exp: + * assembler/AbstractMacroAssembler.h: + (JSC::AbstractMacroAssembler::differenceBetween): + * assembler/MacroAssemblerX86.h: + (JSC::MacroAssemblerX86::moveWithPatch): + * bytecode/CodeBlock.cpp: + (JSC::CodeBlock::dump): + * bytecode/CodeBlock.h: + (JSC::getMethodCallLinkInfoReturnLocation): + (JSC::CodeBlock::getMethodCallLinkInfo): + (JSC::CodeBlock::addMethodCallLinkInfos): + (JSC::CodeBlock::methodCallLinkInfo): + * bytecode/Opcode.h: + * bytecompiler/BytecodeGenerator.cpp: + (JSC::BytecodeGenerator::emitMethodCheck): + * bytecompiler/BytecodeGenerator.h: + * interpreter/Interpreter.cpp: + (JSC::Interpreter::privateExecute): + * jit/JIT.cpp: + (JSC::JIT::privateCompileMainPass): + (JSC::JIT::privateCompileSlowCases): + (JSC::JIT::privateCompile): + * jit/JIT.h: + (JSC::MethodCallCompilationInfo::MethodCallCompilationInfo): + * jit/JITOpcodes.cpp: + * jit/JITPropertyAccess.cpp: + (JSC::JIT::emit_op_method_check): + (JSC::JIT::emitSlow_op_method_check): + (JSC::JIT::emit_op_get_by_id): + (JSC::JIT::emitSlow_op_get_by_id): + (JSC::JIT::emit_op_put_by_id): + (JSC::JIT::emitSlow_op_put_by_id): + (JSC::JIT::compileGetByIdHotPath): + (JSC::JIT::compileGetByIdSlowCase): + (JSC::JIT::patchMethodCallProto): + * jit/JITStubs.cpp: + (JSC::JITStubs::cti_op_get_by_id_method_check): + (JSC::JITStubs::cti_op_get_by_id_method_check_second): + * jit/JITStubs.h: + * jsc.cpp: + (GlobalObject::GlobalObject): + * parser/Nodes.cpp: + (JSC::FunctionCallDotNode::emitBytecode): + * runtime/Arguments.cpp: + (JSC::Arguments::put): + * runtime/ArrayConstructor.cpp: + (JSC::ArrayConstructor::ArrayConstructor): + * runtime/BooleanConstructor.cpp: + (JSC::BooleanConstructor::BooleanConstructor): + * runtime/DateConstructor.cpp: + (JSC::DateConstructor::DateConstructor): + * runtime/ErrorConstructor.cpp: + (JSC::ErrorConstructor::ErrorConstructor): + (JSC::constructError): + * runtime/ErrorPrototype.cpp: + (JSC::ErrorPrototype::ErrorPrototype): + * runtime/FunctionConstructor.cpp: + (JSC::FunctionConstructor::FunctionConstructor): + * runtime/FunctionPrototype.cpp: + (JSC::FunctionPrototype::FunctionPrototype): + * runtime/InternalFunction.cpp: + (JSC::InternalFunction::InternalFunction): + * runtime/JSActivation.cpp: + (JSC::JSActivation::put): + (JSC::JSActivation::putWithAttributes): + * runtime/JSByteArray.cpp: + (JSC::JSByteArray::JSByteArray): + * runtime/JSFunction.cpp: + (JSC::JSFunction::JSFunction): + (JSC::JSFunction::getOwnPropertySlot): + * runtime/JSGlobalObject.cpp: + (JSC::JSGlobalObject::putWithAttributes): + (JSC::JSGlobalObject::reset): + (JSC::JSGlobalObject::mark): + * runtime/JSGlobalObject.h: + (JSC::JSGlobalObject::JSGlobalObjectData::JSGlobalObjectData): + (JSC::JSGlobalObject::methodCallDummy): + * runtime/JSObject.cpp: + (JSC::JSObject::put): + (JSC::JSObject::putWithAttributes): + (JSC::JSObject::deleteProperty): + (JSC::JSObject::defineGetter): + (JSC::JSObject::defineSetter): + (JSC::JSObject::getPropertyAttributes): + (JSC::JSObject::getPropertySpecificFunction): + (JSC::JSObject::putDirectFunction): + (JSC::JSObject::putDirectFunctionWithoutTransition): + * runtime/JSObject.h: + (JSC::getJSFunction): + (JSC::JSObject::getDirectLocation): + (JSC::JSObject::putDirect): + (JSC::JSObject::putDirectWithoutTransition): + * runtime/LiteralParser.cpp: + (JSC::LiteralParser::parseObject): + * runtime/Lookup.cpp: + (JSC::setUpStaticFunctionSlot): + * runtime/Lookup.h: + (JSC::lookupPut): + * runtime/MathObject.cpp: + (JSC::MathObject::MathObject): + * runtime/NativeErrorConstructor.cpp: + (JSC::NativeErrorConstructor::NativeErrorConstructor): + (JSC::NativeErrorConstructor::construct): + * runtime/NativeErrorPrototype.cpp: + (JSC::NativeErrorPrototype::NativeErrorPrototype): + * runtime/NumberConstructor.cpp: + (JSC::NumberConstructor::NumberConstructor): + * runtime/ObjectConstructor.cpp: + (JSC::ObjectConstructor::ObjectConstructor): + * runtime/PropertyMapHashTable.h: + (JSC::PropertyMapEntry::PropertyMapEntry): + * runtime/PrototypeFunction.cpp: + (JSC::PrototypeFunction::PrototypeFunction): + * runtime/PutPropertySlot.h: + (JSC::PutPropertySlot::): + (JSC::PutPropertySlot::PutPropertySlot): + (JSC::PutPropertySlot::setNewProperty): + (JSC::PutPropertySlot::setDespecifyFunctionProperty): + (JSC::PutPropertySlot::isCacheable): + (JSC::PutPropertySlot::cachedOffset): + * runtime/RegExpConstructor.cpp: + (JSC::RegExpConstructor::RegExpConstructor): + * runtime/StringConstructor.cpp: + (JSC::StringConstructor::StringConstructor): + * runtime/StringPrototype.cpp: + (JSC::StringPrototype::StringPrototype): + * runtime/Structure.cpp: + (JSC::Structure::Structure): + (JSC::Structure::~Structure): + (JSC::Structure::materializePropertyMap): + (JSC::Structure::addPropertyTransitionToExistingStructure): + (JSC::Structure::addPropertyTransition): + (JSC::Structure::changeFunctionTransition): + (JSC::Structure::addPropertyWithoutTransition): + (JSC::Structure::get): + (JSC::Structure::despecifyFunction): + (JSC::Structure::put): + (JSC::Structure::remove): + * runtime/Structure.h: + (JSC::Structure::get): + (JSC::Structure::specificFunction): + * runtime/StructureTransitionTable.h: + (JSC::StructureTransitionTableHashTraits::emptyValue): + * wtf/Platform.h: + +2009-05-22 Brent Fulgham + + Reviewed by Steve Falkenburg. + + https://bugs.webkit.org/show_bug.cgi?id=25950 + JavaScriptCore Fails to build on Windows (Cairo) due to CoreFoundation + link requirement. + + Modify project to add new Debug_CFLite and Release_CFLite targets. These + use the new JavaScriptCoreCFLite.vsprops to link against CFLite.dll. + Existing projects are changed to use the new JavaScriptCoreCF.vsprops + to link against CoreFoundation.dll. + + The JavaScriptCoreCommon.vsprops is modified to remove the link + against CoreFoundation.dll. + + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCF.vsprops: Added. + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCFLite.vsprops: Added. + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops: + +2009-05-22 Dominik Röttsches + + Reviewed by Gustavo Noronha. + + https://bugs.webkit.org/show_bug.cgi?id=15914 + [GTK] Implement Unicode functionality using GLib + + Original patch by Jürg Billeter and Naiem Shaik. + Implementing WTF Unicode functionality based on GLib. + + * GNUmakefile.am: + * wtf/unicode/Unicode.h: + * wtf/unicode/glib: Added. + * wtf/unicode/glib/UnicodeGLib.cpp: Added. + (WTF::Unicode::foldCase): + (WTF::Unicode::toLower): + (WTF::Unicode::toUpper): + (WTF::Unicode::direction): + (WTF::Unicode::umemcasecmp): + * wtf/unicode/glib/UnicodeGLib.h: Added. + (WTF::Unicode::): + (WTF::Unicode::toLower): + (WTF::Unicode::toUpper): + (WTF::Unicode::toTitleCase): + (WTF::Unicode::isArabicChar): + (WTF::Unicode::isFormatChar): + (WTF::Unicode::isSeparatorSpace): + (WTF::Unicode::isPrintableChar): + (WTF::Unicode::isDigit): + (WTF::Unicode::isPunct): + (WTF::Unicode::mirroredChar): + (WTF::Unicode::category): + (WTF::Unicode::isLower): + (WTF::Unicode::digitValue): + (WTF::Unicode::combiningClass): + (WTF::Unicode::decompositionType): + * wtf/unicode/glib/UnicodeMacrosFromICU.h: Added. + +2009-05-21 Xan Lopez + + Unreviewed build fix. + + Add MacroAssemblerCodeRef.h to file list. + + * GNUmakefile.am: + +2009-05-21 Gavin Barraclough + + Reviewed by Darin Adler. + Addition of MacroAssemblerCodeRef.h rubber stamped by Geoff Garen. + + Refactor JIT code-handle objects. The representation of generated code is currently + a bit of a mess. We have a class JITCode which wraps the pointer to a block of + generated code, but this object does not reference the executable pool meaning that + external events (the pool being derefed) could make the pointer become invalid. + To overcome this both the JIT and Yarr implement further (and similar) objects to + wrap the code pointer with a RefPtr to the pool. To add to the mire, as well as the + CodeBlock containing a handle onto the code the FunctionBodyNode also contains a + copy of the code pointer which is used almost (but not entirely) uniquely to access + the JIT code for a function. + + Rationalization of all this: + + * Add a new type 'MacroAssembler::CodeRef' as a handle for a block of JIT generated code. + * Change the JIT & Yarr to internally handle code using CodeRefs. + * Move the CodeRef (formerly anow defunct JITCodeRef) from CodeBlock to its owner node. + * Remove the (now) redundant code pointer from FunctionBodyNode. + + While tidying this up I've made the PatchBuffer return code in new allocations using a CodeRef, + and have enforced an interface that the PatchBuffer will always be used, and 'finalizeCode()' or + 'finalizeCodeAddendum()' will always be called exactly once on the PatchBuffer to complete code generation. + + This gives us a potentially useful hook ('PatchBuffer::performFinalization()') at the end of generation, + which may have a number of uses. It may be helpful should we wish to switch our generation + model to allow RW/RX exclusive memory, and it may be useful on non-cache-coherent platforms to + give us an oportunity to cache flush as necessary. + + No performance impact. + + * assembler/AbstractMacroAssembler.h: + (JSC::AbstractMacroAssembler::ProcessorReturnAddress::relinkCallerToTrampoline): + (JSC::AbstractMacroAssembler::CodeRef::CodeRef): + (JSC::AbstractMacroAssembler::CodeRef::trampolineAt): + (JSC::AbstractMacroAssembler::PatchBuffer::PatchBuffer): + (JSC::AbstractMacroAssembler::PatchBuffer::~PatchBuffer): + (JSC::AbstractMacroAssembler::PatchBuffer::link): + (JSC::AbstractMacroAssembler::PatchBuffer::linkTailRecursive): + (JSC::AbstractMacroAssembler::PatchBuffer::patch): + (JSC::AbstractMacroAssembler::PatchBuffer::complete): + (JSC::AbstractMacroAssembler::PatchBuffer::finalize): + (JSC::AbstractMacroAssembler::PatchBuffer::entry): + * bytecode/CodeBlock.cpp: + (JSC::CodeBlock::CodeBlock): + (JSC::CodeBlock::reparseForExceptionInfoIfNecessary): + (JSC::CodeBlock::setJITCode): + * bytecode/CodeBlock.h: + (JSC::CodeBlock::getBytecodeIndex): + (JSC::CodeBlock::executablePool): + * interpreter/CallFrameClosure.h: + * interpreter/Interpreter.cpp: + (JSC::Interpreter::execute): + (JSC::Interpreter::prepareForRepeatCall): + * jit/JIT.cpp: + (JSC::JIT::privateCompile): + (JSC::JIT::privateCompileCTIMachineTrampolines): + (JSC::JIT::linkCall): + * jit/JIT.h: + * jit/JITCode.h: + (JSC::JITCode::JITCode): + (JSC::JITCode::operator bool): + (JSC::JITCode::addressForCall): + (JSC::JITCode::offsetOf): + (JSC::JITCode::execute): + (JSC::JITCode::size): + (JSC::JITCode::executablePool): + (JSC::JITCode::HostFunction): + * jit/JITPropertyAccess.cpp: + (JSC::JIT::privateCompilePutByIdTransition): + (JSC::JIT::privateCompilePatchGetArrayLength): + (JSC::JIT::privateCompileGetByIdProto): + (JSC::JIT::privateCompileGetByIdSelfList): + (JSC::JIT::privateCompileGetByIdProtoList): + (JSC::JIT::privateCompileGetByIdChainList): + (JSC::JIT::privateCompileGetByIdChain): + * jit/JITStubs.cpp: + (JSC::JITStubs::cti_vm_dontLazyLinkCall): + (JSC::JITStubs::cti_vm_lazyLinkCall): + * parser/Nodes.cpp: + (JSC::ProgramNode::generateJITCode): + (JSC::EvalNode::generateJITCode): + (JSC::FunctionBodyNode::FunctionBodyNode): + (JSC::FunctionBodyNode::createNativeThunk): + (JSC::FunctionBodyNode::generateJITCode): + * parser/Nodes.h: + (JSC::ScopeNode::generatedJITCode): + (JSC::ScopeNode::getExecutablePool): + (JSC::ScopeNode::setJITCode): + (JSC::ProgramNode::jitCode): + (JSC::EvalNode::jitCode): + (JSC::FunctionBodyNode::jitCode): + * runtime/RegExp.cpp: + (JSC::RegExp::match): + * yarr/RegexJIT.cpp: + (JSC::Yarr::RegexGenerator::compile): + (JSC::Yarr::jitCompileRegex): + (JSC::Yarr::executeRegex): + * yarr/RegexJIT.h: + (JSC::Yarr::RegexCodeBlock::RegexCodeBlock): + (JSC::Yarr::RegexCodeBlock::pcreFallback): + (JSC::Yarr::RegexCodeBlock::setFallback): + (JSC::Yarr::RegexCodeBlock::operator bool): + (JSC::Yarr::RegexCodeBlock::set): + (JSC::Yarr::RegexCodeBlock::execute): + +2009-05-21 Oliver Hunt + + Reviewed by Maciej Stachowiak. + + REGRESSION: Cached DOM global object property access fails in browser (25921) + + + When caching properties on the global object we need to ensure that we're + not attempting to cache through a shell object. + + * interpreter/Interpreter.cpp: + (JSC::Interpreter::resolveGlobal): + * jit/JITStubs.cpp: + (JSC::JITStubs::cti_op_resolve_global): + +2009-05-21 Steve Falkenburg + + Windows build fix. + + * JavaScriptCore.vcproj/jsc/jscCommon.vsprops: + +2009-05-21 Cameron Zwarich + + Reviewed by Mark Rowe. + + Bug 25945: Add support for MADV_FREE to TCMalloc + + + + Add support for MADV_FREE to TCMalloc_SystemRelease for platforms that + don't also support MADV_FREE_REUSE. The code is identical to the MADV_DONTNEED + case except for the advice passed to madvise(), so combining the two cases + makes the most sense. + + * wtf/Platform.h: Only define HAVE_MADV_FREE when not building on Tiger or + Leopard, because while it is defined on these platforms it actually does + nothing. + * wtf/TCSystemAlloc.cpp: + (TCMalloc_SystemRelease): use MADV_FREE if it is available; otherwise use + MADV_DONTNEED. + +2009-05-21 Mark Rowe + + Reviewed by Oliver Hunt. + + Fix / . + Bug 25917: REGRESSION (r43559?): Javascript debugger crashes when pausing page + + The debugger currently retrieves the arguments object from an activation rather than pulling + it from a call frame. This is unreliable to due to the recent optimization to lazily create + the arguments object. In the long-term it should stop doing that (), + but for now we force eager creation of the arguments object when debugging. + + * bytecompiler/BytecodeGenerator.cpp: + (JSC::BytecodeGenerator::BytecodeGenerator): + +2009-05-21 Cameron Zwarich + + Reviewed by Maciej Stachowiak. + + Bug 25912: Harden NumberPrototype.cpp by removing use of strcpy() + + + This causes no change on SunSpider. + + * runtime/NumberPrototype.cpp: + (JSC::integerPartNoExp): replace strcpy() with memcpy(), ASSERT that the + temporary buffer has sufficient space to store the result, and move the + explicit null-termination closer to the memcpy() for easier visual inspection + of the code. + (JSC::fractionalPartToString): replace strcpy() with memcpy(), and ASSERT + that the temporary buffer has sufficient space to store the result. There + is no explicit null-termination because this is done by the caller. The + same is already true for exponentialPartToString(). + (JSC::numberProtoFuncToExponential): replace strcpy() with memcpy(), explicitly + null-terminate the result, and ASSERT that the temporary buffer has sufficient + space to store the result. + +2009-05-20 Sam Weinig + + Reviewed by Cameron Zwarich. + + Cleanup the JSGlobalData when exiting early with the usage statement in jsc. + + * jsc.cpp: + (printUsageStatement): + (parseArguments): + (jscmain): + +2009-05-20 Stephanie Lewis + + Update the order files. Generate new order files. + + * JavaScriptCore.order: + +2009-05-19 Kenneth Rohde Christiansen + + Reviewed by Simon Hausmann. + + Replace WREC with YARR + YARR_JIT for the Qt port. This is only + used when compiled with JIT support for now, so it is a drop-in + replacement for the WREC usage. Still including the wrec headers + as they are being referred from RegExp.h, though the contents of + that header it protected by "#if ENABLE(WREC)". + + * JavaScriptCore.pri: + +2009-05-20 Xan Lopez + + Reviewed by Eric Seidel. + + Fix GTK debug build. + + The function dumpDisjunction, compiled with debug enabled, uses + printf, which needs stdio.h to be included. + + * yarr/RegexInterpreter.cpp: + +2009-05-20 Laszlo Gombos + + Reviewed by George Staikos. + + BUG 25843: [Qt] Remove qt-port build flag + + + * JavaScriptCore.pro: + + +2009-05-19 Geoffrey Garen + + Windows build fix. + + * interpreter/RegisterFile.cpp: + (JSC::RegisterFile::releaseExcessCapacity): Copy-paste typo. + +2009-05-19 Geoffrey Garen + + Reviewed by Sam Weinig. + + Fixed CrashTracer: [USER] 1 crash in Install + Mac OS X at • 0x9274241c + + (Original patch by Joe Sokol and Ronnie Misra.) + + SunSpider says 1.004x faster. + + * interpreter/RegisterFile.cpp: + (JSC::RegisterFile::releaseExcessCapacity): Instead of doing complicated + math that sometimes used to overflow, just release the full range of the + register file. + + * interpreter/RegisterFile.h: + (JSC::isPageAligned): + (JSC::RegisterFile::RegisterFile): Added ASSERTs to verify that it's + safe to release the full range of the register file. + + (JSC::RegisterFile::shrink): No need to releaseExcessCapacity() if the + new end is not smaller than the old end. (Also, doing so used to cause + numeric overflow, unmapping basically the whole process from memory.) + +2009-05-19 Oliver Hunt + + RS=Mark Rowe. + + REGRESSION: Start Debugging JavaScript crashes browser (nightly builds only?) + + + Remove JSC_FAST_CALL as it wasn't gaining us anything, and was + resulting in weird bugs in the nightly builds. + + * parser/Nodes.cpp: + * parser/Nodes.h: + (JSC::ExpressionNode::isNumber): + (JSC::ExpressionNode::isString): + (JSC::ExpressionNode::isNull): + (JSC::ExpressionNode::isPure): + (JSC::ExpressionNode::isLocation): + (JSC::ExpressionNode::isResolveNode): + (JSC::ExpressionNode::isBracketAccessorNode): + (JSC::ExpressionNode::isDotAccessorNode): + (JSC::ExpressionNode::isFuncExprNode): + (JSC::ExpressionNode::isSimpleArray): + (JSC::ExpressionNode::isAdd): + (JSC::ExpressionNode::resultDescriptor): + (JSC::StatementNode::firstLine): + (JSC::StatementNode::lastLine): + (JSC::StatementNode::isEmptyStatement): + (JSC::StatementNode::isReturnNode): + (JSC::StatementNode::isExprStatement): + (JSC::StatementNode::isBlock): + (JSC::NullNode::isNull): + (JSC::BooleanNode::isPure): + (JSC::NumberNode::value): + (JSC::NumberNode::setValue): + (JSC::NumberNode::isNumber): + (JSC::NumberNode::isPure): + (JSC::StringNode::isPure): + (JSC::StringNode::isString): + (JSC::ResolveNode::identifier): + (JSC::ResolveNode::isLocation): + (JSC::ResolveNode::isResolveNode): + (JSC::BracketAccessorNode::isLocation): + (JSC::BracketAccessorNode::isBracketAccessorNode): + (JSC::DotAccessorNode::base): + (JSC::DotAccessorNode::identifier): + (JSC::DotAccessorNode::isLocation): + (JSC::DotAccessorNode::isDotAccessorNode): + (JSC::TypeOfResolveNode::identifier): + (JSC::AddNode::isAdd): + (JSC::BlockNode::isBlock): + (JSC::EmptyStatementNode::isEmptyStatement): + (JSC::ExprStatementNode::isExprStatement): + (JSC::ReturnNode::isReturnNode): + (JSC::ScopeNode::sourceURL): + (JSC::ProgramNode::bytecode): + (JSC::EvalNode::bytecode): + (JSC::FunctionBodyNode::parameters): + (JSC::FunctionBodyNode::toSourceString): + (JSC::FunctionBodyNode::bytecode): + (JSC::FuncExprNode::isFuncExprNode): + +2009-05-19 Maciej Stachowiak + + Reviewed by Gavin Barraclough. + + - speed up string comparison, especially for short strings + + ~1% on SunSpider + + * JavaScriptCore.exp: + * runtime/UString.cpp: + * runtime/UString.h: + (JSC::operator==): Inline UString's operator==, since it is called from + hot places in the runtime. Also, specialize 2-char strings in a similar way to + 1-char, since we're taking the hit of a switch anyway. + +2009-05-18 Maciej Stachowiak + + Reviewed by Gavin Barraclough. + + - for polymorphic prototype lookups, increase the number of slots from 4 to 8 + + ~4% faster on v8 raytrace benchmark + + * bytecode/Instruction.h: + +2009-05-18 Maciej Stachowiak + + Reviewed by Oliver Hunt. + + - tighten up the code for the load_varargs stub + + ~1-2% on v8-raytrace + + * jit/JITStubs.cpp: + (JSC::JITStubs::cti_op_load_varargs): Hoist some loop invariants that + the compiler didn't feel like hoisting for us. Remove unneeded exception check. + +2009-05-18 Maciej Stachowiak + + Reviewed by Geoff Garen. + + - Improve code generation for access to prototype properties + + ~0.4% speedup on SunSpider. + + Based on a suggestion from Geoff Garen. + + * jit/JIT.h: + * jit/JITPropertyAccess.cpp: + (JSC::JIT::compileGetDirectOffset): + (JSC::JIT::privateCompileGetByIdProto): + (JSC::JIT::privateCompileGetByIdProtoList): + (JSC::JIT::privateCompileGetByIdChainList): + (JSC::JIT::privateCompileGetByIdChain): + +2009-05-18 Gustavo Noronha Silva + + Reviewed by Gavin Barraclough. + + Enable YARR, and disable WREC for GTK+. + + * GNUmakefile.am: + * yarr/RegexParser.h: + +2009-05-18 Jan Michael Alonzo + + Reviewed by Xan Lopez. + + [Gtk] Various autotools build refactoring and fixes + https://bugs.webkit.org/show_bug.cgi?id=25286 + + Add -no-install and -no-fast-install to programs and tests that we + don't install. Also remove -O2 since this is already handled at + configure time. + + * GNUmakefile.am: + +2009-05-17 Jan Michael Alonzo + + Reviewed by Xan Lopez. + + [Gtk] Various autotools build refactoring and fixes + https://bugs.webkit.org/show_bug.cgi?id=25286 + + Add JavaScriptCore/ to JSC include path only since it's not + required when building WebCore. + + * GNUmakefile.am: + +2009-05-17 Steve Falkenburg + + Windows build fix + + * JavaScriptCore.vcproj/JavaScriptCore.make: + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: + +2009-05-15 Gavin Barraclough + + Reviewed by Oliver Hunt. + + Looking like MSVC doesn't like static variables in inline methods? + Make the state of the SSE2 check a static variable on the class + MacroAssemblerX86Common as a speculative build fix for Windows. + + * assembler/MacroAssemblerX86Common.h: + (JSC::MacroAssemblerX86Common::convertInt32ToDouble): + (JSC::MacroAssemblerX86Common::branchDouble): + (JSC::MacroAssemblerX86Common::branchTruncateDoubleToInt32): + (JSC::MacroAssemblerX86Common::isSSE2Present): + (JSC::MacroAssemblerX86Common::): + * jit/JIT.cpp: + +2009-05-15 Adam Roben + + Add some assembler headers to JavaScriptCore.vcproj + + This is just a convenience for Windows developers. + + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: + +2009-05-15 Gavin Barraclough + + Reviewed by Oliver Hunt. + + Add FP support to the MacroAssembler, port JITArithmetic over to make use of this. Also add + API to determine whether FP support is available 'MacroAssembler::supportsFloatingPoint()', + FP is presently only supported on SSE2 platforms, not x87. On platforms where a suitable + hardware FPU is not available 'supportsFloatingPoint()' may simply return false, and all + other methods ASSERT_NOT_REACHED(). + + * assembler/AbstractMacroAssembler.h: + * assembler/MacroAssemblerX86.h: + (JSC::MacroAssemblerX86::MacroAssemblerX86): + (JSC::MacroAssemblerX86::branch32): + (JSC::MacroAssemblerX86::branchPtrWithPatch): + (JSC::MacroAssemblerX86::supportsFloatingPoint): + * assembler/MacroAssemblerX86Common.h: + (JSC::MacroAssemblerX86Common::): + (JSC::MacroAssemblerX86Common::loadDouble): + (JSC::MacroAssemblerX86Common::storeDouble): + (JSC::MacroAssemblerX86Common::addDouble): + (JSC::MacroAssemblerX86Common::subDouble): + (JSC::MacroAssemblerX86Common::mulDouble): + (JSC::MacroAssemblerX86Common::convertInt32ToDouble): + (JSC::MacroAssemblerX86Common::branchDouble): + (JSC::MacroAssemblerX86Common::branchTruncateDoubleToInt32): + (JSC::MacroAssemblerX86Common::branch32): + (JSC::MacroAssemblerX86Common::branch16): + (JSC::MacroAssemblerX86Common::branchTest32): + (JSC::MacroAssemblerX86Common::branchAdd32): + (JSC::MacroAssemblerX86Common::branchMul32): + (JSC::MacroAssemblerX86Common::branchSub32): + (JSC::MacroAssemblerX86Common::set32): + (JSC::MacroAssemblerX86Common::setTest32): + (JSC::MacroAssemblerX86Common::x86Condition): + (JSC::MacroAssemblerX86Common::isSSE2Present): + * assembler/MacroAssemblerX86_64.h: + (JSC::MacroAssemblerX86_64::movePtrToDouble): + (JSC::MacroAssemblerX86_64::moveDoubleToPtr): + (JSC::MacroAssemblerX86_64::setPtr): + (JSC::MacroAssemblerX86_64::branchPtr): + (JSC::MacroAssemblerX86_64::branchTestPtr): + (JSC::MacroAssemblerX86_64::branchAddPtr): + (JSC::MacroAssemblerX86_64::branchSubPtr): + (JSC::MacroAssemblerX86_64::supportsFloatingPoint): + * assembler/X86Assembler.h: + * jit/JIT.cpp: + (JSC::JIT::JIT): + * jit/JIT.h: + * jit/JITArithmetic.cpp: + (JSC::JIT::emit_op_rshift): + (JSC::JIT::emitSlow_op_rshift): + (JSC::JIT::emitSlow_op_jnless): + (JSC::JIT::emitSlow_op_jnlesseq): + (JSC::JIT::compileBinaryArithOp): + (JSC::JIT::compileBinaryArithOpSlowCase): + (JSC::JIT::emit_op_add): + (JSC::JIT::emitSlow_op_add): + (JSC::JIT::emit_op_mul): + (JSC::JIT::emitSlow_op_mul): + * jit/JITPropertyAccess.cpp: + (JSC::JIT::privateCompilePutByIdTransition): + +2009-05-15 Francisco Tolmasky + + BUG 25467: JavaScript debugger should use function.displayName as the function's name in the call stack + + + Reviewed by Adam Roben. + + * JavaScriptCore.exp: Added calculatedFunctionName + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: Added calculatedFunctionName + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: Added calculatedFunctionName + * debugger/DebuggerCallFrame.cpp: Added calculatedFunctionName to match existing one in ProfileNode. + (JSC::DebuggerCallFrame::calculatedFunctionName): + * debugger/DebuggerCallFrame.h: Added calculatedFunctionName to match existing one in ProfileNode. + +2009-05-14 Gavin Barraclough + + Build fix, not reviewed. + + Quick fixes for JIT builds with OPTIMIZE flags disabled. + + * jit/JITCall.cpp: + (JSC::JIT::compileOpCall): + (JSC::JIT::compileOpCallSlowCase): + * jit/JITPropertyAccess.cpp: + (JSC::JIT::compilePutByIdHotPath): + +2009-05-14 Steve Falkenburg + + Back out incorrect Windows build fix + + * JavaScriptCore.vcproj/JavaScriptCore.make: + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: + +2009-05-14 Steve Falkenburg + + Windows build fix + + * JavaScriptCore.vcproj/JavaScriptCore.make: + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: + +2009-05-14 Adam Roben + + Windows jsc build fix + + r43648 modified jsc.vcproj's post-build event not to try to copy files + that aren't present. Then r43661 mistakenly un-did that modification. + This patch restores the modification from r43648, but puts the code in + jscCommon.vsprops (where it should have been added in r43648). + + * JavaScriptCore.vcproj/jsc/jsc.vcproj: Restored empty + VCPostBuildEventTool tags. + * JavaScriptCore.vcproj/jsc/jscCommon.vsprops: Modified the post-build + event command line to match the one in jsc.vcproj from r43648. + +2009-05-14 Laszlo Gombos + + Reviewed by Darin Adler. + + https://bugs.webkit.org/show_bug.cgi?id=25325 + + Make sure pthread_self() is declared before it gets called in Collector.cpp + + * runtime/Collector.cpp: Include pthread.h in most Unix-like platforms + (not just for OPENBSD) + +2009-05-14 Mark Rowe + + Reviewed by Oliver Hunt. + + Fix . + Bug 25785: Segfault in mark when using JSObjectMakeConstructor + + * API/JSObjectRef.cpp: + (JSObjectMakeConstructor): OpaqueJSClass::prototype can return 0. We need to use the default object prototype when it does. + * API/tests/testapi.c: + (main): Add a test case. + * runtime/JSObject.h: + (JSC::JSObject::putDirect): Add a clearer assertion for a null value. The assertion on the next line does catch this, + but the cause of the failure is not clear from the assertion itself. + +2009-05-14 Mark Rowe + + Rubber-stamped by Darin Adler. + + When building with Xcode 3.1.3 should be using gcc 4.2 + + The meaning of XCODE_VERSION_ACTUAL is more sensible in newer versions of Xcode. + Update our logic to select the compiler version to use the more appropriate XCODE_VERSION_MINOR + if the version of Xcode supports it, and fall back to XCODE_VERSION_ACTUAL if not. + + * Configurations/Base.xcconfig: + +2009-05-14 Gavin Barraclough + + Reviewed by Geoff Garen. + + Checking register file bounds should be a ptr comparison (m_end is a Register*). + Also, the compare should be unsigned, pointers don'ts go negative. + + * jit/JIT.cpp: + (JSC::JIT::privateCompile): + +2009-05-13 Gavin Barraclough + + Reviewed by Oliver Hunt. + + Fix REGRESSION: page at Metroauto site crashes in cti_op_loop_if_less (25730) + + op_loop_if_less (imm < op) was loading op into regT1, but in the slow path spills regT0. + This leads to bad happen. + + * jit/JITOpcodes.cpp: + (JSC::JIT::emit_op_loop_if_less): + (JSC::JIT::emitSlow_op_loop_if_less): + +2009-05-13 Dmitry Titov + + Rubber-stamped by Mark Rowe. + + https://bugs.webkit.org/show_bug.cgi?id=25746 + Revert http://trac.webkit.org/changeset/43507 which caused crash in PPC nightlies with Safari 4. + + * JavaScriptCore.exp: + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: + * bytecode/SamplingTool.cpp: + (JSC::SamplingThread::start): + (JSC::SamplingThread::stop): + * bytecode/SamplingTool.h: + * wtf/CrossThreadRefCounted.h: + (WTF::CrossThreadRefCounted::CrossThreadRefCounted): + (WTF::::ref): + (WTF::::deref): + * wtf/Threading.h: + * wtf/ThreadingNone.cpp: + * wtf/ThreadingPthreads.cpp: + (WTF::threadMapMutex): + (WTF::initializeThreading): + (WTF::threadMap): + (WTF::identifierByPthreadHandle): + (WTF::establishIdentifierForPthreadHandle): + (WTF::pthreadHandleForIdentifier): + (WTF::clearPthreadHandleForIdentifier): + (WTF::createThreadInternal): + (WTF::waitForThreadCompletion): + (WTF::detachThread): + (WTF::currentThread): + * wtf/ThreadingWin.cpp: + (WTF::threadMapMutex): + (WTF::initializeThreading): + (WTF::threadMap): + (WTF::storeThreadHandleByIdentifier): + (WTF::threadHandleForIdentifier): + (WTF::clearThreadHandleForIdentifier): + (WTF::createThreadInternal): + (WTF::waitForThreadCompletion): + (WTF::detachThread): + (WTF::currentThread): + * wtf/gtk/ThreadingGtk.cpp: + (WTF::threadMapMutex): + (WTF::initializeThreading): + (WTF::threadMap): + (WTF::identifierByGthreadHandle): + (WTF::establishIdentifierForThread): + (WTF::threadForIdentifier): + (WTF::clearThreadForIdentifier): + (WTF::createThreadInternal): + (WTF::waitForThreadCompletion): + (WTF::currentThread): + * wtf/qt/ThreadingQt.cpp: + (WTF::threadMapMutex): + (WTF::threadMap): + (WTF::identifierByQthreadHandle): + (WTF::establishIdentifierForThread): + (WTF::clearThreadForIdentifier): + (WTF::threadForIdentifier): + (WTF::initializeThreading): + (WTF::createThreadInternal): + (WTF::waitForThreadCompletion): + (WTF::currentThread): + +2009-05-13 Darin Adler + + Revert the parser arena change. It was a slowdown, not a speedup. + Better luck next time (I'll break it up into pieces). + +2009-05-13 Darin Adler + + Tiger build fix. + + * parser/Grammar.y: Add back empty code blocks, needed by older + versions of bison on certain rules. + +2009-05-13 Steve Falkenburg + + Windows build fix. + + * JavaScriptCore.vcproj/jsc/jsc.vcproj: + +2009-05-13 Adam Roben + + Windows build fixes after r43642 + + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: + Updated. + + * debugger/Debugger.cpp: + * runtime/ArrayConstructor.cpp: + * runtime/JSArray.cpp: + * runtime/RegExp.cpp: + * runtime/RegExpConstructor.cpp: + * runtime/RegExpPrototype.cpp: + * runtime/StringPrototype.cpp: + Added missing #includes. + +2009-05-13 Darin Adler + + Reviewed by Cameron Zwarich. + + Bug 25674: syntax tree nodes should use arena allocation + https://bugs.webkit.org/show_bug.cgi?id=25674 + + Step 3: Add some actual arena allocation. About 1% SunSpider speedup. + + * JavaScriptCore.exp: Updated. + + * bytecompiler/BytecodeGenerator.cpp: + (JSC::BytecodeGenerator::BytecodeGenerator): Updated since VarStack + contains const Identifier* now. + (JSC::BytecodeGenerator::emitPushNewScope): Updated to take a const + Identifier&. + * bytecompiler/BytecodeGenerator.h: Ditto + + * bytecompiler/SegmentedVector.h: Added isEmpty. + + * debugger/Debugger.cpp: + (JSC::Debugger::recompileAllJSFunctions): Moved this function here from + WebCore so WebCore doesn't need the details of FunctionBodyNode. + * debugger/Debugger.h: Ditto. + + * interpreter/Interpreter.cpp: + (JSC::Interpreter::execute): Updated since VarStack contains const + Identifier* now. + + * jit/JITStubs.cpp: + (JSC::JITStubs::cti_vm_lazyLinkCall): Call isHostFunction on the body + rather than on the function object, since we can't easily have inlined + access to the FunctionBodyNode in JSFunction.h since WebCore needs + access to that header. + (JSC::JITStubs::cti_op_construct_JSConstruct): Ditto. + * profiler/Profiler.cpp: + (JSC::Profiler::createCallIdentifier): Ditto. + + * parser/Grammar.y: Use JSGlobalData* to pass the global data pointer + around whenever possible instead of using void*. Changed + SET_EXCEPTION_LOCATION from a macro to an inline function. Marked + the structure-creating functions inline. Changed the VarStack to use + identifier pointers instead of actual identifiers. This takes + advantage of the fact that all identifier pointers come from the + arena and avoids reference count churn. Changed Identifier* to + const Identifier* to make sure we don't modify any by accident. + Used identifiers for regular expression strings too, using the new + scanRegExp that has out parameters instead of the old one that relied + on side effects in the Lexer. Move the creation of numeric identifiers + out of this file and into the PropertyNode constructor. + + * parser/Lexer.cpp: + (JSC::Lexer::setCode): Pass in ParserArena, used for identifiers. + (JSC::Lexer::makeIdentifier): Changed return type to const Identifier* + and changed to call ParserArena. + (JSC::Lexer::scanRegExp): Added out arguments that are const Identifier* + as well as a prefix character argument so we can handle the /= case + without a string append. + (JSC::Lexer::skipRegExp): Added. Skips a regular expression without + allocating Identifier objects. + (JSC::Lexer::clear): Removed the code to manage m_identifiers, m_pattern, + and m_flags, and added code to set m_arena to 0. + * parser/Lexer.h: Updated for changes above. + + * parser/NodeConstructors.h: + (JSC::ParserArenaFreeable::operator new): Added. Calls allocateFreeable + on the arena. + (JSC::ParserArenaDeletable::operator new): Changed to call the + allocateDeletable function on the arena instead of deleteWithArena. + (JSC::RegExpNode::RegExpNode): Changed arguments to Identifier instead + of UString since these come from the parser which makes identifiers. + (JSC::PropertyNode::PropertyNode): Added new constructor that makes + numeric identifiers. Some day we might want to optimize this for + integers so it doesn't create a string for each one. + (JSC::ContinueNode::ContinueNode): Initialize m_ident to nullIdentifier + since it's now a const Identifier& so it can't be left uninitialized. + (JSC::BreakNode::BreakNode): Ditto. + (JSC::CaseClauseNode::CaseClauseNode): Updated to use SourceElements* + to keep track of the statements rather than a separate statement vector. + (JSC::BlockNode::BlockNode): Ditto. + (JSC::ForInNode::ForInNode): Initialize m_ident to nullIdentifier. + + * parser/Nodes.cpp: Moved the comment explaining emitBytecode in here. + It seemed strangely out of place in the header. + (JSC::ThrowableExpressionData::emitThrowError): Added an overload for + UString as well as Identifier. + (JSC::SourceElements::singleStatement): Added. + (JSC::SourceElements::lastStatement): Added. + (JSC::RegExpNode::emitBytecode): Updated since the pattern and flags + are now Identifier instead of UString. Also changed the throwError code + to use the substitution mechanism instead of doing a string append. + (JSC::SourceElements::emitBytecode): Added. Replaces the old + statementListEmitCode function, since we now keep the SourceElements + objects around. + (JSC::BlockNode::lastStatement): Added. + (JSC::BlockNode::emitBytecode): Changed to use emitBytecode instead of + statementListEmitCode. + (JSC::CaseClauseNode::emitBytecode): Added. + (JSC::CaseBlockNode::emitBytecodeForBlock): Changed to use emitBytecode + instead of statementListEmitCode. + (JSC::ScopeNodeData::ScopeNodeData): Changed to store the + SourceElements* instead of using releaseContentsIntoVector. + (JSC::ScopeNode::emitStatementsBytecode): Added. + (JSC::ScopeNode::singleStatement): Added. + (JSC::ProgramNode::emitBytecode): Call emitStatementsBytecode instead + of statementListEmitCode. + (JSC::EvalNode::emitBytecode): Ditto. + (JSC::EvalNode::generateBytecode): Removed code to clear the children + vector. This optimization is no longer possible since everything is in + a single arena. + (JSC::FunctionBodyNode::emitBytecode): Call emitStatementsBytecode + insetad of statementListEmitCode and check for the return node using + the new functions. + + * parser/Nodes.h: Changed VarStack to store const Identifier* instead + of Identifier and rely on the arena to control lifetime. Added a new + ParserArenaFreeable class. Made ParserArenaDeletable inherit from + FastAllocBase instead of having its own operator new. Base the Node + class on ParserArenaFreeable. Changed the various Node classes + to use const Identifier& instead of Identifier to avoid the need to + call their destructors and allow them to function as "freeable" in the + arena. Removed extraneous JSC_FAST_CALL on definitions of inline functions. + Changed ElementNode, PropertyNode, ArgumentsNode, ParameterNode, + CaseClauseNode, ClauseListNode, and CaseBlockNode to use ParserArenaFreeable + as a base class since they do not descend from Node. Eliminated the + StatementVector type and instead have various classes use SourceElements* + instead of StatementVector. This prevents those classes from having th + use ParserArenaDeletable to make sure the vector destructor is called. + + * parser/Parser.cpp: + (JSC::Parser::parse): Pass the arena to the lexer. + + * parser/Parser.h: Added an include of ParserArena.h, which is no longer + included by Nodes.h. + + * parser/ParserArena.cpp: + (JSC::ParserArena::ParserArena): Added. Initializes the new members, + m_freeableMemory, m_freeablePoolEnd, and m_identifiers. + (JSC::ParserArena::freeablePool): Added. Computes the pool pointer, + since we store only the current pointer and the end of pool pointer. + (JSC::ParserArena::deallocateObjects): Added. Contains the common + memory-deallocation logic used by both the destructor and the + reset function. + (JSC::ParserArena::~ParserArena): Changed to call deallocateObjects. + (JSC::ParserArena::reset): Ditto. Also added code to zero out the + new structures, and switched to use clear() instead of shrink(0) since + we don't really reuse arenas. + (JSC::ParserArena::makeNumericIdentifier): Added. + (JSC::ParserArena::allocateFreeablePool): Added. Used when the pool + is empty. + (JSC::ParserArena::isEmpty): Added. No longer inline, which is fine + since this is used only for assertions at the moment. + + * parser/ParserArena.h: Added an actual arena of "freeable" objects, + ones that don't need destructors to be called. Also added the segmented + vector of identifiers that used to be in the Lexer. + + * runtime/FunctionConstructor.cpp: + (JSC::extractFunctionBody): Use singleStatement function rather than + getting at a StatementVector. + + * runtime/FunctionPrototype.cpp: + (JSC::functionProtoFuncToString): Call isHostFunction on the body + rather than the function object. + + * runtime/JSFunction.cpp: + (JSC::JSFunction::JSFunction): Moved the structure version of this in + here from the header. It's not hot enough that it needs to be inlined. + (JSC::JSFunction::isHostFunction): Moved this in here from the header. + It's now a helper to be used only within the class. + (JSC::JSFunction::setBody): Moved this in here. It's not hot enough that + it needs to be inlined, and we want to be able to compile the header + without the definition of FunctionBodyNode. + + * runtime/JSFunction.h: Eliminated the include of "Nodes.h". This was + exposing too much JavaScriptCore dependency to WebCore. Because of this + change and some changes made to WebCore, we could now export a lot fewer + headers from JavaScriptCore, but I have not done that yet in this check-in. + Made a couple functions non-inline. Removes some isHostFunction() assertions. + + * wtf/FastAllocBase.h: Added the conventional using statements we use in + WTF so we can use identifiers from the WTF namespace without explicit + namespace qualification or namespace directive. This is the usual WTF style, + although it's unconventional in the C++ world. We use the namespace primarily + for link-time disambiguation, not compile-time. + + * wtf/FastMalloc.cpp: Fixed an incorrect comment. + +2009-05-13 Xan Lopez + + Unreviewed build fix: add JITStubCall.h to files list. + + * GNUmakefile.am: + +2009-05-13 Ariya Hidayat + + Unreviewed build fix, as suggested by Yael Aharon . + + * wtf/qt/ThreadingQt.cpp: + (WTF::waitForThreadCompletion): renamed IsValid to isValid. + +2009-05-13 Jan Michael Alonzo + + Revert r43562 - [Gtk] WTF_USE_JSC is already defined in + WebCore/config.h. + + * wtf/Platform.h: + +2009-05-12 Gavin Barraclough + + Reviewed by Oliver Hunt. + + Add SamplingCounter tool to provide a simple mechanism for counting events in JSC + (enabled using ENABLE(SAMPLING_COUNTERS)). To count events within a single function + use the class 'SamplingCounter', where the counter may be incremented from multiple + functions 'GlobalSamplingCounter' may be convenient; all other counters (stack or + heap allocated, rather than statically declared) should use the DeletableSamplingCounter. + Further description of these classes is provided alongside their definition in + SamplingTool.h. + + Counters may be incremented from c++ by calling the 'count()' method on the counter, + or may be incremented by JIT code by using the 'emitCount()' method within the JIT. + + This patch also fixes CODEBLOCK_SAMPLING, which was missing a null pointer check. + + * JavaScriptCore.exp: + * assembler/MacroAssemblerX86.h: + (JSC::MacroAssemblerX86::addWithCarry32): + (JSC::MacroAssemblerX86::and32): + (JSC::MacroAssemblerX86::or32): + * assembler/MacroAssemblerX86Common.h: + (JSC::MacroAssemblerX86Common::and32): + (JSC::MacroAssemblerX86Common::or32): + * assembler/MacroAssemblerX86_64.h: + (JSC::MacroAssemblerX86_64::and32): + (JSC::MacroAssemblerX86_64::or32): + (JSC::MacroAssemblerX86_64::addPtr): + * assembler/X86Assembler.h: + (JSC::X86Assembler::): + (JSC::X86Assembler::adcl_im): + (JSC::X86Assembler::addq_im): + (JSC::X86Assembler::andl_im): + (JSC::X86Assembler::orl_im): + * bytecode/SamplingTool.cpp: + (JSC::AbstractSamplingCounter::dump): + * bytecode/SamplingTool.h: + (JSC::AbstractSamplingCounter::count): + (JSC::GlobalSamplingCounter::name): + (JSC::SamplingCounter::SamplingCounter): + * jit/JIT.h: + * jit/JITCall.cpp: + (JSC::): + * jit/JITInlineMethods.h: + (JSC::JIT::setSamplingFlag): + (JSC::JIT::clearSamplingFlag): + (JSC::JIT::emitCount): + * jsc.cpp: + (runWithScripts): + * parser/Nodes.cpp: + (JSC::ScopeNode::ScopeNode): + * wtf/Platform.h: + +2009-05-13 Steve Falkenburg + + Windows build fix. + + * JavaScriptCore.vcproj/JavaScriptCore.make: + +2009-05-12 Steve Falkenburg + + Windows build fix. + + * JavaScriptCore.vcproj/JavaScriptCore.make: + +2009-05-12 Oliver Hunt + + Reviewed by Gavin Barraclough. + + Crash occurs at JSC::Interpreter::execute() when loading http://www.sears.com + + We created the arguments objects before an op_push_scope but not + before op_push_new_scope, this meant a null arguments object could + be resolved inside catch blocks. + + * bytecompiler/BytecodeGenerator.cpp: + (JSC::BytecodeGenerator::emitPushNewScope): + +2009-05-12 Oliver Hunt + + Reviewed by Gavin Barraclough. + + Crash occurs at JSC::JSActivation::mark() when loading http://www.monster.com; http://www.cnet.com + Crash loading www.google.dk/ig (and other igoogle's as well) + + Following on from the lazy arguments creation patch, it's now + possible for an activation to to have a null register in the callframe + so we can't just blindly mark the local registers in an activation, + and must null check first instead. + + * API/tests/testapi.c: + (functionGC): + * API/tests/testapi.js: + (bludgeonArguments.return.g): + (bludgeonArguments): + * runtime/JSActivation.cpp: + (JSC::JSActivation::mark): + +2009-05-12 Gavin Barraclough + + Rubber stamped by Geoff Garen. + + WTF_USE_CTI_REPATCH_PIC is no longer used, remove. + + * jit/JIT.h: + * jit/JITStubCall.h: + +2009-05-12 Gavin Barraclough + + Reviewed by Maciej Stachowiak. + + We've run into some problems where changing the size of the class JIT leads to + performance fluctuations. Try forcing alignment in an attempt to stabalize this. + + * jit/JIT.h: + +2009-05-12 Kevin Ollivier + + wx build fix. Add ParserArena.cpp to the build. + + * JavaScriptCoreSources.bkl: + +2009-05-12 Oliver Hunt + + Reviewed by Geoff Garen. + + Unsigned underflow on 64bit cannot be treated as a negative number + + This code included some placeswhere we deliberately create negative offsets + from unsigned values, on 32bit this is "safe", but in 64bit builds much + badness occurs. Solution is to use signed types as nature intended. + + * jit/JITStubs.cpp: + (JSC::JITStubs::cti_op_load_varargs): + +2009-05-12 Jan Michael Alonzo + + Reviewed by Holger Freyther. + + [Gtk] Various autotools build refactoring and fixes + https://bugs.webkit.org/show_bug.cgi?id=25286 + + Define WTF_USE_JSC for the Gtk port. + + * wtf/Platform.h: + +2009-05-12 Maciej Stachowiak + + Reviewed by Oliver Hunt. + + - allow all of strictEqual to be inlined into cti_op_stricteq once again + + We had this optimization once but accidentally lost it at some point. + + * runtime/Operations.h: + (JSC::JSValue::strictEqualSlowCaseInline): + (JSC::JSValue::strictEqual): + +2009-05-12 Gavin Barraclough + + Reviewed by Oliver Hunt. + + instanceof should throw if the constructor being tested does not implement + 'HasInstance" (i.e. is a function). Instead we were returning false. + + * interpreter/Interpreter.cpp: + (JSC::isInvalidParamForIn): + (JSC::isInvalidParamForInstanceOf): + (JSC::Interpreter::privateExecute): + * jit/JITStubs.cpp: + (JSC::JITStubs::cti_op_instanceof): + * tests/mozilla/ecma_2/instanceof/instanceof-003.js: + Fix broken test case. + * tests/mozilla/ecma_2/instanceof/regress-7635.js: + Remove broken test case (was an exact duplicate of a test in instanceof-003.js). + +2009-05-12 Oliver Hunt + + Reviewed by Gavin Barraclough. + + Improve function call forwarding performance + + Make creation of the Arguments object occur lazily, so it + is not necessarily created for every function that references + it. Then add logic to Function.apply to allow it to avoid + allocating the Arguments object at all. Helps a lot with + the function forwarding/binding logic in jQuery, Prototype, + and numerous other JS libraries. + + * bytecode/CodeBlock.cpp: + (JSC::CodeBlock::dump): + * bytecode/Opcode.h: + * bytecompiler/BytecodeGenerator.cpp: + (JSC::BytecodeGenerator::BytecodeGenerator): + (JSC::BytecodeGenerator::registerFor): + (JSC::BytecodeGenerator::willResolveToArguments): + (JSC::BytecodeGenerator::uncheckedRegisterForArguments): + (JSC::BytecodeGenerator::createArgumentsIfNecessary): + (JSC::BytecodeGenerator::emitCallEval): + (JSC::BytecodeGenerator::emitPushScope): + * bytecompiler/BytecodeGenerator.h: + * interpreter/Interpreter.cpp: + (JSC::Interpreter::privateExecute): + (JSC::Interpreter::retrieveArguments): + * jit/JIT.cpp: + (JSC::JIT::privateCompileMainPass): + * jit/JIT.h: + * jit/JITOpcodes.cpp: + (JSC::JIT::emit_op_create_arguments): + (JSC::JIT::emit_op_init_arguments): + * jit/JITStubs.cpp: + (JSC::JITStubs::cti_op_tear_off_arguments): + (JSC::JITStubs::cti_op_load_varargs): + * parser/Nodes.cpp: + (JSC::ApplyFunctionCallDotNode::emitBytecode): + +2009-05-11 Gavin Barraclough + + Reviewed by Oliver Hunt. + + Enable use of SamplingFlags directly from JIT code. + + * bytecode/SamplingTool.h: + * jit/JIT.h: + (JSC::JIT::sampleCodeBlock): + (JSC::JIT::sampleInstruction): + * jit/JITInlineMethods.h: + (JSC::JIT::setSamplingFlag): + (JSC::JIT::clearSamplingFlag): + +2009-05-11 Gavin Barraclough + + Reviewed by Cameron Zwarich. + + Implement JIT generation for instanceof for non-objects (always returns false). + Also fixes the sequencing of the prototype and value isObject checks, to no match the spec. + + 0.5% progression on v8 tests overall, due to 3.5% on early-boyer. + + * jit/JIT.cpp: + (JSC::JIT::privateCompileMainPass): + (JSC::JIT::privateCompileSlowCases): + * runtime/JSObject.cpp: + (JSC::JSObject::hasInstance): + * runtime/TypeInfo.h: + (JSC::TypeInfo::TypeInfo): + +2009-05-11 Geoffrey Garen + + Reviewed by Sam Weinig. + + A little more JIT refactoring. + + Rearranged code to more clearly indicate what's conditionally compiled + and why. Now, all shared code is at the top of our JIT files, and all + #if'd code is at the bottom. #if'd code is delineated by large comments. + + Moved functions that relate to the JIT but don't explicitly do codegen + into JIT.cpp. Refactored SSE2 check to store its result as a data member + in the JIT. + + * jit/JIT.cpp: + (JSC::isSSE2Present): + (JSC::JIT::JIT): + (JSC::JIT::unlinkCall): + (JSC::JIT::linkCall): + * jit/JIT.h: + (JSC::JIT::isSSE2Present): + * jit/JITArithmetic.cpp: + (JSC::JIT::emit_op_mod): + (JSC::JIT::emitSlow_op_mod): + * jit/JITCall.cpp: + (JSC::JIT::compileOpCallVarargs): + (JSC::JIT::compileOpCallVarargsSlowCase): + +2009-05-11 Holger Hans Peter Freyther + + Build fix. + + * JavaScriptCore.pri: Build the new JITOpcodes.cpp + +2009-05-11 Sam Weinig + + Reviewed by Geoffrey Garen. + + More re-factoring of JIT code generation. Use a macro to + forward the main switch-statement cases to the helper functions. + + * jit/JIT.cpp: + (JSC::JIT::privateCompileMainPass): + (JSC::JIT::privateCompileSlowCases): + +2009-05-11 Sam Weinig + + Reviewed by Geoffrey Garen. + + More re-factoring of JIT code generation to move opcode generation + to helper functions outside the main switch-statement and gave those + helper functions standardized names. This patch covers the remaining + slow cases. + + * jit/JIT.cpp: + * jit/JIT.h: + * jit/JITOpcodes.cpp: + +2009-05-11 Geoffrey Garen + + Build fix. + + * GNUmakefile.am: Added JITOpcodes.cpp and JITStubCall.h to the project. + +2009-05-11 Geoffrey Garen + + Build fix. + + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Added + JITOpcodes.cpp and JITStubCall.h to the project. + +2009-05-11 Geoffrey Garen + + Reviewed by Sam Weinig. + + Some JIT refactoring. + + Moved JITStubCall* into its own header. + + Modified JITStubCall to ASSERT that its return value is handled correctly. + Also, replaced function template with explicit instantiations to resolve + some confusion. + + Replaced all uses of emit{Get,Put}CTIArgument with explicit peeks, pokes, + and calls to killLastResultRegister(). + + * JavaScriptCore.xcodeproj/project.pbxproj: + * jit/JIT.cpp: + (JSC::JIT::privateCompileMainPass): + (JSC::JIT::privateCompile): + * jit/JIT.h: + * jit/JITArithmetic.cpp: + * jit/JITCall.cpp: + * jit/JITInlineMethods.h: + (JSC::JIT::restoreArgumentReference): + * jit/JITPropertyAccess.cpp: + * jit/JITStubCall.h: Copied from jit/JIT.h. + (JSC::JITStubCall::JITStubCall): + (JSC::JITStubCall::addArgument): + (JSC::JITStubCall::call): + (JSC::JITStubCall::): + +2009-05-11 Sam Weinig + + Reviewed by Geoffrey Garen. + + Start re-factoring JIT code generation to move opcode generation + to helper functions outside the main switch-statement and gave those + helper functions standardized names. This patch only covers the main + pass and all the arithmetic opcodes in the slow path. + + * JavaScriptCore.xcodeproj/project.pbxproj: + * jit/JIT.cpp: + (JSC::JIT::privateCompileMainPass): + (JSC::JIT::privateCompileSlowCases): + * jit/JIT.h: + * jit/JITArithmetic.cpp: + * jit/JITOpcodes.cpp: Copied from jit/JIT.cpp. + * jit/JITPropertyAccess.cpp: + +2009-05-11 Steve Falkenburg + + Re-add experimental PGO configs. + + Reviewed by Adam Roben. + + * JavaScriptCore.vcproj/JavaScriptCore.make: + * JavaScriptCore.vcproj/JavaScriptCore.sln: + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: + * JavaScriptCore.vcproj/JavaScriptCoreSubmit.sln: + * JavaScriptCore.vcproj/jsc/jsc.vcproj: + +2009-05-11 Sam Weinig + + Reviewed by Geoffrey "1" Garen. + + Rip out the !USE(CTI_REPATCH_PIC) code. It was untested and unused. + + * jit/JIT.h: + (JSC::JIT::compileGetByIdChainList): + (JSC::JIT::compileGetByIdChain): + (JSC::JIT::compileCTIMachineTrampolines): + * jit/JITPropertyAccess.cpp: + (JSC::JIT::privateCompileGetByIdProto): + (JSC::JIT::privateCompileGetByIdChainList): + (JSC::JIT::privateCompileGetByIdChain): + * jit/JITStubs.cpp: + (JSC::JITStubs::tryCachePutByID): + (JSC::JITStubs::tryCacheGetByID): + +2009-05-11 Dmitry Titov + + GTK build fix - the deprecated waitForThreadCompletion is not needed on GTK. + + * wtf/ThreadingPthreads.cpp: used #ifdef PLATFORM(DARWIN) around waitForThreadCompletion(). + +2009-05-11 Adam Roben + + Build fix for newer versions of GCC + + * wtf/ThreadingPthreads.cpp: Added a declaration of + waitForThreadCompletion before its definition to silence a warning. + +2009-05-11 Dmitry Titov + + Reviewed by Alexey Proskuryakov and Adam Roben. + + https://bugs.webkit.org/show_bug.cgi?id=25348 + Change WTF::ThreadIdentifier to be an actual (but wrapped) thread id, remove ThreadMap. + + * wtf/Threading.h: + (WTF::ThreadIdentifier::ThreadIdentifier): + (WTF::ThreadIdentifier::isValid): + (WTF::ThreadIdentifier::invalidate): + (WTF::ThreadIdentifier::platformId): + ThreadIdentifier is now a class, containing a PlatformThreadIdentifier and + methods that are used across the code on thread ids: construction, comparisons, + check for 'valid' state etc. '0' is used as invalid id, which happens to just work + with all platform-specific thread id implementations. + + All the following files repeatedly reflect the new ThreadIdentifier for each platform. + We remove ThreadMap and threadMapMutex from all of them, remove the functions that + populated/searched/cleared the map and add platform-specific comparison operators + for ThreadIdentifier. + + There are specific temporary workarounds for Safari 4 beta on OSX and Win32 since the + public build uses WTF threading functions with old type of ThreadingIdentifier. + The next time Safari 4 is rebuilt, it will 'automatically' pick up the new type and new + functions so the deprecated ones can be removed. + + * wtf/gtk/ThreadingGtk.cpp: + (WTF::ThreadIdentifier::operator==): + (WTF::ThreadIdentifier::operator!=): + (WTF::initializeThreading): + (WTF::createThreadInternal): + (WTF::waitForThreadCompletion): + (WTF::currentThread): + + * wtf/ThreadingNone.cpp: + (WTF::ThreadIdentifier::operator==): + (WTF::ThreadIdentifier::operator!=): + + * wtf/ThreadingPthreads.cpp: + (WTF::ThreadIdentifier::operator==): + (WTF::ThreadIdentifier::operator!=): + (WTF::initializeThreading): + (WTF::createThreadInternal): + (WTF::waitForThreadCompletion): + (WTF::detachThread): + (WTF::currentThread): + (WTF::waitForThreadCompletion): This is a workaround for Safari 4 beta on Mac. + Safari 4 is linked against old definition of ThreadIdentifier so it treats it as uint32_t. + This 'old' variant of waitForThreadCompletion takes uint32_t and has the old decorated name, so Safari can + load it from JavaScriptCore library. The other functions (CurrentThread() etc) happen to match their previous + decorated names and, while they return pthread_t now, it is a pointer which round-trips through a uint32_t. + This function will be removed as soon as Safari 4 will release next public build. + + * wtf/qt/ThreadingQt.cpp: + (WTF::ThreadIdentifier::operator==): + (WTF::ThreadIdentifier::operator!=): + (WTF::initializeThreading): + (WTF::createThreadInternal): + (WTF::waitForThreadCompletion): + (WTF::currentThread): + + * wtf/ThreadingWin.cpp: + (WTF::ThreadIdentifier::operator==): + (WTF::ThreadIdentifier::operator!=): + (WTF::initializeThreading): + (WTF::createThreadInternal): All the platforms (except Windows) used a sequential + counter as a thread ID and mapped it into platform ID. Windows was using native thread + id and mapped it into thread handle. Since we can always obtain a thread handle + by thread id, createThread now closes the handle. + (WTF::waitForThreadCompletion): obtains another one using OpenThread(id) API. If can not obtain a handle, + it means the thread already exited. + (WTF::detachThread): + (WTF::currentThread): + (WTF::detachThreadDeprecated): old function, renamed (for Win Safari 4 beta which uses it for now). + (WTF::waitForThreadCompletionDeprecated): same. + (WTF::currentThreadDeprecated): same. + (WTF::createThreadDeprecated): same. + + * bytecode/SamplingTool.h: + * bytecode/SamplingTool.cpp: Use DEFINE_STATIC_LOCAL for a static ThreadIdentifier variable, to avoid static constructor. + + * JavaScriptCore.exp: export lists - updated decorated names of the WTF threading functions + since they now take a different type as a parameter. + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: ditto for Windows, plus added "deprecated" functions + that take old parameter type - turns out public beta of Safari 4 uses those, so they need to be kept along for a while. + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: ditto. + +2009-05-11 Darin Adler + + Reviewed by Oliver Hunt. + + Bug 25560: REGRESSION (r34821): "string value".__proto__ gets the wrong object. + https://bugs.webkit.org/show_bug.cgi?id=25560 + rdar://problem/6861069 + + I missed this case back a year ago when I sped up handling + of JavaScript wrappers. Easy to fix. + + * runtime/JSObject.h: + (JSC::JSValue::get): Return the prototype itself if the property name + is __proto__. + * runtime/JSString.cpp: + (JSC::JSString::getOwnPropertySlot): Ditto. + +2009-05-09 Oliver Hunt + + Reviewed by Maciej Stachowiak. + + Rename emitGetFromCallFrameHeader to emitGetFromCallFrameHeaderPtr + + * jit/JIT.cpp: + (JSC::JIT::privateCompileMainPass): + (JSC::JIT::privateCompileCTIMachineTrampolines): + * jit/JIT.h: + * jit/JITInlineMethods.h: + (JSC::JIT::emitGetFromCallFrameHeaderPtr): + (JSC::JIT::emitGetFromCallFrameHeader32): + +2009-05-11 Holger Hans Peter Freyther + + Unreviewed build fix. Build ParserAreana.cpp for Qt + + * JavaScriptCore.pri: + +2009-05-11 Norbert Leser + + Reviewed by Darin Adler. + + https://bugs.webkit.org/show_bug.cgi?id=24536 + + Symbian compilers cannot resolve WTF::PassRefPtr + unless Profile.h is included. + + * profiler/ProfileGenerator.h: + +2009-05-11 Csaba Osztrogonac + + Reviewed by Holger Freyther. + + https://bugs.webkit.org/show_bug.cgi?id=24284 + + * JavaScriptCore.pri: coding style modified + * jsc.pro: duplicated values removed from INCLUDEPATH, DEFINES + +2009-05-11 Gustavo Noronha Silva + + Reviewed by NOBODY (build fix). + + Also add ParserArena, in addition to AllInOne, for release builds, + since adding it to AllInOne breaks Mac. + + * GNUmakefile.am: + +2009-05-11 Gustavo Noronha Silva + + Unreviewed build fix. Adding ParserArena to the autotools build. + + * GNUmakefile.am: + +2009-05-11 Adam Roben + + More Windows build fixes after r43479 + + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: + Export ParserArena::reset. + +2009-05-11 Adam Roben + + Windows build fixes after r43479 + + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Added + ParserArena to the project. + + * parser/NodeConstructors.h: Added a missing include. + (JSC::ParserArenaDeletable::operator new): Marked these as inline. + +2009-05-10 Maciej Stachowiak + + Reviewed by Geoff Garen. + + - fixed REGRESSION(r43432): Many JavaScriptCore tests crash in 64-bit + https://bugs.webkit.org/show_bug.cgi?id=25680 + + Accound for the 64-bit instruction prefix when rewriting mov to lea on 64-bit. + + * jit/JIT.h: + * jit/JITPropertyAccess.cpp: + (JSC::JIT::patchGetByIdSelf): + (JSC::JIT::patchPutByIdReplace): + +2009-05-10 Darin Adler + + Reviewed by Cameron Zwarich. + + Bug 25674: syntax tree nodes should use arena allocation + https://bugs.webkit.org/show_bug.cgi?id=25674 + + Part two: Remove reference counting from most nodes. + + * JavaScriptCore.exp: Updated. + + * JavaScriptCore.xcodeproj/project.pbxproj: Added ParserArena.h and .cpp. + + * parser/Grammar.y: Replaced uses of ParserRefCountedData with uses of + ParserArenaData. Took out now-nonfunctional code that tries to manually + release declaration list. Changed the new calls that create FuncDeclNode + and FuncExprNode so that they use the proper version of operator new for + the reference-counted idiom, not the deletion idiom. + + * parser/NodeConstructors.h: + (JSC::ParserArenaDeletable::operator new): Added. + (JSC::ParserArenaRefCounted::ParserArenaRefCounted): Added. + (JSC::Node::Node): Removed ParserRefCounted initializer. + (JSC::ElementNode::ElementNode): Ditto. + (JSC::PropertyNode::PropertyNode): Ditto. + (JSC::ArgumentsNode::ArgumentsNode): Ditto. + (JSC::SourceElements::SourceElements): Ditto. + (JSC::ParameterNode::ParameterNode): Ditto. + (JSC::FuncExprNode::FuncExprNode): Added ParserArenaRefCounted initializer. + (JSC::FuncDeclNode::FuncDeclNode): Ditto. + (JSC::CaseClauseNode::CaseClauseNode): Removed ParserRefCounted initializer. + (JSC::ClauseListNode::ClauseListNode): Ditto. + (JSC::CaseBlockNode::CaseBlockNode): Ditto. + + * parser/NodeInfo.h: Replaced uses of ParserRefCountedData with uses of + ParserArenaData. + + * parser/Nodes.cpp: + (JSC::ScopeNode::ScopeNode): Added ParserArenaRefCounted initializer. + (JSC::ProgramNode::create): Use the proper version of operator new for + the reference-counted idiom, not the deletion idiom. Use the arena + contains function instead of the vecctor find function. + (JSC::EvalNode::create): Use the proper version of operator new for + the reference-counted idiom, not the deletion idiom. Use the arena + reset function instead of the vector shrink function. + (JSC::FunctionBodyNode::createNativeThunk): Use the proper version + of operator new for the reference-counted idiom, not the deletion idiom. + (JSC::FunctionBodyNode::create): More of the same. + + * parser/Nodes.h: Added ParserArenaDeletable and ParserArenaRefCounted + to replace ParserRefCounted. Fixed inheritance so only the classes that + need reference counting inherit from ParserArenaRefCounted. + + * parser/Parser.cpp: + (JSC::Parser::parse): Set m_sourceElements to 0 since it now starts + uninitialized. Just set it to 0 again in the failure case, since it's + now just a raw pointer, not an owning one. + (JSC::Parser::reparseInPlace): Removed now-unneeded get() function. + (JSC::Parser::didFinishParsing): Replaced uses of ParserRefCountedData + with uses of ParserArenaData. + + * parser/Parser.h: Less RefPtr, more arena. + + * parser/ParserArena.cpp: Added. + * parser/ParserArena.h: Added. + + * runtime/JSGlobalData.cpp: + (JSC::JSGlobalData::~JSGlobalData): Removed arena-related code, since it's + now in the Parser. + (JSC::JSGlobalData::createLeaked): Removed unneeded #ifndef. + (JSC::JSGlobalData::createNativeThunk): Tweaked #if a bit. + + * runtime/JSGlobalData.h: Removed parserArena, which is now in Parser. + + * wtf/RefCounted.h: Added deletionHasBegun function, for use in + assertions to catch deletion not done by the deref function. + +2009-05-10 David Kilzer + + Part 2: Try to fix the Windows build by adding a symbol which is really just a re-mangling of a changed method signature + + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: + +2009-05-10 David Kilzer + + Try to fix the Windows build by removing an unknown symbol + + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: + +2009-05-10 David Kilzer + + Touch Nodes.cpp to try to fix Windows build + + * parser/Nodes.cpp: Removed whitespace. + +2009-05-10 Darin Adler + + Reviewed by Maciej Stachowiak. + + Quick fix for failures seen on buildbot. Maciej plans a better fix later. + + * wtf/dtoa.cpp: Change the hardcoded number of 32-bit words in a BigInt + from 32 to 64. Parsing "1e500", for example, requires more than 32 words. + +2009-05-10 Darin Adler + + Reviewed by Sam Weinig. + + Bug 25674: syntax tree nodes should use arena allocation + Part one: Change lifetimes so we won't have to use reference + counting so much, but don't eliminate the reference counts + entirely yet. + + * JavaScriptCore.exp: Updated. + + * bytecompiler/BytecodeGenerator.cpp: + (JSC::BytecodeGenerator::BytecodeGenerator): Update for use of raw pointers + instead of RefPtr. + (JSC::BytecodeGenerator::emitCall): Ditto. + (JSC::BytecodeGenerator::emitConstruct): Ditto. + + * parser/Grammar.y: Update node creating code to use new (JSGlobalData*) + instead of the plain new. At the moment this is just a hook for future + arena allocation; it's inline and JSGlobalData* is not used. + + * parser/NodeConstructors.h: Updated for name change of parserObjects to + parserArena. Also added explicit initialization for raw pointers that used + to be RefPtr. Also removed some uses of get() that aren't needed now that + the pointers are raw pointers. Also eliminated m_parameter from FuncExprNode + and FuncDeclNode. Also changed node-creating code to use new (JSGlobalData*) + as above. + + * parser/Nodes.cpp: Eliminated NodeReleaser and all use of it. + (JSC::ParserRefCounted::ParserRefCounted): Updated for name change of + parserObjects to parserArena. + (JSC::SourceElements::append): Use raw pointers. + (JSC::ArrayNode::emitBytecode): Ditto. + (JSC::ArrayNode::isSimpleArray): Ditto. + (JSC::ArrayNode::toArgumentList): Ditto. + (JSC::ObjectLiteralNode::emitBytecode): Ditto. + (JSC::PropertyListNode::emitBytecode): Ditto. + (JSC::BracketAccessorNode::emitBytecode): Ditto. + (JSC::DotAccessorNode::emitBytecode): Ditto. + (JSC::ArgumentListNode::emitBytecode): Ditto. + (JSC::NewExprNode::emitBytecode): Ditto. + (JSC::EvalFunctionCallNode::emitBytecode): Ditto. + (JSC::FunctionCallValueNode::emitBytecode): Ditto. + (JSC::FunctionCallResolveNode::emitBytecode): Ditto. + (JSC::FunctionCallBracketNode::emitBytecode): Ditto. + (JSC::FunctionCallDotNode::emitBytecode): Ditto. + (JSC::CallFunctionCallDotNode::emitBytecode): Ditto. + (JSC::ApplyFunctionCallDotNode::emitBytecode): Ditto. + (JSC::PostfixBracketNode::emitBytecode): Ditto. + (JSC::PostfixDotNode::emitBytecode): Ditto. + (JSC::DeleteBracketNode::emitBytecode): Ditto. + (JSC::DeleteDotNode::emitBytecode): Ditto. + (JSC::DeleteValueNode::emitBytecode): Ditto. + (JSC::VoidNode::emitBytecode): Ditto. + (JSC::TypeOfValueNode::emitBytecode): Ditto. + (JSC::PrefixBracketNode::emitBytecode): Ditto. + (JSC::PrefixDotNode::emitBytecode): Ditto. + (JSC::UnaryOpNode::emitBytecode): Ditto. + (JSC::BinaryOpNode::emitStrcat): Ditto. + (JSC::BinaryOpNode::emitBytecode): Ditto. + (JSC::EqualNode::emitBytecode): Ditto. + (JSC::StrictEqualNode::emitBytecode): Ditto. + (JSC::ReverseBinaryOpNode::emitBytecode): Ditto. + (JSC::ThrowableBinaryOpNode::emitBytecode): Ditto. + (JSC::InstanceOfNode::emitBytecode): Ditto. + (JSC::LogicalOpNode::emitBytecode): Ditto. + (JSC::ConditionalNode::emitBytecode): Ditto. + (JSC::ReadModifyResolveNode::emitBytecode): Ditto. + (JSC::AssignResolveNode::emitBytecode): Ditto. + (JSC::AssignDotNode::emitBytecode): Ditto. + (JSC::ReadModifyDotNode::emitBytecode): Ditto. + (JSC::AssignBracketNode::emitBytecode): Ditto. + (JSC::ReadModifyBracketNode::emitBytecode): Ditto. + (JSC::CommaNode::emitBytecode): Ditto. + (JSC::ConstDeclNode::emitCodeSingle): Ditto. + (JSC::ConstDeclNode::emitBytecode): Ditto. + (JSC::ConstStatementNode::emitBytecode): Ditto. + (JSC::statementListEmitCode): Ditto. + (JSC::BlockNode::emitBytecode): Ditto. + (JSC::ExprStatementNode::emitBytecode): Ditto. + (JSC::VarStatementNode::emitBytecode): Ditto. + (JSC::IfNode::emitBytecode): Ditto. + (JSC::IfElseNode::emitBytecode): Ditto. + (JSC::DoWhileNode::emitBytecode): Ditto. + (JSC::WhileNode::emitBytecode): Ditto. + (JSC::ForNode::emitBytecode): Ditto. + (JSC::ForInNode::emitBytecode): Ditto. + (JSC::ReturnNode::emitBytecode): Ditto. + (JSC::WithNode::emitBytecode): Ditto. + (JSC::CaseBlockNode::tryOptimizedSwitch): Ditto. + (JSC::CaseBlockNode::emitBytecodeForBlock): Ditto. + (JSC::SwitchNode::emitBytecode): Ditto. + (JSC::LabelNode::emitBytecode): Ditto. + (JSC::ThrowNode::emitBytecode): Ditto. + (JSC::TryNode::emitBytecode): Ditto. + (JSC::ScopeNodeData::ScopeNodeData): Use swap to transfer ownership + of the arena, varStack and functionStack. + (JSC::ScopeNode::ScopeNode): Pass in the arena when creating the + ScopeNodeData. + (JSC::ProgramNode::ProgramNode): Made this inline since it's used + in only one place. + (JSC::ProgramNode::create): Changed this to return a PassRefPtr since + we plan to have the scope nodes be outside the arena, so they will need + some kind of ownership transfer (maybe auto_ptr instead of PassRefPtr + in the future, though). Remove the node from the newly-created arena to + avoid a circular reference. Later we'll keep the node out of the arena + by using a different operator new, but for now it's the ParserRefCounted + constructor that puts the node into the arena, and there's no way to + bypass that. + (JSC::EvalNode::EvalNode): Ditto. + (JSC::EvalNode::create): Ditto. + (JSC::FunctionBodyNode::FunctionBodyNode): Ditto. + (JSC::FunctionBodyNode::createNativeThunk): Moved the code that + reseets the arena here instead of the caller. + (JSC::FunctionBodyNode::create): Same change as the other create + functions above. + (JSC::FunctionBodyNode::emitBytecode): Use raw pointers. + + * parser/Nodes.h: Removed NodeReleaser. Changed FunctionStack to + use raw pointers. Removed the releaseNodes function. Added an override + of operator new that takes a JSGlobalData* to prepare for future arena use. + Use raw pointers instead of RefPtr everywhere possible. + + * parser/Parser.cpp: + (JSC::Parser::reparseInPlace): Pass the arena in. + + * parser/Parser.h: + (JSC::Parser::parse): Updated for name change of parserObjects to parserArena. + (JSC::Parser::reparse): Ditto. + * runtime/FunctionConstructor.cpp: + (JSC::extractFunctionBody): Ditto. + * runtime/JSGlobalData.cpp: + (JSC::JSGlobalData::~JSGlobalData): Ditto. + (JSC::JSGlobalData::createNativeThunk): Moved arena manipulation into the + FunctionBodyNode::createNativeThunk function. + + * runtime/JSGlobalData.h: Tweaked formatting and renamed parserObjects to + parserArena. + + * wtf/NotFound.h: Added the usual "using WTF" to this header to match the + rest of WTF. + +2009-05-10 Dimitri Glazkov + + Reviewed by Geoffrey Garen. + + https://bugs.webkit.org/show_bug.cgi?id=25670 + Remove no longer valid chunk of code from dtoa. + + * wtf/dtoa.cpp: + (WTF::dtoa): Removed invalid code. + +2009-05-10 Alexey Proskuryakov + + Reviewed by Geoff Garen. + + "Class const *" is the same as "const Class*", use the latter syntax consistently. + + See . + + * pcre/pcre_compile.cpp: + (calculateCompiledPatternLength): + * runtime/JSObject.h: + (JSC::JSObject::offsetForLocation): + (JSC::JSObject::locationForOffset): + +2009-05-10 Maciej Stachowiak + + Reviewed by Alexey Proskuryakov. + + - speedup dtoa/strtod + + Added a bunch of inlining, and replaced malloc with stack allocation. + + 0.5% SunSpider speedup (7% on string-tagcloud). + + * runtime/NumberPrototype.cpp: + (JSC::integerPartNoExp): + (JSC::numberProtoFuncToExponential): + * runtime/UString.cpp: + (JSC::concatenate): + (JSC::UString::from): + * wtf/dtoa.cpp: + (WTF::BigInt::BigInt): + (WTF::BigInt::operator=): + (WTF::Balloc): + (WTF::Bfree): + (WTF::multadd): + (WTF::s2b): + (WTF::i2b): + (WTF::mult): + (WTF::pow5mult): + (WTF::lshift): + (WTF::cmp): + (WTF::diff): + (WTF::b2d): + (WTF::d2b): + (WTF::ratio): + (WTF::strtod): + (WTF::quorem): + (WTF::freedtoa): + (WTF::dtoa): + * wtf/dtoa.h: + +2009-05-09 Mike Hommey + + Reviewed by Geoffrey Garen. Landed by Jan Alonzo. + + Enable JIT on x86-64 gtk+ + https://bugs.webkit.org/show_bug.cgi?id=24724 + + * GNUmakefile.am: + +2009-05-09 Geoffrey Garen + + Reviewed by Cameron Zwarich. + + Removed the last non-call-related manually managed JIT stub call. + + * jit/JITArithmetic.cpp: + (JSC::JIT::compileFastArithSlow_op_rshift): Fully use the JITStubCall + abstraction, instead of emitPutJITStubArg. + +2009-05-09 Sebastian Andrzej Siewior + + Reviewed by Gustavo Noronha. + + https://bugs.webkit.org/show_bug.cgi?id=25653 + PLATFORM(X86_64) inherits ia64 + + __ia64__ is defined by gcc in an IA64 arch and has completely + nothing in common with X86-64 exept both are from Intel and have + an 64bit address space. That's it. Since code seems to expect x86 + here, ia64 has to go. + + * wtf/Platform.h: + +2009-05-09 Gustavo Noronha Silva + + Suggested by Geoffrey Garen. + + Assume SSE2 is present on X86-64 and on MAC X86-32. This fixes a + build breakage on non-Mac X86-64 when JIT is enabled. + + * jit/JITArithmetic.cpp: + +2009-05-09 Gustavo Noronha Silva + + Build fix, adding missing files to make dist. + + * GNUmakefile.am: + +2009-05-09 Geoffrey Garen + + Windows build fix. + + * assembler/X86Assembler.h: + (JSC::X86Assembler::patchLoadToLEA): + +2009-05-09 Geoffrey Garen + + Windows build fix. + + * assembler/X86Assembler.h: + (JSC::X86Assembler::patchLoadToLEA): + +2009-05-09 Maciej Stachowiak + + Reviewed by Gavin Barraclough. + + Original patch by John McCall. Updated by Cameron Zwarich. Further refined by me. + + - Assorted speedups to property access + + ~.3%-1% speedup on SunSpider + + 1) When we know from the structure ID that an object is using inline storage, plant direct + loads and stores against it; no need to indirect through storage pointer. + + 2) Also because of the above, union the property storage pointer with the first inline property + slot and add an extra inline property slot. + + * assembler/AbstractMacroAssembler.h: + (JSC::AbstractMacroAssembler::CodeLocationInstruction::CodeLocationInstruction): + (JSC::AbstractMacroAssembler::CodeLocationInstruction::patchLoadToLEA): + (JSC::::CodeLocationCommon::instructionAtOffset): + * assembler/MacroAssembler.h: + (JSC::MacroAssembler::storePtr): + * assembler/MacroAssemblerX86.h: + (JSC::MacroAssemblerX86::store32): + * assembler/MacroAssemblerX86_64.h: + (JSC::MacroAssemblerX86_64::storePtr): + * assembler/X86Assembler.h: + (JSC::X86Assembler::movq_EAXm): + (JSC::X86Assembler::movl_rm): + (JSC::X86Assembler::patchLoadToLEA): + * jit/JIT.cpp: + (JSC::JIT::privateCompileMainPass): + * jit/JIT.h: + * jit/JITPropertyAccess.cpp: + (JSC::JIT::compileGetByIdHotPath): + (JSC::JIT::compilePutByIdHotPath): + (JSC::JIT::compilePutDirectOffset): + (JSC::JIT::compileGetDirectOffset): + (JSC::JIT::privateCompilePutByIdTransition): + (JSC::JIT::patchGetByIdSelf): + (JSC::JIT::patchPutByIdReplace): + (JSC::JIT::privateCompileGetByIdSelf): + (JSC::JIT::privateCompileGetByIdProto): + (JSC::JIT::privateCompileGetByIdSelfList): + (JSC::JIT::privateCompileGetByIdProtoList): + (JSC::JIT::privateCompileGetByIdChainList): + (JSC::JIT::privateCompileGetByIdChain): + (JSC::JIT::privateCompilePutByIdReplace): + * runtime/JSObject.cpp: + (JSC::JSObject::mark): + (JSC::JSObject::removeDirect): + * runtime/JSObject.h: + (JSC::JSObject::propertyStorage): + (JSC::JSObject::getDirect): + (JSC::JSObject::getOffset): + (JSC::JSObject::offsetForLocation): + (JSC::JSObject::locationForOffset): + (JSC::JSObject::getDirectOffset): + (JSC::JSObject::putDirectOffset): + (JSC::JSObject::isUsingInlineStorage): + (JSC::JSObject::): + (JSC::JSObject::JSObject): + (JSC::JSObject::~JSObject): + (JSC::Structure::isUsingInlineStorage): + (JSC::JSObject::putDirect): + (JSC::JSObject::putDirectWithoutTransition): + (JSC::JSObject::allocatePropertyStorageInline): + * runtime/Structure.h: + +2009-05-09 Geoffrey Garen + + Reviewed by Gavin Barraclough. + + Changed all our JIT stubs so that they return a maximum of 1 JS value or + two non-JS pointers, and do all other value returning through out + parameters, in preparation for 64bit JS values on a 32bit system. + + Stubs that used to return two JSValues now return one JSValue and take + and out parameter specifying where in the register array the second + value should go. + + SunSpider reports no change. + + * jit/JIT.cpp: + (JSC::JIT::privateCompileMainPass): + * jit/JITArithmetic.cpp: + (JSC::JIT::compileFastArithSlow_op_post_inc): + (JSC::JIT::compileFastArithSlow_op_post_dec): + * jit/JITStubs.cpp: + (JSC::JITStubs::cti_op_call_arityCheck): + (JSC::JITStubs::cti_op_resolve_func): + (JSC::JITStubs::cti_op_post_inc): + (JSC::JITStubs::cti_op_resolve_with_base): + (JSC::JITStubs::cti_op_post_dec): + * jit/JITStubs.h: + (JSC::): + +2009-05-08 Geoffrey Garen + + Reviewed by Cameron Zwarich. + + Fixed CrashTracer: [REGRESSION] >400 crashes + in Safari at com.apple.JavaScriptCore • JSC::BytecodeGenerator::emitComplexJumpScopes + 468 + https://bugs.webkit.org/show_bug.cgi?id=25658 + + * bytecompiler/BytecodeGenerator.cpp: + (JSC::BytecodeGenerator::emitComplexJumpScopes): Guard the whole loop + with a bounds check. The old loop logic would decrement and read topScope + without a bounds check, which could cause crashes on page boundaries. + +2009-05-08 Jan Michael Alonzo + + Reviewed by NOBODY (BuildFix). + + Gtk fix: add LiteralParser to the build script per r43424. + + Add LiteralParser to the Qt and Wx build scripts too. + + * GNUmakefile.am: + * JavaScriptCore.pri: + * JavaScriptCoreSources.bkl: + +2009-05-08 Oliver Hunt + + Reviewed by Gavin Barraclough and Darin Adler. + + Add a limited literal parser for eval to handle object and array literals fired at eval + + This is a simplified parser and lexer that we can throw at strings passed to eval + in case a site is using eval to parse JSON (eg. json2.js). The lexer is intentionally + limited (in effect it's whitelisting a limited "common" subset of the JSON grammar) + as this decreases the likelihood of us wating time attempting to parse any significant + amount of non-JSON content. + + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: + * JavaScriptCore.xcodeproj/project.pbxproj: + * interpreter/Interpreter.cpp: + (JSC::Interpreter::callEval): + * runtime/JSGlobalObjectFunctions.cpp: + (JSC::globalFuncEval): + * runtime/LiteralParser.cpp: Added. + (JSC::isStringCharacter): + (JSC::LiteralParser::Lexer::lex): + (JSC::LiteralParser::Lexer::lexString): + (JSC::LiteralParser::Lexer::lexNumber): + (JSC::LiteralParser::parseStatement): + (JSC::LiteralParser::parseExpression): + (JSC::LiteralParser::parseArray): + (JSC::LiteralParser::parseObject): + (JSC::LiteralParser::StackGuard::StackGuard): + (JSC::LiteralParser::StackGuard::~StackGuard): + (JSC::LiteralParser::StackGuard::isSafe): + * runtime/LiteralParser.h: Added. + (JSC::LiteralParser::LiteralParser): + (JSC::LiteralParser::attemptJSONParse): + (JSC::LiteralParser::): + (JSC::LiteralParser::Lexer::Lexer): + (JSC::LiteralParser::Lexer::next): + (JSC::LiteralParser::Lexer::currentToken): + (JSC::LiteralParser::abortParse): + +2009-05-08 Geoffrey Garen + + Not reviewed. + + Restored a Mozilla JS test I accidentally gutted. + + * tests/mozilla/ecma/Array/15.4.4.2.js: + (getTestCases): + (test): + +2009-05-08 Geoffrey Garen + + Reviewed by Gavin Barraclough. + + More abstraction for JITStub calls from JITed code. + + Added a JITStubCall class that automatically handles things like assigning + arguments to different stack slots and storing return values. Deployed + the class in about a billion places. A bunch more places remain to be + fixed up, but this is a good stopping point for now. + + * jit/JIT.cpp: + (JSC::JIT::emitTimeoutCheck): + (JSC::JIT::privateCompileMainPass): + (JSC::JIT::privateCompileSlowCases): + (JSC::JIT::privateCompile): + * jit/JIT.h: + (JSC::JIT::JSRInfo::JSRInfo): + (JSC::JITStubCall::JITStubCall): + (JSC::JITStubCall::addArgument): + (JSC::JITStubCall::call): + (JSC::JITStubCall::): + (JSC::CallEvalJITStub::CallEvalJITStub): + * jit/JITArithmetic.cpp: + (JSC::JIT::compileFastArithSlow_op_lshift): + (JSC::JIT::compileFastArithSlow_op_rshift): + (JSC::JIT::compileFastArithSlow_op_jnless): + (JSC::JIT::compileFastArithSlow_op_bitand): + (JSC::JIT::compileFastArithSlow_op_mod): + (JSC::JIT::compileFastArith_op_mod): + (JSC::JIT::compileFastArithSlow_op_post_inc): + (JSC::JIT::compileFastArithSlow_op_post_dec): + (JSC::JIT::compileFastArithSlow_op_pre_inc): + (JSC::JIT::compileFastArithSlow_op_pre_dec): + (JSC::JIT::compileFastArith_op_add): + (JSC::JIT::compileFastArith_op_mul): + (JSC::JIT::compileFastArith_op_sub): + (JSC::JIT::compileBinaryArithOpSlowCase): + (JSC::JIT::compileFastArithSlow_op_add): + (JSC::JIT::compileFastArithSlow_op_mul): + * jit/JITCall.cpp: + (JSC::JIT::compileOpCall): + (JSC::): + * jit/JITPropertyAccess.cpp: + (JSC::JIT::compileGetByIdHotPath): + (JSC::JIT::compilePutByIdHotPath): + (JSC::JIT::compileGetByIdSlowCase): + (JSC::JIT::compilePutByIdSlowCase): + * jit/JITStubs.cpp: + (JSC::JITStubs::cti_op_resolve_func): + (JSC::JITStubs::cti_op_resolve_with_base): + +2009-05-08 Cameron Zwarich + + Reviewed by Maciej Stachowiak. + + Add a new opcode jnlesseq, and optimize its compilation in the JIT using + techniques similar to what were used to optimize jnless in r43363. + + This gives a 0.7% speedup on SunSpider, particularly on the tests 3d-cube, + control-flow-recursive, date-format-xparb, and string-base64. + + * bytecode/CodeBlock.cpp: + (JSC::CodeBlock::dump): Add support for dumping op_jnlesseq. + * bytecode/Opcode.h: Add op_jnlesseq to the list of opcodes. + * bytecompiler/BytecodeGenerator.cpp: + (JSC::BytecodeGenerator::emitJumpIfFalse): Add a peephole optimization + for op_jnlesseq when emitting lesseq followed by a jump. + * interpreter/Interpreter.cpp: + (JSC::Interpreter::privateExecute): Add case for op_jnlesseq. + * jit/JIT.cpp: + (JSC::JIT::privateCompileMainPass): Add case for op_jnlesseq. + (JSC::JIT::privateCompileSlowCases): Add case for op_jnlesseq. + * jit/JIT.h: + * jit/JITArithmetic.cpp: + (JSC::JIT::compileFastArith_op_jnlesseq): Added. + (JSC::JIT::compileFastArithSlow_op_jnlesseq): Added. + * jit/JITStubs.cpp: + (JSC::JITStubs::cti_op_jlesseq): Added. + * jit/JITStubs.h: + +2009-05-08 Maciej Stachowiak + + Reviewed by Cameron Zwarich. + + - fix test failures on 64-bit + + * jit/JITArithmetic.cpp: + (JSC::JIT::compileFastArithSlow_op_jnless): Avoid accidentaly treating an + immediate int as an immediate float in the 64-bit value representation. + +2009-05-08 Gavin Barraclough + + Rubber stamped by Oliver Hunt. + + Removing an empty constructor and an uncalled, empty function seems to be a + pretty solid 1% regeression on my machine, so I'm going to put them back. + Um. Yeah, this this pretty pointles and makes no sense at all. I officially + lose the will to live in 3... 2... + + * bytecode/SamplingTool.cpp: + (JSC::SamplingTool::notifyOfScope): + * bytecode/SamplingTool.h: + (JSC::SamplingTool::~SamplingTool): + +2009-05-08 Gavin Barraclough + + Reviewed by Oliver "I see lots of ifdefs" Hunt. + + Fix (kinda) for sampling tool breakage. The codeblock sampling tool has become + b0rked due to recent changes in native function calling. The initialization of + a ScopeNode appears to now occur before the sampling tool (or possibly the + interpreter has been brought into existence, wihich leads to crashyness). + + This patch doesn't fix the problem. The crash occurs when tracking a Scope, but + we shouldn't need to track scopes when we're just sampling opcodes, not + codeblocks. Not retaining Scopes when just opcode sampling will reduce sampling + overhead reducing any instrumentation skew, which is a good thing. As a side + benefit this patch also gets the opcode sampling going again, albeit in a bit of + a lame way. Will come back later with a proper fix from codeblock sampling. + + * JavaScriptCore.exp: + * bytecode/SamplingTool.cpp: + (JSC::compareLineCountInfoSampling): + (JSC::SamplingTool::dump): + * bytecode/SamplingTool.h: + (JSC::SamplingTool::SamplingTool): + * parser/Nodes.cpp: + (JSC::ScopeNode::ScopeNode): + +2009-05-07 Mark Rowe + + Rubber-stamped by Oliver Hunt. + + Fix . + Bug 25640: Crash on quit in r43384 nightly build on Leopard w/ Safari 4 beta installed + + Roll out r43366 as it removed symbols that Safari 4 Beta uses. + + * JavaScriptCore.exp: + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: + * bytecode/SamplingTool.cpp: + (JSC::SamplingThread::start): + (JSC::SamplingThread::stop): + * bytecode/SamplingTool.h: + * wtf/CrossThreadRefCounted.h: + (WTF::CrossThreadRefCounted::CrossThreadRefCounted): + (WTF::::ref): + (WTF::::deref): + * wtf/Threading.h: + * wtf/ThreadingNone.cpp: + * wtf/ThreadingPthreads.cpp: + (WTF::threadMapMutex): + (WTF::initializeThreading): + (WTF::threadMap): + (WTF::identifierByPthreadHandle): + (WTF::establishIdentifierForPthreadHandle): + (WTF::pthreadHandleForIdentifier): + (WTF::clearPthreadHandleForIdentifier): + (WTF::createThreadInternal): + (WTF::waitForThreadCompletion): + (WTF::detachThread): + (WTF::currentThread): + * wtf/ThreadingWin.cpp: + (WTF::threadMapMutex): + (WTF::initializeThreading): + (WTF::threadMap): + (WTF::storeThreadHandleByIdentifier): + (WTF::threadHandleForIdentifier): + (WTF::clearThreadHandleForIdentifier): + (WTF::createThreadInternal): + (WTF::waitForThreadCompletion): + (WTF::detachThread): + (WTF::currentThread): + * wtf/gtk/ThreadingGtk.cpp: + (WTF::threadMapMutex): + (WTF::initializeThreading): + (WTF::threadMap): + (WTF::identifierByGthreadHandle): + (WTF::establishIdentifierForThread): + (WTF::threadForIdentifier): + (WTF::clearThreadForIdentifier): + (WTF::createThreadInternal): + (WTF::waitForThreadCompletion): + (WTF::currentThread): + * wtf/qt/ThreadingQt.cpp: + (WTF::threadMapMutex): + (WTF::threadMap): + (WTF::identifierByQthreadHandle): + (WTF::establishIdentifierForThread): + (WTF::clearThreadForIdentifier): + (WTF::threadForIdentifier): + (WTF::initializeThreading): + (WTF::createThreadInternal): + (WTF::waitForThreadCompletion): + (WTF::currentThread): + +2009-05-07 Gustavo Noronha Silva + + Suggested by Oliver Hunt. + + Also check for Linux for the special-cased calling convention. + + * jit/JIT.cpp: + (JSC::JIT::privateCompileCTIMachineTrampolines): + * wtf/Platform.h: + +2009-05-07 Gavin Barraclough + + Reviewed by Maciej Stachowiak. + + Previously, when appending to an existing string and growing the underlying buffer, + we would actually allocate 110% of the required size in order to give us some space + to expand into. Now we treat strings differently based on their size: + + Small Strings (up to 4 pages): + Expand the allocation size to 112.5% of the amount requested. This is largely sicking + to our previous policy, however 112.5% is cheaper to calculate. + + Medium Strings (up to 128 pages): + For pages covering multiple pages over-allocation is less of a concern - any unused + space will not be paged in if it is not used, so this is purely a VM overhead. For + these strings allocate 2x the requested size. + + Large Strings (to infinity and beyond!): + Revert to our 112.5% policy - probably best to limit the amount of unused VM we allow + any individual string be responsible for. + + Additionally, round small allocations up to a multiple of 16 bytes, and medium and + large allocations up to a multiple of page size. + + ~1.5% progression on Sunspider, due to 5% improvement on tagcloud & 15% on validate. + + * runtime/UString.cpp: + (JSC::expandedSize): + +2009-05-07 Geoffrey Garen + + Reviewed by Cameron Zwarich. + + Fixed a minor sequencing error introduced by recent Parser speedups. + + * runtime/JSGlobalData.cpp: + (JSC::JSGlobalData::createNativeThunk): Missed a spot in my last patch. + +2009-05-07 Geoffrey Garen + + Not reviewed. + + * wtf/Platform.h: Reverted an accidental (and performance-catastrophic) + change. + +2009-05-07 Geoffrey Garen + + Reviewed by Cameron Zwarich. + + Fixed a minor sequencing error introduced by recent Parser speedups. + + * parser/Parser.cpp: + (JSC::Parser::reparseInPlace): Missed a spot in my last patch. + +2009-05-07 Geoffrey Garen + + Reviewed by Cameron Zwarich. + + Fixed a minor sequencing error introduced by recent Parser speedups. + + * parser/Parser.cpp: + (JSC::Parser::parse): + * parser/Parser.h: + (JSC::Parser::parse): + (JSC::Parser::reparse): Shrink the parsedObjects vector after allocating + the root node, to avoid leaving a stray node in the vector, since that's + a slight memory leak, and it causes problems during JSGlobalData teardown. + + * runtime/JSGlobalData.cpp: + (JSC::JSGlobalData::~JSGlobalData): ASSERT that we're not being torn + down while we think we're still parsing, since that would cause lots of + bad memory references during our destruction. + +2009-05-07 Geoffrey Garen + + Reviewed by Cameron Zwarich. + + Replaced two more macros with references to the JITStackFrame structure. + + * jit/JIT.cpp: + (JSC::JIT::privateCompileMainPass): + * jit/JITInlineMethods.h: + (JSC::JIT::restoreArgumentReference): + * jit/JITStubs.cpp: + (JSC::): + * jit/JITStubs.h: + +2009-05-07 Oliver Hunt + + Reviewed by Gavin Barraclough. + + Improve native call performance + + Fix the windows build by adding calling convention declarations everywhere, + chose fastcall as that seemed most sensible given we were having to declare + the convention explicitly. In addition switched to fastcall on mac in the + deluded belief that documented fastcall behavior on windows would match + actual its actual behavior. + + * API/JSCallbackFunction.h: + * API/JSCallbackObject.h: + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: + * interpreter/CallFrame.h: + (JSC::ExecState::argumentCount): + * jit/JIT.cpp: + (JSC::JIT::privateCompileCTIMachineTrampolines): + * jsc.cpp: + (functionPrint): + (functionDebug): + (functionGC): + (functionVersion): + (functionRun): + (functionLoad): + (functionSetSamplingFlags): + (functionClearSamplingFlags): + (functionReadline): + (functionQuit): + * runtime/ArrayConstructor.cpp: + (JSC::callArrayConstructor): + * runtime/ArrayPrototype.cpp: + (JSC::arrayProtoFuncToString): + (JSC::arrayProtoFuncToLocaleString): + (JSC::arrayProtoFuncJoin): + (JSC::arrayProtoFuncConcat): + (JSC::arrayProtoFuncPop): + (JSC::arrayProtoFuncPush): + (JSC::arrayProtoFuncReverse): + (JSC::arrayProtoFuncShift): + (JSC::arrayProtoFuncSlice): + (JSC::arrayProtoFuncSort): + (JSC::arrayProtoFuncSplice): + (JSC::arrayProtoFuncUnShift): + (JSC::arrayProtoFuncFilter): + (JSC::arrayProtoFuncMap): + (JSC::arrayProtoFuncEvery): + (JSC::arrayProtoFuncForEach): + (JSC::arrayProtoFuncSome): + (JSC::arrayProtoFuncReduce): + (JSC::arrayProtoFuncReduceRight): + (JSC::arrayProtoFuncIndexOf): + (JSC::arrayProtoFuncLastIndexOf): + * runtime/BooleanConstructor.cpp: + (JSC::callBooleanConstructor): + * runtime/BooleanPrototype.cpp: + (JSC::booleanProtoFuncToString): + (JSC::booleanProtoFuncValueOf): + * runtime/CallData.h: + * runtime/DateConstructor.cpp: + (JSC::callDate): + (JSC::dateParse): + (JSC::dateNow): + (JSC::dateUTC): + * runtime/DatePrototype.cpp: + (JSC::dateProtoFuncToString): + (JSC::dateProtoFuncToUTCString): + (JSC::dateProtoFuncToDateString): + (JSC::dateProtoFuncToTimeString): + (JSC::dateProtoFuncToLocaleString): + (JSC::dateProtoFuncToLocaleDateString): + (JSC::dateProtoFuncToLocaleTimeString): + (JSC::dateProtoFuncGetTime): + (JSC::dateProtoFuncGetFullYear): + (JSC::dateProtoFuncGetUTCFullYear): + (JSC::dateProtoFuncToGMTString): + (JSC::dateProtoFuncGetMonth): + (JSC::dateProtoFuncGetUTCMonth): + (JSC::dateProtoFuncGetDate): + (JSC::dateProtoFuncGetUTCDate): + (JSC::dateProtoFuncGetDay): + (JSC::dateProtoFuncGetUTCDay): + (JSC::dateProtoFuncGetHours): + (JSC::dateProtoFuncGetUTCHours): + (JSC::dateProtoFuncGetMinutes): + (JSC::dateProtoFuncGetUTCMinutes): + (JSC::dateProtoFuncGetSeconds): + (JSC::dateProtoFuncGetUTCSeconds): + (JSC::dateProtoFuncGetMilliSeconds): + (JSC::dateProtoFuncGetUTCMilliseconds): + (JSC::dateProtoFuncGetTimezoneOffset): + (JSC::dateProtoFuncSetTime): + (JSC::dateProtoFuncSetMilliSeconds): + (JSC::dateProtoFuncSetUTCMilliseconds): + (JSC::dateProtoFuncSetSeconds): + (JSC::dateProtoFuncSetUTCSeconds): + (JSC::dateProtoFuncSetMinutes): + (JSC::dateProtoFuncSetUTCMinutes): + (JSC::dateProtoFuncSetHours): + (JSC::dateProtoFuncSetUTCHours): + (JSC::dateProtoFuncSetDate): + (JSC::dateProtoFuncSetUTCDate): + (JSC::dateProtoFuncSetMonth): + (JSC::dateProtoFuncSetUTCMonth): + (JSC::dateProtoFuncSetFullYear): + (JSC::dateProtoFuncSetUTCFullYear): + (JSC::dateProtoFuncSetYear): + (JSC::dateProtoFuncGetYear): + * runtime/ErrorConstructor.cpp: + (JSC::callErrorConstructor): + * runtime/ErrorPrototype.cpp: + (JSC::errorProtoFuncToString): + * runtime/FunctionConstructor.cpp: + (JSC::callFunctionConstructor): + * runtime/FunctionPrototype.cpp: + (JSC::callFunctionPrototype): + (JSC::functionProtoFuncToString): + (JSC::functionProtoFuncApply): + (JSC::functionProtoFuncCall): + * runtime/JSFunction.h: + (JSC::JSFunction::nativeFunction): + (JSC::JSFunction::setScopeChain): + * runtime/JSGlobalObjectFunctions.cpp: + (JSC::globalFuncEval): + (JSC::globalFuncParseInt): + (JSC::globalFuncParseFloat): + (JSC::globalFuncIsNaN): + (JSC::globalFuncIsFinite): + (JSC::globalFuncDecodeURI): + (JSC::globalFuncDecodeURIComponent): + (JSC::globalFuncEncodeURI): + (JSC::globalFuncEncodeURIComponent): + (JSC::globalFuncEscape): + (JSC::globalFuncUnescape): + (JSC::globalFuncJSCPrint): + * runtime/JSGlobalObjectFunctions.h: + * runtime/MathObject.cpp: + (JSC::mathProtoFuncAbs): + (JSC::mathProtoFuncACos): + (JSC::mathProtoFuncASin): + (JSC::mathProtoFuncATan): + (JSC::mathProtoFuncATan2): + (JSC::mathProtoFuncCeil): + (JSC::mathProtoFuncCos): + (JSC::mathProtoFuncExp): + (JSC::mathProtoFuncFloor): + (JSC::mathProtoFuncLog): + (JSC::mathProtoFuncMax): + (JSC::mathProtoFuncMin): + (JSC::mathProtoFuncPow): + (JSC::mathProtoFuncRandom): + (JSC::mathProtoFuncRound): + (JSC::mathProtoFuncSin): + (JSC::mathProtoFuncSqrt): + (JSC::mathProtoFuncTan): + * runtime/NativeErrorConstructor.cpp: + (JSC::callNativeErrorConstructor): + * runtime/NativeFunctionWrapper.h: + * runtime/NumberConstructor.cpp: + (JSC::callNumberConstructor): + * runtime/NumberPrototype.cpp: + (JSC::numberProtoFuncToString): + (JSC::numberProtoFuncToLocaleString): + (JSC::numberProtoFuncValueOf): + (JSC::numberProtoFuncToFixed): + (JSC::numberProtoFuncToExponential): + (JSC::numberProtoFuncToPrecision): + * runtime/ObjectConstructor.cpp: + (JSC::callObjectConstructor): + * runtime/ObjectPrototype.cpp: + (JSC::objectProtoFuncValueOf): + (JSC::objectProtoFuncHasOwnProperty): + (JSC::objectProtoFuncIsPrototypeOf): + (JSC::objectProtoFuncDefineGetter): + (JSC::objectProtoFuncDefineSetter): + (JSC::objectProtoFuncLookupGetter): + (JSC::objectProtoFuncLookupSetter): + (JSC::objectProtoFuncPropertyIsEnumerable): + (JSC::objectProtoFuncToLocaleString): + (JSC::objectProtoFuncToString): + * runtime/ObjectPrototype.h: + * runtime/RegExpConstructor.cpp: + (JSC::callRegExpConstructor): + * runtime/RegExpObject.cpp: + (JSC::callRegExpObject): + * runtime/RegExpPrototype.cpp: + (JSC::regExpProtoFuncTest): + (JSC::regExpProtoFuncExec): + (JSC::regExpProtoFuncCompile): + (JSC::regExpProtoFuncToString): + * runtime/StringConstructor.cpp: + (JSC::stringFromCharCode): + (JSC::callStringConstructor): + * runtime/StringPrototype.cpp: + (JSC::stringProtoFuncReplace): + (JSC::stringProtoFuncToString): + (JSC::stringProtoFuncCharAt): + (JSC::stringProtoFuncCharCodeAt): + (JSC::stringProtoFuncConcat): + (JSC::stringProtoFuncIndexOf): + (JSC::stringProtoFuncLastIndexOf): + (JSC::stringProtoFuncMatch): + (JSC::stringProtoFuncSearch): + (JSC::stringProtoFuncSlice): + (JSC::stringProtoFuncSplit): + (JSC::stringProtoFuncSubstr): + (JSC::stringProtoFuncSubstring): + (JSC::stringProtoFuncToLowerCase): + (JSC::stringProtoFuncToUpperCase): + (JSC::stringProtoFuncLocaleCompare): + (JSC::stringProtoFuncBig): + (JSC::stringProtoFuncSmall): + (JSC::stringProtoFuncBlink): + (JSC::stringProtoFuncBold): + (JSC::stringProtoFuncFixed): + (JSC::stringProtoFuncItalics): + (JSC::stringProtoFuncStrike): + (JSC::stringProtoFuncSub): + (JSC::stringProtoFuncSup): + (JSC::stringProtoFuncFontcolor): + (JSC::stringProtoFuncFontsize): + (JSC::stringProtoFuncAnchor): + (JSC::stringProtoFuncLink): + * wtf/Platform.h: + +2009-05-07 Geoffrey Garen + + Not reviewed. + + Rolled out a portion of r43352 because it broke 64bit. + + * jit/JITStubs.h: + +2009-05-07 Kevin Ollivier + + Build fix for functions reaturning ThreadIdentifier. + + * wtf/ThreadingNone.cpp: + (WTF::createThreadInternal): + (WTF::currentThread): + +2009-05-07 Maciej Stachowiak + + Reviewed by John Honeycutt. + + - enable optimization case im the last patch that I accidentally had disabled. + + * jit/JITArithmetic.cpp: + (JSC::JIT::compileFastArithSlow_op_jnless): + +2009-05-07 Dmitry Titov + + Attempt to fix Win build. + + * jit/JITArithmetic.cpp: + (JSC::JIT::compileFastArithSlow_op_jnless): + +2009-05-07 Dmitry Titov + + Reviewed by Alexey Proskuryakov and Adam Roben. + + https://bugs.webkit.org/show_bug.cgi?id=25348 + Change WTF::ThreadIdentifier to be an actual (but wrapped) thread id, remove ThreadMap. + + * wtf/Threading.h: + (WTF::ThreadIdentifier::ThreadIdentifier): + (WTF::ThreadIdentifier::isValid): + (WTF::ThreadIdentifier::invalidate): + (WTF::ThreadIdentifier::platformId): + ThreadIdentifier is now a class, containing a PlatformThreadIdentifier and + methods that are used across the code on thread ids: construction, comparisons, + check for 'valid' state etc. '0' is used as invalid id, which happens to just work + with all platform-specific thread id implementations. + + All the following files repeatedly reflect the new ThreadIdentifier for each platform. + We remove ThreadMap and threadMapMutex from all of them, remove the functions that + populated/searched/cleared the map and add platform-specific comparison operators + for ThreadIdentifier. + + * wtf/gtk/ThreadingGtk.cpp: + (WTF::ThreadIdentifier::operator==): + (WTF::ThreadIdentifier::operator!=): + (WTF::initializeThreading): + (WTF::createThreadInternal): + (WTF::waitForThreadCompletion): + (WTF::currentThread): + + * wtf/ThreadingNone.cpp: + (WTF::ThreadIdentifier::operator==): + (WTF::ThreadIdentifier::operator!=): + + * wtf/ThreadingPthreads.cpp: + (WTF::ThreadIdentifier::operator==): + (WTF::ThreadIdentifier::operator!=): + (WTF::initializeThreading): + (WTF::createThreadInternal): + (WTF::waitForThreadCompletion): + (WTF::detachThread): + (WTF::currentThread): + + * wtf/qt/ThreadingQt.cpp: + (WTF::ThreadIdentifier::operator==): + (WTF::ThreadIdentifier::operator!=): + (WTF::initializeThreading): + (WTF::createThreadInternal): + (WTF::waitForThreadCompletion): + (WTF::currentThread): + + * wtf/ThreadingWin.cpp: + (WTF::ThreadIdentifier::operator==): + (WTF::ThreadIdentifier::operator!=): + (WTF::initializeThreading): + (WTF::createThreadInternal): All the platforms (except Windows) used a sequential + counter as a thread ID and mapped it into platform ID. Windows was using native thread + id and mapped it into thread handle. Since we can always obtain a thread handle + by thread id, createThread now closes the handle. + (WTF::waitForThreadCompletion): obtains another one using OpenThread(id) API. If can not obtain a handle, + it means the thread already exited. + (WTF::detachThread): + (WTF::currentThread): + (WTF::detachThreadDeprecated): old function, renamed (for Win Safari 4 beta which uses it for now). + (WTF::waitForThreadCompletionDeprecated): same. + (WTF::currentThreadDeprecated): same. + (WTF::createThreadDeprecated): same. + + * bytecode/SamplingTool.h: + * bytecode/SamplingTool.cpp: Use DEFINE_STATIC_LOCAL for a static ThreadIdentifier variable, to avoid static constructor. + + * JavaScriptCore.exp: export lists - updated the WTF threading functions decorated names + since they now take a different type as a parameter. + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: ditto for Windows, plus added "deprecated" functions + that take old parameter type - turns out public beta of Safari 4 uses those, so they need to be kept along for a while. + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: ditto. + +2009-05-07 Maciej Stachowiak + + Reviewed by Sam Weinig. + + - optimize various cases of branch-fused less + + 1% speedup on SunSpider overall + 13% speedup on math-cordic + + * jit/JIT.cpp: + (JSC::JIT::privateCompileMainPass): + op_loop_if_less: Optimize case of constant as first operand, just as case of constant as + second operand. + op_jnless: Factored out into compileFastArith_op_jnless. + (JSC::JIT::privateCompileSlowCases): + op_jnless: Factored out into compileFastArithSlow_op_jnless. + * jit/JIT.h: + * jit/JITArithmetic.cpp: + (JSC::JIT::compileFastArith_op_jnless): Factored out from main compile loop. + - Generate inline code for comparison of constant immediate int as first operand to another + immediate int, as for loop_if_less + + (JSC::JIT::compileFastArithSlow_op_jnless): + - Generate inline code for comparing two floating point numbers. + - Generate code for both cases of comparing a floating point number to a constant immediate + int. + * bytecode/CodeBlock.cpp: + (JSC::CodeBlock::dump): Fix dumping of op_jnless (tangentially related bugfix). + +2009-05-07 Geoffrey Garen + + Reviewed by Sam Weinig. + + Added the return address of a stub function to the JITStackFrame abstraction. + + * jit/JIT.cpp: + * jit/JIT.h: + * jit/JITStubs.cpp: + (JSC::): + (JSC::StackHack::StackHack): + (JSC::StackHack::~StackHack): + (JSC::returnToThrowTrampoline): + (JSC::JITStubs::cti_op_convert_this): + (JSC::JITStubs::cti_op_end): + (JSC::JITStubs::cti_op_add): + (JSC::JITStubs::cti_op_pre_inc): + (JSC::JITStubs::cti_timeout_check): + (JSC::JITStubs::cti_register_file_check): + (JSC::JITStubs::cti_op_loop_if_less): + (JSC::JITStubs::cti_op_loop_if_lesseq): + (JSC::JITStubs::cti_op_new_object): + (JSC::JITStubs::cti_op_put_by_id_generic): + (JSC::JITStubs::cti_op_get_by_id_generic): + (JSC::JITStubs::cti_op_put_by_id): + (JSC::JITStubs::cti_op_put_by_id_second): + (JSC::JITStubs::cti_op_put_by_id_fail): + (JSC::JITStubs::cti_op_get_by_id): + (JSC::JITStubs::cti_op_get_by_id_second): + (JSC::JITStubs::cti_op_get_by_id_self_fail): + (JSC::JITStubs::cti_op_get_by_id_proto_list): + (JSC::JITStubs::cti_op_get_by_id_proto_list_full): + (JSC::JITStubs::cti_op_get_by_id_proto_fail): + (JSC::JITStubs::cti_op_get_by_id_array_fail): + (JSC::JITStubs::cti_op_get_by_id_string_fail): + (JSC::JITStubs::cti_op_instanceof): + (JSC::JITStubs::cti_op_del_by_id): + (JSC::JITStubs::cti_op_mul): + (JSC::JITStubs::cti_op_new_func): + (JSC::JITStubs::cti_op_call_JSFunction): + (JSC::JITStubs::cti_op_call_arityCheck): + (JSC::JITStubs::cti_vm_dontLazyLinkCall): + (JSC::JITStubs::cti_vm_lazyLinkCall): + (JSC::JITStubs::cti_op_push_activation): + (JSC::JITStubs::cti_op_call_NotJSFunction): + (JSC::JITStubs::cti_op_create_arguments): + (JSC::JITStubs::cti_op_create_arguments_no_params): + (JSC::JITStubs::cti_op_tear_off_activation): + (JSC::JITStubs::cti_op_tear_off_arguments): + (JSC::JITStubs::cti_op_profile_will_call): + (JSC::JITStubs::cti_op_profile_did_call): + (JSC::JITStubs::cti_op_ret_scopeChain): + (JSC::JITStubs::cti_op_new_array): + (JSC::JITStubs::cti_op_resolve): + (JSC::JITStubs::cti_op_construct_JSConstruct): + (JSC::JITStubs::cti_op_construct_NotJSConstruct): + (JSC::JITStubs::cti_op_get_by_val): + (JSC::JITStubs::cti_op_get_by_val_string): + (JSC::JITStubs::cti_op_get_by_val_byte_array): + (JSC::JITStubs::cti_op_resolve_func): + (JSC::JITStubs::cti_op_sub): + (JSC::JITStubs::cti_op_put_by_val): + (JSC::JITStubs::cti_op_put_by_val_array): + (JSC::JITStubs::cti_op_put_by_val_byte_array): + (JSC::JITStubs::cti_op_lesseq): + (JSC::JITStubs::cti_op_loop_if_true): + (JSC::JITStubs::cti_op_load_varargs): + (JSC::JITStubs::cti_op_negate): + (JSC::JITStubs::cti_op_resolve_base): + (JSC::JITStubs::cti_op_resolve_skip): + (JSC::JITStubs::cti_op_resolve_global): + (JSC::JITStubs::cti_op_div): + (JSC::JITStubs::cti_op_pre_dec): + (JSC::JITStubs::cti_op_jless): + (JSC::JITStubs::cti_op_not): + (JSC::JITStubs::cti_op_jtrue): + (JSC::JITStubs::cti_op_post_inc): + (JSC::JITStubs::cti_op_eq): + (JSC::JITStubs::cti_op_lshift): + (JSC::JITStubs::cti_op_bitand): + (JSC::JITStubs::cti_op_rshift): + (JSC::JITStubs::cti_op_bitnot): + (JSC::JITStubs::cti_op_resolve_with_base): + (JSC::JITStubs::cti_op_new_func_exp): + (JSC::JITStubs::cti_op_mod): + (JSC::JITStubs::cti_op_less): + (JSC::JITStubs::cti_op_neq): + (JSC::JITStubs::cti_op_post_dec): + (JSC::JITStubs::cti_op_urshift): + (JSC::JITStubs::cti_op_bitxor): + (JSC::JITStubs::cti_op_new_regexp): + (JSC::JITStubs::cti_op_bitor): + (JSC::JITStubs::cti_op_call_eval): + (JSC::JITStubs::cti_op_throw): + (JSC::JITStubs::cti_op_get_pnames): + (JSC::JITStubs::cti_op_next_pname): + (JSC::JITStubs::cti_op_push_scope): + (JSC::JITStubs::cti_op_pop_scope): + (JSC::JITStubs::cti_op_typeof): + (JSC::JITStubs::cti_op_is_undefined): + (JSC::JITStubs::cti_op_is_boolean): + (JSC::JITStubs::cti_op_is_number): + (JSC::JITStubs::cti_op_is_string): + (JSC::JITStubs::cti_op_is_object): + (JSC::JITStubs::cti_op_is_function): + (JSC::JITStubs::cti_op_stricteq): + (JSC::JITStubs::cti_op_to_primitive): + (JSC::JITStubs::cti_op_strcat): + (JSC::JITStubs::cti_op_nstricteq): + (JSC::JITStubs::cti_op_to_jsnumber): + (JSC::JITStubs::cti_op_in): + (JSC::JITStubs::cti_op_push_new_scope): + (JSC::JITStubs::cti_op_jmp_scopes): + (JSC::JITStubs::cti_op_put_by_index): + (JSC::JITStubs::cti_op_switch_imm): + (JSC::JITStubs::cti_op_switch_char): + (JSC::JITStubs::cti_op_switch_string): + (JSC::JITStubs::cti_op_del_by_val): + (JSC::JITStubs::cti_op_put_getter): + (JSC::JITStubs::cti_op_put_setter): + (JSC::JITStubs::cti_op_new_error): + (JSC::JITStubs::cti_op_debug): + (JSC::JITStubs::cti_vm_throw): + * jit/JITStubs.h: + (JSC::JITStackFrame::returnAddressSlot): + +2009-05-07 Darin Adler + + Reviewed by Geoff Garen. + + * parser/Lexer.cpp: + (JSC::Lexer::lex): Fix missing braces. This would make us always + take the slower case for string parsing and Visual Studio correctly + noticed unreachable code. + +2009-05-07 Darin Adler + + Reviewed by Sam Weinig. + + Bug 25589: goto instead of state machine in lexer + https://bugs.webkit.org/show_bug.cgi?id=25589 + + SunSpider is 0.8% faster. + + * parser/Lexer.cpp: + (JSC::Lexer::currentCharacter): Added. + (JSC::Lexer::currentOffset): Changed to call currentCharacter for clarity. + (JSC::Lexer::setCode): Removed code to set now-obsolete m_skipLineEnd. + (JSC::Lexer::shiftLineTerminator): Added. Handles line numbers and the + two-character line terminators. + (JSC::Lexer::makeIdentifier): Changed to take characters and length rather + than a vector, since we now make these directly out of the source buffer + when possible. + (JSC::Lexer::lastTokenWasRestrKeyword): Added. + (JSC::isNonASCIIIdentStart): Broke out the non-inline part. + (JSC::isIdentStart): Moved here. + (JSC::isNonASCIIIdentPart): Broke out the non-inline part. + (JSC::isIdentPart): Moved here. + (JSC::singleEscape): Moved here, and removed some unneeded cases. + (JSC::Lexer::record8): Moved here. + (JSC::Lexer::record16): Moved here. + (JSC::Lexer::lex): Rewrote this whole function to use goto and not use + a state machine. Got rid of most of the local variables. Also rolled the + matchPunctuator function in here. + (JSC::Lexer::scanRegExp): Changed to use the new version of isLineTerminator. + Clear m_buffer16 after using it instead of before. + + * parser/Lexer.h: Removed State enum, setDone function, nextLine function, + lookupKeywordFunction, one of the isLineTerminator functions, m_done data member, + m_skipLineEnd data member, and m_state data member. Added shiftLineTerminator + function, currentCharacter function, and changed the arguments to the makeIdentifier + function. Removed one branch from the isLineTerminator function. + + * runtime/StringPrototype.cpp: + (JSC::stringProtoFuncReplace): Streamlined the case where we don't replace anything. + +2009-05-07 Geoffrey Garen + + Reviewed by Gavin Barraclough. + + Removed a few more special constants, and replaced them with uses of + the JITStackFrame struct. + + Removed one of the two possible definitions of VoidPtrPair. The Mac + definition was more elegant, but SunSpider doesn't think it's any + faster, and it's net less elegant to have two ways of doing things. + + * jit/JIT.cpp: + (JSC::JIT::privateCompileMainPass): + (JSC::JIT::privateCompile): + * jit/JITStubs.h: + (JSC::): + +2009-05-07 Darin Adler + + * runtime/ScopeChain.h: + (JSC::ScopeChainNode::~ScopeChainNode): Tweak formatting. + +2009-05-07 Simon Hausmann + + Reviewed by Tor Arne Vestbø. + + Fix the build thread stack base determination build on Symbian, + by moving the code block before PLATFORM(UNIX), which is also + enabled on Symbian builds. + + * runtime/Collector.cpp: + (JSC::currentThreadStackBase): + +2009-05-07 Oliver Hunt + + Reviewed by Gavin Barraclough. + + Fix crash due to incorrectly using an invalid scopechain + + stringProtoFuncReplace was checking for an exception on a CachedCall + by asking for the cached callframes exception. Unfortunately this + could crash in certain circumstances as CachedCall does not guarantee + a valid callframe following a call. Even more unfortunately the check + was entirely unnecessary as there is only a single exception slot per + global data, so it was already checked via the initial exec->hadException() + check. + + To make bugs like this more obvious, i've added a debug only destructor + to ScopeChainNode that 0's all of its fields. This exposed a crash in + the standard javascriptcore tests. + + * runtime/ScopeChain.h: + (JSC::ScopeChainNode::~ScopeChainNode): + (JSC::ScopeChain::~ScopeChain): + * runtime/StringPrototype.cpp: + (JSC::stringProtoFuncReplace): + +2009-05-07 Gavin Barraclough + + Reviewed by Geoff Garen. + + Enable op_strcat across += assignments. This patch allows the lhs of a read/modify node + to be included within the concatenation operation, and also modifies the implementation + of the concatenation to attempt to reuse and cat onto the leftmost string, rather than + always allocating a new empty output string to copy into (as was previously the behaviour). + + ~0.5% progression, due to a 3%-3.5% progression on the string tests (particularly validate). + + * parser/Nodes.cpp: + (JSC::BinaryOpNode::emitStrcat): + (JSC::emitReadModifyAssignment): + (JSC::ReadModifyResolveNode::emitBytecode): + (JSC::ReadModifyDotNode::emitBytecode): + (JSC::ReadModifyBracketNode::emitBytecode): + * parser/Nodes.h: + * runtime/Operations.h: + (JSC::concatenateStrings): + * runtime/UString.cpp: + (JSC::UString::reserveCapacity): + * runtime/UString.h: + +2009-05-07 Simon Hausmann + + Reviewed by Oliver Hunt. + + Fix the build on Windows without JIT: interpreter/RegisterFile.h needs + roundUpAllocationSize, which is protected by #if ENABLED(ASSEMBLER). + Moved the #ifdef down and always offer the function. + + * jit/ExecutableAllocator.h: + +2009-05-06 Geoffrey Garen + + Reviewed by Gavin "++" Barraclough. + + Added some abstraction around the JIT stub calling convention by creating + a struct to represent the persistent stack frame JIT code shares with + JIT stubs. + + SunSpider reports no change. + + * jit/JIT.h: + * jit/JITStubs.cpp: + (JSC::JITStubs::cti_op_convert_this): + (JSC::JITStubs::cti_op_end): + (JSC::JITStubs::cti_op_add): + (JSC::JITStubs::cti_op_pre_inc): + (JSC::JITStubs::cti_timeout_check): + (JSC::JITStubs::cti_register_file_check): + (JSC::JITStubs::cti_op_loop_if_less): + (JSC::JITStubs::cti_op_loop_if_lesseq): + (JSC::JITStubs::cti_op_new_object): + (JSC::JITStubs::cti_op_put_by_id_generic): + (JSC::JITStubs::cti_op_get_by_id_generic): + (JSC::JITStubs::cti_op_put_by_id): + (JSC::JITStubs::cti_op_put_by_id_second): + (JSC::JITStubs::cti_op_put_by_id_fail): + (JSC::JITStubs::cti_op_get_by_id): + (JSC::JITStubs::cti_op_get_by_id_second): + (JSC::JITStubs::cti_op_get_by_id_self_fail): + (JSC::JITStubs::cti_op_get_by_id_proto_list): + (JSC::JITStubs::cti_op_get_by_id_proto_list_full): + (JSC::JITStubs::cti_op_get_by_id_proto_fail): + (JSC::JITStubs::cti_op_get_by_id_array_fail): + (JSC::JITStubs::cti_op_get_by_id_string_fail): + (JSC::JITStubs::cti_op_instanceof): + (JSC::JITStubs::cti_op_del_by_id): + (JSC::JITStubs::cti_op_mul): + (JSC::JITStubs::cti_op_new_func): + (JSC::JITStubs::cti_op_call_JSFunction): + (JSC::JITStubs::cti_op_call_arityCheck): + (JSC::JITStubs::cti_vm_dontLazyLinkCall): + (JSC::JITStubs::cti_vm_lazyLinkCall): + (JSC::JITStubs::cti_op_push_activation): + (JSC::JITStubs::cti_op_call_NotJSFunction): + (JSC::JITStubs::cti_op_create_arguments): + (JSC::JITStubs::cti_op_create_arguments_no_params): + (JSC::JITStubs::cti_op_tear_off_activation): + (JSC::JITStubs::cti_op_tear_off_arguments): + (JSC::JITStubs::cti_op_profile_will_call): + (JSC::JITStubs::cti_op_profile_did_call): + (JSC::JITStubs::cti_op_ret_scopeChain): + (JSC::JITStubs::cti_op_new_array): + (JSC::JITStubs::cti_op_resolve): + (JSC::JITStubs::cti_op_construct_JSConstruct): + (JSC::JITStubs::cti_op_construct_NotJSConstruct): + (JSC::JITStubs::cti_op_get_by_val): + (JSC::JITStubs::cti_op_get_by_val_string): + (JSC::JITStubs::cti_op_get_by_val_byte_array): + (JSC::JITStubs::cti_op_resolve_func): + (JSC::JITStubs::cti_op_sub): + (JSC::JITStubs::cti_op_put_by_val): + (JSC::JITStubs::cti_op_put_by_val_array): + (JSC::JITStubs::cti_op_put_by_val_byte_array): + (JSC::JITStubs::cti_op_lesseq): + (JSC::JITStubs::cti_op_loop_if_true): + (JSC::JITStubs::cti_op_load_varargs): + (JSC::JITStubs::cti_op_negate): + (JSC::JITStubs::cti_op_resolve_base): + (JSC::JITStubs::cti_op_resolve_skip): + (JSC::JITStubs::cti_op_resolve_global): + (JSC::JITStubs::cti_op_div): + (JSC::JITStubs::cti_op_pre_dec): + (JSC::JITStubs::cti_op_jless): + (JSC::JITStubs::cti_op_not): + (JSC::JITStubs::cti_op_jtrue): + (JSC::JITStubs::cti_op_post_inc): + (JSC::JITStubs::cti_op_eq): + (JSC::JITStubs::cti_op_lshift): + (JSC::JITStubs::cti_op_bitand): + (JSC::JITStubs::cti_op_rshift): + (JSC::JITStubs::cti_op_bitnot): + (JSC::JITStubs::cti_op_resolve_with_base): + (JSC::JITStubs::cti_op_new_func_exp): + (JSC::JITStubs::cti_op_mod): + (JSC::JITStubs::cti_op_less): + (JSC::JITStubs::cti_op_neq): + (JSC::JITStubs::cti_op_post_dec): + (JSC::JITStubs::cti_op_urshift): + (JSC::JITStubs::cti_op_bitxor): + (JSC::JITStubs::cti_op_new_regexp): + (JSC::JITStubs::cti_op_bitor): + (JSC::JITStubs::cti_op_call_eval): + (JSC::JITStubs::cti_op_throw): + (JSC::JITStubs::cti_op_get_pnames): + (JSC::JITStubs::cti_op_next_pname): + (JSC::JITStubs::cti_op_push_scope): + (JSC::JITStubs::cti_op_pop_scope): + (JSC::JITStubs::cti_op_typeof): + (JSC::JITStubs::cti_op_is_undefined): + (JSC::JITStubs::cti_op_is_boolean): + (JSC::JITStubs::cti_op_is_number): + (JSC::JITStubs::cti_op_is_string): + (JSC::JITStubs::cti_op_is_object): + (JSC::JITStubs::cti_op_is_function): + (JSC::JITStubs::cti_op_stricteq): + (JSC::JITStubs::cti_op_to_primitive): + (JSC::JITStubs::cti_op_strcat): + (JSC::JITStubs::cti_op_nstricteq): + (JSC::JITStubs::cti_op_to_jsnumber): + (JSC::JITStubs::cti_op_in): + (JSC::JITStubs::cti_op_push_new_scope): + (JSC::JITStubs::cti_op_jmp_scopes): + (JSC::JITStubs::cti_op_put_by_index): + (JSC::JITStubs::cti_op_switch_imm): + (JSC::JITStubs::cti_op_switch_char): + (JSC::JITStubs::cti_op_switch_string): + (JSC::JITStubs::cti_op_del_by_val): + (JSC::JITStubs::cti_op_put_getter): + (JSC::JITStubs::cti_op_put_setter): + (JSC::JITStubs::cti_op_new_error): + (JSC::JITStubs::cti_op_debug): + (JSC::JITStubs::cti_vm_throw): + * jit/JITStubs.h: + (JSC::): + +2009-05-06 Gavin Barraclough + + Reviewed by Maciej Stachowiak & Darin Adler. + + Improve string concatenation (as coded in JS as a sequence of adds). + + Detect patterns corresponding to string concatenation, and change the bytecode + generation to emit a new op_strcat instruction. By handling the full set of + additions within a single function we do not need allocate JSString wrappers + for intermediate results, and we can calculate the size of the output string + prior to allocating storage, in order to prevent reallocation of the buffer. + + 1.5%-2% progression on Sunspider, largely due to a 30% progression on date-format-xparb. + + * bytecode/CodeBlock.cpp: + (JSC::CodeBlock::dump): + Add new opcodes. + * bytecode/Opcode.h: + Add new opcodes. + * bytecompiler/BytecodeGenerator.cpp: + (JSC::BytecodeGenerator::emitStrcat): + (JSC::BytecodeGenerator::emitToPrimitive): + Add generation of new opcodes. + * bytecompiler/BytecodeGenerator.h: + Add generation of new opcodes. + * interpreter/Interpreter.cpp: + (JSC::Interpreter::privateExecute): + Add implmentation of new opcodes. + * jit/JIT.cpp: + (JSC::JIT::privateCompileMainPass): + (JSC::JIT::privateCompileSlowCases): + Add implmentation of new opcodes. + * jit/JITStubs.cpp: + (JSC::JITStubs::cti_op_to_primitive): + (JSC::JITStubs::cti_op_strcat): + Add implmentation of new opcodes. + * jit/JITStubs.h: + Add implmentation of new opcodes. + * parser/Nodes.cpp: + (JSC::BinaryOpNode::emitStrcat): + (JSC::BinaryOpNode::emitBytecode): + (JSC::ReadModifyResolveNode::emitBytecode): + Add generation of new opcodes. + * parser/Nodes.h: + (JSC::ExpressionNode::): + (JSC::AddNode::): + Add methods to allow identification of add nodes. + * parser/ResultType.h: + (JSC::ResultType::definitelyIsString): + (JSC::ResultType::forAdd): + Fix error in detection of adds that will produce string results. + * runtime/Operations.h: + (JSC::concatenateStrings): + Add implmentation of new opcodes. + * runtime/UString.cpp: + (JSC::UString::appendNumeric): + Add methods to append numbers to an existing string. + * runtime/UString.h: + (JSC::UString::Rep::createEmptyBuffer): + (JSC::UString::BaseString::BaseString): + Add support for creating an empty string with a non-zero capacity available in the BaseString. + +2009-05-06 Darin Adler + + Reviewed by Sam Weinig. + + Made RefCounted::m_refCount private. + + * runtime/Structure.h: Removed addressOfCount. + * wtf/RefCounted.h: Made m_refCount private. + Added addressOfCount. + +2009-05-06 Darin Adler + + Fixed assertion seen a lot! + + * parser/Nodes.cpp: + (JSC::FunctionBodyNode::~FunctionBodyNode): Removed now-bogus assertion. + +2009-05-06 Darin Adler + + Working with Sam Weinig. + + Redo parse tree constructor optimization without breaking the Windows + build the way I did yesterday. The previous try broke the build by adding + an include of Lexer.h and all its dependencies that had to work outside + the JavaScriptCore project. + + * GNUmakefile.am: Added NodeConstructors.h. + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Ditto. + + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops: + Removed byteocde directory -- we no longer are trying to include Lexer.h + outside JavaScriptCore. + + * JavaScriptCore.xcodeproj/project.pbxproj: Change SegmentedVector.h + and Lexer.h back to internal files. Added NodeConstructors.h. + + * parser/Grammar.y: Added include of NodeConstructors.h. + Changed use of ConstDeclNode to use public functions. + + * parser/NodeConstructors.h: Copied from parser/Nodes.h. + Just contains the inlined constructors now. + + * parser/Nodes.cpp: Added include of NodeConstructors.h. + Moved node constructors into the header. + (JSC::FunctionBodyNode::FunctionBodyNode): Removed m_refCount + initialization. + + * parser/Nodes.h: Removed all the constructor definitions, and also + removed the JSC_FAST_CALL from them since these are all inlined, so the + calling convention is irrelevant. Made more things private. Used a data + member for operator opcodes instead of a virtual function. Removed the + special FunctionBodyNode::ref/deref functions since the default functions + are now just as fast. + + * runtime/FunctionConstructor.cpp: + (JSC::extractFunctionBody): Fixed types here so we don't typecast until + after we do type checking. + +2009-05-06 Simon Hausmann + + Reviewed by Ariya Hidayat. + + Fix the Qt build on Windows. + + * JavaScriptCore.pri: Define BUILDING_JavaScriptCore/WTF to get the meaning + of the JS_EXPORTDATA macros correct + +2009-05-06 Simon Hausmann + + Reviewed by Ariya Hidayat. + + Enable the JIT for the Qt build on Windows. + + * JavaScriptCore.pri: + +2009-05-06 Simon Hausmann + + Reviewed by Tor Arne Vestbø. + + Tweak JavaScriptCore.pri for being able to override the generated sources dir for the + generated_files target. + + * JavaScriptCore.pri: + +2009-05-06 Tor Arne Vestbø + + Reviewed by Simon Hausmann. + + Build QtWebKit as a framework on Mac + + This implies both debug and release build by default, unless + one of the --debug or --release config options are passed to + the build-webkit script. + + Frameworks can be disabled by passing CONFIG+=webkit_no_framework + to the build-webkit script. + + To be able to build both debug and release targets in parallel + we have to use separate output directories for the generated + sources, which is not optimal, but required to avoid race conditions. + + An optimization would be to only require this spit-up on Mac. + + * JavaScriptCore.pri: + * JavaScriptCore.pro: + * jsc.pro: + +2009-05-06 Tor Arne Vestbø + + Reviewed by Simon Hausmann. + + [Qt] Use $$GENERATED_SOURCES_DIR as output when running bison + + A couple of the generators left the bison output file in the source + tree, and then moved it into $$GENERATED_SOURCES_DIR, which did not + work well when building release and debug configurations in parallel. + + * JavaScriptCore.pri: + +2009-05-05 Geoffrey Garen + + Reviewed by Maciej Stachowiak. + + Simplified a bit of codegen. + + * jit/JIT.cpp: + (JSC::JIT::privateCompileMainPass): + +2009-05-05 Geoffrey Garen + + Reviewed by Cameron Zwarich. + + Moved all the JIT stub related code into one place. + + * jit/JIT.cpp: + * jit/JIT.h: + * jit/JITCode.h: + * jit/JITStubs.cpp: + (JSC::): + * jit/JITStubs.h: + +2009-05-05 Sam Weinig + + Try to fix Windows build. + + Move Node constructor to the .cpp file. + + * parser/Nodes.cpp: + * parser/Nodes.h: + +2009-05-05 Darin Adler + + Try to fix Windows build. + + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: + + Try to fix Mac build. + + * JavaScriptCore.xcodeproj/project.pbxproj: Made SegmentedVector.h private. + +2009-05-05 Darin Adler + + Try to fix Mac build. + + * JavaScriptCore.xcodeproj/project.pbxproj: Made Lexer.h private. + +2009-05-05 Darin Adler + + Reviewed by Sam Weinig. + + Bug 25569: make ParserRefCounted use conventional reference counting + https://bugs.webkit.org/show_bug.cgi?id=25569 + + SunSpider speedup of about 1.6%. + + * JavaScriptCore.exp: Updated. + + * parser/Nodes.cpp: + (JSC::NodeReleaser::releaseAllNodes): ALWAYS_INLINE. + (JSC::NodeReleaser::adopt): Ditto. + (JSC::ParserRefCounted::ParserRefCounted): Removed most of the code. + Add the object to a Vector that gets cleared after parsing. + (JSC::ParserRefCounted::~ParserRefCounted): Removed most of the code. + + * parser/Nodes.h: Made ParserRefCounted inherit from RefCounted and + made inline versions of the constructor and destructor. Made the + Node constructor inline. + + * parser/Parser.cpp: + (JSC::Parser::parse): Call globalData->parserObjects.shrink(0) after + parsing, where it used to call ParserRefCounted::deleteNewObjects. + + * runtime/JSGlobalData.cpp: + (JSC::JSGlobalData::JSGlobalData): Eliminated code to manage the + newParserObjects and parserObjectExtraRefCounts. + (JSC::JSGlobalData::~JSGlobalData): Ditto. + + * runtime/JSGlobalData.h: Replaced the HashSet and HashCountedSet + with a Vector. + + * wtf/PassRefPtr.h: + (WTF::PassRefPtr::~PassRefPtr): The most common thing to do with a + PassRefPtr in hot code is to pass it and then destroy it once it's + set to zero. Help the optimizer by telling it that's true. + +2009-05-05 Xan Lopez and Gustavo Noronha Silva + + Reviewed by Oliver Hunt. + + Disable the NativeFunctionWrapper for all non-Mac ports for now, + as it is also crashing on Linux/x86. + + * runtime/NativeFunctionWrapper.h: + +2009-05-05 Steve Falkenburg + + Fix build. + + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: + +2009-05-05 Oliver Hunt + + Reviewed by Maciej Stachowiak. + + Expose toThisObject for the DOM Window + + * JavaScriptCore.exp: + +2009-05-05 Oliver Hunt + + Reviewed by NOBODY (Make windows go again until i work out the + accursed calling convention). + + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: + * jit/JIT.cpp: + * runtime/NativeFunctionWrapper.h: + +2009-05-05 Oliver Hunt + + Reviewed by NOBODY (Fix windows debug builds). + + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: + +2009-05-05 Oliver Hunt + + Reviewed by NOBODY (Hopefully the last fix). + + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: + +2009-05-05 Oliver Hunt + + Reviewed by NOBODY (Fix the build fix caused by a different build fix). + + * parser/Nodes.cpp: + * parser/Nodes.h: + +2009-05-05 Oliver Hunt + + Reviewed by NOBODY (No idea how my changes could have broken these). + + * runtime/DatePrototype.cpp: + * runtime/RegExpObject.cpp: + +2009-05-05 Oliver Hunt + + Reviewed by NOBODY (Why should i expect msvc to list all the errors in a file?). + + * parser/Nodes.cpp: + +2009-05-05 Oliver Hunt + + Reviewed by NOBODY (Fix warning, and another missing include). + + * jit/JIT.cpp: + * parser/Nodes.h: + +2009-05-05 Oliver Hunt + + Reviewed by NOBODY (More build fixes). + + * runtime/ErrorPrototype.cpp: + * runtime/JSGlobalObject.cpp: + * runtime/NumberPrototype.cpp: + * runtime/ObjectPrototype.cpp: + * runtime/StringConstructor.cpp: + +2009-05-05 Oliver Hunt + + Reviewed by NOBODY (Will the fixes never end?). + + * runtime/FunctionPrototype.h: + * runtime/Lookup.cpp: + +2009-05-05 Oliver Hunt + + Reviewed by NOBODY (More build fixes). + + * jit/JIT.cpp: + +2009-05-05 Oliver Hunt + + Reviewed by NOBODY (More build fixing). + + * runtime/CallData.h: + +2009-05-05 Oliver Hunt + + Reviewed by NOBODY (Build fix). + + * runtime/ArrayConstructor.cpp: + * runtime/BooleanPrototype.cpp: + * runtime/DateConstructor.cpp: + * runtime/Error.cpp: + * runtime/ObjectConstructor.cpp: + * runtime/RegExpPrototype.cpp: + +2009-05-05 Oliver Hunt + + Reviewed by NOBODY (Buildfix). + + Add missing file + + * runtime/NativeFunctionWrapper.h: Copied from JavaScriptCore/jit/ExecutableAllocator.cpp. + +2009-05-05 Oliver Hunt + + Reviewed by Gavin Barraclough. + + Bug 25559: Improve native function call performance + + + In order to cache calls to native functions we now make the standard + prototype functions use a small assembly thunk that converts the JS + calling convention into the native calling convention. As this is + only beneficial in the JIT we use the NativeFunctionWrapper typedef + to alternate between PrototypeFunction and JSFunction to keep the + code sane. This change from PrototypeFunction to NativeFunctionWrapper + is the bulk of this patch. + + * JavaScriptCore.exp: + * JavaScriptCore.xcodeproj/project.pbxproj: + * assembler/MacroAssemblerX86Common.h: + (JSC::MacroAssemblerX86Common::call): + * assembler/MacroAssemblerX86_64.h: + (JSC::MacroAssemblerX86_64::addPtr): + * assembler/X86Assembler.h: + (JSC::X86Assembler::leaq_mr): + (JSC::X86Assembler::call_m): + * interpreter/Interpreter.cpp: + (JSC::Interpreter::execute): + (JSC::Interpreter::prepareForRepeatCall): + * jit/JIT.cpp: + (JSC::JIT::privateCompileCTIMachineTrampolines): + * jit/JIT.h: + (JSC::JIT::compileCTIMachineTrampolines): + * jit/JITCall.cpp: + (JSC::JIT::linkCall): + (JSC::JIT::compileOpCallInitializeCallFrame): + (JSC::JIT::compileOpCall): + * jit/JITCode.h: + (JSC::JITCode::operator bool): + * jit/JITInlineMethods.h: + (JSC::JIT::emitGetFromCallFrameHeader): + (JSC::JIT::emitGetFromCallFrameHeader32): + * jit/JITStubs.cpp: + (JSC::JITStubs::JITStubs): + (JSC::JITStubs::cti_op_call_JSFunction): + (JSC::JITStubs::cti_vm_dontLazyLinkCall): + (JSC::JITStubs::cti_vm_lazyLinkCall): + (JSC::JITStubs::cti_op_construct_JSConstruct): + * jit/JITStubs.h: + (JSC::JITStubs::ctiNativeCallThunk): + * jsc.cpp: + (GlobalObject::GlobalObject): + * parser/Nodes.cpp: + (JSC::FunctionBodyNode::FunctionBodyNode): + (JSC::FunctionBodyNode::createNativeThunk): + (JSC::FunctionBodyNode::generateJITCode): + * parser/Nodes.h: + (JSC::FunctionBodyNode::): + (JSC::FunctionBodyNode::generatedJITCode): + (JSC::FunctionBodyNode::jitCode): + * profiler/Profiler.cpp: + (JSC::Profiler::createCallIdentifier): + * runtime/ArgList.h: + * runtime/ArrayPrototype.cpp: + (JSC::isNumericCompareFunction): + * runtime/BooleanPrototype.cpp: + (JSC::BooleanPrototype::BooleanPrototype): + * runtime/DateConstructor.cpp: + (JSC::DateConstructor::DateConstructor): + * runtime/ErrorPrototype.cpp: + (JSC::ErrorPrototype::ErrorPrototype): + * runtime/FunctionPrototype.cpp: + (JSC::FunctionPrototype::addFunctionProperties): + (JSC::functionProtoFuncToString): + * runtime/FunctionPrototype.h: + * runtime/JSFunction.cpp: + (JSC::JSFunction::JSFunction): + (JSC::JSFunction::~JSFunction): + (JSC::JSFunction::mark): + (JSC::JSFunction::getCallData): + (JSC::JSFunction::call): + (JSC::JSFunction::argumentsGetter): + (JSC::JSFunction::callerGetter): + (JSC::JSFunction::lengthGetter): + (JSC::JSFunction::getOwnPropertySlot): + (JSC::JSFunction::put): + (JSC::JSFunction::deleteProperty): + (JSC::JSFunction::getConstructData): + (JSC::JSFunction::construct): + * runtime/JSFunction.h: + (JSC::JSFunction::JSFunction): + (JSC::JSFunction::setScope): + (JSC::JSFunction::scope): + (JSC::JSFunction::isHostFunction): + (JSC::JSFunction::scopeChain): + (JSC::JSFunction::clearScopeChain): + (JSC::JSFunction::setScopeChain): + (JSC::JSFunction::nativeFunction): + (JSC::JSFunction::setNativeFunction): + * runtime/JSGlobalData.cpp: + (JSC::JSGlobalData::~JSGlobalData): + (JSC::JSGlobalData::createNativeThunk): + * runtime/JSGlobalData.h: + (JSC::JSGlobalData::nativeFunctionThunk): + * runtime/JSGlobalObject.cpp: + (JSC::JSGlobalObject::reset): + * runtime/JSGlobalObject.h: + * runtime/Lookup.cpp: + (JSC::setUpStaticFunctionSlot): + * runtime/Lookup.h: + * runtime/NumberPrototype.cpp: + (JSC::NumberPrototype::NumberPrototype): + * runtime/ObjectPrototype.cpp: + (JSC::ObjectPrototype::ObjectPrototype): + * runtime/RegExpPrototype.cpp: + (JSC::RegExpPrototype::RegExpPrototype): + * runtime/StringConstructor.cpp: + (JSC::StringConstructor::StringConstructor): + +2009-05-05 Gavin Barraclough + + Reviewed by Oliver Hunt. + + For convenience, let the sampling flags tool clear multiple flags at once. + + * jsc.cpp: + (GlobalObject::GlobalObject): + (functionSetSamplingFlags): + (functionClearSamplingFlags): + +2009-05-04 Maciej Stachowiak + + Rubber stamped by Gavin. + + - inline Vector::resize for a ~1.5% speedup on string-tagcloud + + * wtf/Vector.h: + (WTF::Vector::resize): Inline + +2009-05-03 Steve Falkenburg + + Windows build fix. + + * JavaScriptCore.vcproj/JavaScriptCoreSubmit.sln: + +2009-05-03 Mark Rowe + + Fix the 64-bit build. + + * API/APICast.h: + (toJS): + (toRef): + * runtime/JSNumberCell.cpp: + (JSC::jsAPIMangledNumber): + * runtime/JSNumberCell.h: + +2009-05-02 Sam Weinig + + Roll JSC API number marshaling back in one last time (I hope). + +2009-05-03 Sam Weinig + + Roll JSC API number marshaling back out. It still breaks windows. + +2009-05-03 Sam Weinig + + Roll JSC API number marshaling back in. + +2009-05-02 Darin Adler + + Reviewed by Maciej Stachowiak. + + Bug 25519: streamline lexer by handling BOMs differently + https://bugs.webkit.org/show_bug.cgi?id=25519 + + Roughly 1% faster SunSpider. + + * parser/Grammar.y: Tweak formatting a bit. + + * parser/Lexer.cpp: + (JSC::Lexer::Lexer): Remove unnnecessary initialization of data members + that are set up by setCode. + (JSC::Lexer::currentOffset): Added. Used where the old code would look at + m_currentOffset. + (JSC::Lexer::shift1): Replaces the old shift function. No longer does anything + to handle BOM characters. + (JSC::Lexer::shift2): Ditto. + (JSC::Lexer::shift3): Ditto. + (JSC::Lexer::shift4): Ditto. + (JSC::Lexer::setCode): Updated for name change from yylineno to m_line. + Removed now-unused m_eatNextIdentifier, m_stackToken, and m_restrKeyword. + Replaced m_skipLF and m_skipCR with m_skipLineEnd. Replaced the old + m_length with m_codeEnd and m_currentOffset with m_codeStart. Added code + to scan for a BOM character and call copyCodeWithoutBOMs() if we find any. + (JSC::Lexer::copyCodeWithoutBOMs): Added. + (JSC::Lexer::nextLine): Updated for name change from yylineno to m_line. + (JSC::Lexer::makeIdentifier): Moved up higher in the file. + (JSC::Lexer::matchPunctuator): Moved up higher in the file and changed to + use a switch statement instead of just if statements. + (JSC::Lexer::isLineTerminator): Moved up higher in the file and changed to + have fewer branches. + (JSC::Lexer::lastTokenWasRestrKeyword): Added. This replaces the old + m_restrKeyword boolean. + (JSC::Lexer::isIdentStart): Moved up higher in the file. Changed to use + fewer branches in the ASCII but not identifier case. + (JSC::Lexer::isIdentPart): Ditto. + (JSC::Lexer::singleEscape): Moved up higher in the file. + (JSC::Lexer::convertOctal): Moved up higher in the file. + (JSC::Lexer::convertHex): Moved up higher in the file. Changed to use + toASCIIHexValue instead of rolling our own here. + (JSC::Lexer::convertUnicode): Ditto. + (JSC::Lexer::record8): Moved up higher in the file. + (JSC::Lexer::record16): Moved up higher in the file. + (JSC::Lexer::lex): Changed type of stringType to int. Replaced m_skipLF + and m_skipCR with m_skipLineEnd, which requires fewer branches in the + main lexer loop. Use currentOffset instead of m_currentOffset. Removed + unneeded m_stackToken. Use isASCIIDigit instead of isDecimalDigit. + Split out the two cases for InIdentifierOrKeyword and InIdentifier. + Added special case tight loops for identifiers and other simple states. + Removed a branch from the code that sets m_atLineStart to false using goto. + Streamlined the number-handling code so we don't check for the same types + twice for non-numeric cases and don't add a null to m_buffer8 when it's + not being used. Removed m_eatNextIdentifier, which wasn't working anyway, + and m_restrKeyword, which is redundant with m_lastToken. Set the + m_delimited flag without using a branch. + (JSC::Lexer::scanRegExp): Tweaked style a bit. + (JSC::Lexer::clear): Clear m_codeWithoutBOMs so we don't use memory after + parsing. Clear out UString objects in the more conventional way. + (JSC::Lexer::sourceCode): Made this no-longer inline since it has more + work to do in the case where we stripped BOMs. + + * parser/Lexer.h: Renamed yylineno to m_lineNumber. Removed convertHex + function, which is the same as toASCIIHexValue. Removed isHexDigit + function, which is the same as isASCIIHedDigit. Replaced shift with four + separate shift functions. Removed isWhiteSpace function that passes + m_current, instead just passing m_current explicitly. Removed isOctalDigit, + which is the same as isASCIIOctalDigit. Eliminated unused arguments from + matchPunctuator. Added copyCoodeWithoutBOMs and currentOffset. Moved the + makeIdentifier function out of the header. Added lastTokenWasRestrKeyword + function. Added new constants for m_skipLineEnd. Removed unused yycolumn, + m_restrKeyword, m_skipLF, m_skipCR, m_eatNextIdentifier, m_stackToken, + m_position, m_length, m_currentOffset, m_nextOffset1, m_nextOffset2, + m_nextOffset3. Added m_skipLineEnd, m_codeStart, m_codeEnd, and + m_codeWithoutBOMs. + + * parser/SourceProvider.h: Added hasBOMs function. In the future this can + be used to tell the lexer about strings known not to have BOMs. + + * runtime/JSGlobalObjectFunctions.cpp: + (JSC::globalFuncUnescape): Changed to use isASCIIHexDigit. + + * wtf/ASCIICType.h: Added using statements to match the design of the + other WTF headers. + +2009-05-02 Ada Chan + + Fix windows build (when doing a clean build) + + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: + +2009-05-02 Geoffrey Garen + + Reviewed by Sam Weinig. + + Simplified null-ish JSValues. + + Replaced calls to noValue() with calls to JSValue() (which is what + noValue() returned). Removed noValue(). + + Replaced almost all uses of jsImpossibleValue() with uses of JSValue(). + Its one remaining use is for construction of hash table deleted values. + For that specific task, I made a new, private constructor with a special + tag. Removed jsImpossibleValue(). + + Removed "JSValue()" initialiazers, since default construction happens... + by default. + + * API/JSCallbackObjectFunctions.h: + (JSC::::call): + * bytecompiler/BytecodeGenerator.cpp: + (JSC::BytecodeGenerator::emitLoad): + * bytecompiler/BytecodeGenerator.h: + * debugger/DebuggerCallFrame.cpp: + (JSC::DebuggerCallFrame::evaluate): + * debugger/DebuggerCallFrame.h: + (JSC::DebuggerCallFrame::DebuggerCallFrame): + * interpreter/CallFrame.h: + (JSC::ExecState::clearException): + * interpreter/Interpreter.cpp: + (JSC::Interpreter::privateExecute): + (JSC::Interpreter::retrieveLastCaller): + * interpreter/Register.h: + (JSC::Register::Register): + * jit/JITCall.cpp: + (JSC::JIT::unlinkCall): + (JSC::JIT::compileOpCallInitializeCallFrame): + (JSC::JIT::compileOpCall): + * jit/JITStubs.cpp: + (JSC::JITStubs::cti_op_call_eval): + (JSC::JITStubs::cti_vm_throw): + * profiler/Profiler.cpp: + (JSC::Profiler::willExecute): + (JSC::Profiler::didExecute): + * runtime/ArrayPrototype.cpp: + (JSC::getProperty): + * runtime/Completion.cpp: + (JSC::evaluate): + * runtime/Completion.h: + (JSC::Completion::Completion): + * runtime/GetterSetter.cpp: + (JSC::GetterSetter::getPrimitiveNumber): + * runtime/JSArray.cpp: + (JSC::JSArray::putSlowCase): + (JSC::JSArray::deleteProperty): + (JSC::JSArray::increaseVectorLength): + (JSC::JSArray::setLength): + (JSC::JSArray::pop): + (JSC::JSArray::sort): + (JSC::JSArray::compactForSorting): + * runtime/JSCell.cpp: + (JSC::JSCell::getJSNumber): + * runtime/JSCell.h: + (JSC::JSValue::getJSNumber): + * runtime/JSGlobalData.cpp: + (JSC::JSGlobalData::JSGlobalData): + * runtime/JSImmediate.h: + (JSC::JSImmediate::fromNumberOutsideIntegerRange): + (JSC::JSImmediate::from): + * runtime/JSNumberCell.cpp: + (JSC::jsNumberCell): + * runtime/JSObject.cpp: + (JSC::callDefaultValueFunction): + * runtime/JSObject.h: + (JSC::JSObject::getDirect): + * runtime/JSPropertyNameIterator.cpp: + (JSC::JSPropertyNameIterator::toPrimitive): + * runtime/JSPropertyNameIterator.h: + (JSC::JSPropertyNameIterator::next): + * runtime/JSValue.h: + (JSC::JSValue::): + (JSC::JSValueHashTraits::constructDeletedValue): + (JSC::JSValueHashTraits::isDeletedValue): + (JSC::JSValue::JSValue): + * runtime/JSWrapperObject.h: + (JSC::JSWrapperObject::JSWrapperObject): + * runtime/Operations.h: + (JSC::resolveBase): + * runtime/PropertySlot.h: + (JSC::PropertySlot::clearBase): + (JSC::PropertySlot::clearValue): + +2009-05-02 Maciej Stachowiak + + Reviewed by Cameron Zwarich. + + - speed up the lexer in various ways + + ~2% command-line SunSpider speedup + + * parser/Lexer.cpp: + (JSC::Lexer::setCode): Moved below shift() so it can inline. + (JSC::Lexer::scanRegExp): Use resize(0) instead of clear() on Vectors, since the intent + here is not to free the underlying buffer. + (JSC::Lexer::lex): ditto; also, change the loop logic a bit for the main lexing loop + to avoid branching on !m_done twice per iteration. Now we only check it once. + (JSC::Lexer::shift): Make this ALWAYS_INLINE and tag an unusual branch as UNLIKELY + * parser/Lexer.h: + (JSC::Lexer::makeIdentifier): force to be ALWAYS_INLINE + * wtf/Vector.h: + (WTF::::append): force to be ALWAYS_INLINE (may have helped in ways other than parsing but it wasn't + getting inlined in a hot code path in the lexer) + +2009-05-01 Steve Falkenburg + + Windows build fix. + + * JavaScriptCore.vcproj/JavaScriptCore.make: + +2009-05-01 Sam Weinig + + Fix 64bit build. + + * runtime/JSNumberCell.h: + (JSC::JSValue::JSValue): + * runtime/JSValue.h: + (JSC::jsNumber): + +2009-05-01 Sam Weinig + + Roll out JavaScriptCore API number marshaling. + + * API/APICast.h: + (toJS): + (toRef): + * API/JSBase.cpp: + (JSEvaluateScript): + (JSCheckScriptSyntax): + * API/JSCallbackConstructor.cpp: + (JSC::constructJSCallback): + * API/JSCallbackFunction.cpp: + (JSC::JSCallbackFunction::call): + * API/JSCallbackObjectFunctions.h: + (JSC::::getOwnPropertySlot): + (JSC::::put): + (JSC::::deleteProperty): + (JSC::::construct): + (JSC::::hasInstance): + (JSC::::call): + (JSC::::toNumber): + (JSC::::toString): + (JSC::::staticValueGetter): + (JSC::::callbackGetter): + * API/JSObjectRef.cpp: + (JSObjectMakeFunction): + (JSObjectMakeArray): + (JSObjectMakeDate): + (JSObjectMakeError): + (JSObjectMakeRegExp): + (JSObjectGetPrototype): + (JSObjectSetPrototype): + (JSObjectGetProperty): + (JSObjectSetProperty): + (JSObjectGetPropertyAtIndex): + (JSObjectSetPropertyAtIndex): + (JSObjectDeleteProperty): + (JSObjectCallAsFunction): + (JSObjectCallAsConstructor): + * API/JSValueRef.cpp: + (JSValueGetType): + (JSValueIsUndefined): + (JSValueIsNull): + (JSValueIsBoolean): + (JSValueIsNumber): + (JSValueIsString): + (JSValueIsObject): + (JSValueIsObjectOfClass): + (JSValueIsEqual): + (JSValueIsStrictEqual): + (JSValueIsInstanceOfConstructor): + (JSValueMakeUndefined): + (JSValueMakeNull): + (JSValueMakeBoolean): + (JSValueMakeNumber): + (JSValueMakeString): + (JSValueToBoolean): + (JSValueToNumber): + (JSValueToStringCopy): + (JSValueToObject): + (JSValueProtect): + (JSValueUnprotect): + * JavaScriptCore.exp: + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: + * runtime/JSNumberCell.cpp: + * runtime/JSNumberCell.h: + * runtime/JSValue.h: + +2009-05-01 Sam Weinig + + Fix windows build. + + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: + +2009-05-01 Sam Weinig + + Fix the build. + + * JavaScriptCore.exp: + +2009-05-01 Sam Weinig + + Reviewed by Geoffrey "Too Far!" Garen. + + Move JS number construction into JSValue. + + * runtime/JSImmediate.h: + * runtime/JSNumberCell.h: + (JSC::JSValue::JSValue): + * runtime/JSValue.h: + (JSC::jsNumber): + +2009-05-01 Sam Weinig + + Reviewed by Geoff "The Minneapolis" Garen. + + Add mechanism to vend heap allocated JS numbers to JavaScriptCore API clients with a + representation that is independent of the number representation in the VM. + - Numbers leaving the interpreter are converted to a tagged JSNumberCell. + - The numbers coming into the interpreter (asserted to be the tagged JSNumberCell) are + converted back to the VM's internal number representation. + + * API/APICast.h: + (toJS): + (toRef): + * API/JSBase.cpp: + (JSEvaluateScript): + (JSCheckScriptSyntax): + * API/JSCallbackConstructor.cpp: + (JSC::constructJSCallback): + * API/JSCallbackFunction.cpp: + (JSC::JSCallbackFunction::call): + * API/JSCallbackObjectFunctions.h: + (JSC::::getOwnPropertySlot): + (JSC::::put): + (JSC::::deleteProperty): + (JSC::::construct): + (JSC::::hasInstance): + (JSC::::call): + (JSC::::toNumber): + (JSC::::toString): + (JSC::::staticValueGetter): + (JSC::::callbackGetter): + * API/JSObjectRef.cpp: + (JSObjectMakeFunction): + (JSObjectMakeArray): + (JSObjectMakeDate): + (JSObjectMakeError): + (JSObjectMakeRegExp): + (JSObjectGetPrototype): + (JSObjectSetPrototype): + (JSObjectGetProperty): + (JSObjectSetProperty): + (JSObjectGetPropertyAtIndex): + (JSObjectSetPropertyAtIndex): + (JSObjectDeleteProperty): + (JSObjectCallAsFunction): + (JSObjectCallAsConstructor): + * API/JSValueRef.cpp: + (JSValueGetType): + (JSValueIsUndefined): + (JSValueIsNull): + (JSValueIsBoolean): + (JSValueIsNumber): + (JSValueIsString): + (JSValueIsObject): + (JSValueIsObjectOfClass): + (JSValueIsEqual): + (JSValueIsStrictEqual): + (JSValueIsInstanceOfConstructor): + (JSValueMakeUndefined): + (JSValueMakeNull): + (JSValueMakeBoolean): + (JSValueMakeNumber): + (JSValueMakeString): + (JSValueToBoolean): + (JSValueToNumber): + (JSValueToStringCopy): + (JSValueToObject): + (JSValueProtect): + (JSValueUnprotect): + * runtime/JSNumberCell.cpp: + (JSC::jsAPIMangledNumber): + * runtime/JSNumberCell.h: + (JSC::JSNumberCell::isAPIMangledNumber): + (JSC::JSNumberCell::): + (JSC::JSNumberCell::JSNumberCell): + (JSC::JSValue::isAPIMangledNumber): + * runtime/JSValue.h: + +2009-05-01 Geoffrey Garen + + Windows build fix take 6. + + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: + +2009-05-01 Geoffrey Garen + + Windows build fix take 5. + + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: + +2009-05-01 Geoffrey Garen + + Windows build fix take 4. + + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: + +2009-05-01 Geoffrey Garen + + Windows build fix take 3. + + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: + +2009-05-01 Geoffrey Garen + + Windows build fix take 2. + + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: + +2009-05-01 Geoffrey Garen + + Windows build fix take 1. + + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: + +2009-05-01 Geoffrey Garen + + Rubber Stamped by Sam Weinig. + + Renamed JSValuePtr => JSValue. + + * API/APICast.h: + (toJS): + (toRef): + * API/JSCallbackConstructor.h: + (JSC::JSCallbackConstructor::createStructure): + * API/JSCallbackFunction.cpp: + (JSC::JSCallbackFunction::call): + * API/JSCallbackFunction.h: + (JSC::JSCallbackFunction::createStructure): + * API/JSCallbackObject.h: + (JSC::JSCallbackObject::createStructure): + * API/JSCallbackObjectFunctions.h: + (JSC::::asCallbackObject): + (JSC::::put): + (JSC::::hasInstance): + (JSC::::call): + (JSC::::staticValueGetter): + (JSC::::staticFunctionGetter): + (JSC::::callbackGetter): + * API/JSContextRef.cpp: + * API/JSObjectRef.cpp: + (JSObjectMakeConstructor): + (JSObjectSetPrototype): + (JSObjectGetProperty): + (JSObjectSetProperty): + (JSObjectGetPropertyAtIndex): + (JSObjectSetPropertyAtIndex): + * API/JSValueRef.cpp: + (JSValueGetType): + (JSValueIsUndefined): + (JSValueIsNull): + (JSValueIsBoolean): + (JSValueIsNumber): + (JSValueIsString): + (JSValueIsObject): + (JSValueIsObjectOfClass): + (JSValueIsEqual): + (JSValueIsStrictEqual): + (JSValueIsInstanceOfConstructor): + (JSValueToBoolean): + (JSValueToNumber): + (JSValueToStringCopy): + (JSValueToObject): + (JSValueProtect): + (JSValueUnprotect): + * JavaScriptCore.exp: + * bytecode/CodeBlock.cpp: + (JSC::valueToSourceString): + (JSC::constantName): + (JSC::CodeBlock::dump): + * bytecode/CodeBlock.h: + (JSC::CodeBlock::getConstant): + (JSC::CodeBlock::addUnexpectedConstant): + (JSC::CodeBlock::unexpectedConstant): + * bytecode/EvalCodeCache.h: + (JSC::EvalCodeCache::get): + * bytecompiler/BytecodeGenerator.cpp: + (JSC::BytecodeGenerator::addConstant): + (JSC::BytecodeGenerator::addUnexpectedConstant): + (JSC::BytecodeGenerator::emitLoad): + (JSC::BytecodeGenerator::emitGetScopedVar): + (JSC::BytecodeGenerator::emitPutScopedVar): + (JSC::BytecodeGenerator::emitNewError): + (JSC::keyForImmediateSwitch): + * bytecompiler/BytecodeGenerator.h: + (JSC::BytecodeGenerator::JSValueHashTraits::constructDeletedValue): + (JSC::BytecodeGenerator::JSValueHashTraits::isDeletedValue): + * debugger/Debugger.cpp: + (JSC::evaluateInGlobalCallFrame): + * debugger/Debugger.h: + * debugger/DebuggerActivation.cpp: + (JSC::DebuggerActivation::put): + (JSC::DebuggerActivation::putWithAttributes): + (JSC::DebuggerActivation::lookupGetter): + (JSC::DebuggerActivation::lookupSetter): + * debugger/DebuggerActivation.h: + (JSC::DebuggerActivation::createStructure): + * debugger/DebuggerCallFrame.cpp: + (JSC::DebuggerCallFrame::evaluate): + * debugger/DebuggerCallFrame.h: + (JSC::DebuggerCallFrame::DebuggerCallFrame): + (JSC::DebuggerCallFrame::exception): + * interpreter/CachedCall.h: + (JSC::CachedCall::CachedCall): + (JSC::CachedCall::call): + (JSC::CachedCall::setThis): + (JSC::CachedCall::setArgument): + * interpreter/CallFrame.cpp: + (JSC::CallFrame::thisValue): + (JSC::CallFrame::dumpCaller): + * interpreter/CallFrame.h: + (JSC::ExecState::setException): + (JSC::ExecState::exception): + (JSC::ExecState::exceptionSlot): + * interpreter/CallFrameClosure.h: + (JSC::CallFrameClosure::setArgument): + * interpreter/Interpreter.cpp: + (JSC::Interpreter::resolve): + (JSC::Interpreter::resolveSkip): + (JSC::Interpreter::resolveGlobal): + (JSC::Interpreter::resolveBase): + (JSC::Interpreter::resolveBaseAndProperty): + (JSC::Interpreter::resolveBaseAndFunc): + (JSC::isNotObject): + (JSC::Interpreter::callEval): + (JSC::Interpreter::unwindCallFrame): + (JSC::Interpreter::throwException): + (JSC::Interpreter::execute): + (JSC::Interpreter::prepareForRepeatCall): + (JSC::Interpreter::createExceptionScope): + (JSC::Interpreter::tryCachePutByID): + (JSC::Interpreter::tryCacheGetByID): + (JSC::Interpreter::privateExecute): + (JSC::Interpreter::retrieveArguments): + (JSC::Interpreter::retrieveCaller): + (JSC::Interpreter::retrieveLastCaller): + * interpreter/Interpreter.h: + * interpreter/Register.h: + (JSC::Register::): + (JSC::Register::Register): + (JSC::Register::jsValue): + * jit/JIT.cpp: + (JSC::): + (JSC::JIT::privateCompileMainPass): + * jit/JIT.h: + * jit/JITArithmetic.cpp: + (JSC::JIT::compileFastArith_op_mod): + * jit/JITCall.cpp: + (JSC::JIT::unlinkCall): + (JSC::JIT::compileOpCallInitializeCallFrame): + (JSC::JIT::compileOpCall): + * jit/JITCode.h: + (JSC::): + (JSC::JITCode::execute): + * jit/JITInlineMethods.h: + (JSC::JIT::emitGetVirtualRegister): + (JSC::JIT::getConstantOperand): + (JSC::JIT::emitPutJITStubArgFromVirtualRegister): + (JSC::JIT::emitInitRegister): + * jit/JITPropertyAccess.cpp: + (JSC::JIT::privateCompilePutByIdTransition): + (JSC::JIT::patchGetByIdSelf): + (JSC::JIT::patchPutByIdReplace): + (JSC::JIT::privateCompileGetByIdSelf): + (JSC::JIT::privateCompileGetByIdProto): + (JSC::JIT::privateCompileGetByIdSelfList): + (JSC::JIT::privateCompileGetByIdProtoList): + (JSC::JIT::privateCompileGetByIdChainList): + (JSC::JIT::privateCompileGetByIdChain): + (JSC::JIT::privateCompilePutByIdReplace): + * jit/JITStubs.cpp: + (JSC::JITStubs::tryCachePutByID): + (JSC::JITStubs::tryCacheGetByID): + (JSC::JITStubs::cti_op_convert_this): + (JSC::JITStubs::cti_op_add): + (JSC::JITStubs::cti_op_pre_inc): + (JSC::JITStubs::cti_op_loop_if_less): + (JSC::JITStubs::cti_op_loop_if_lesseq): + (JSC::JITStubs::cti_op_get_by_id_generic): + (JSC::JITStubs::cti_op_get_by_id): + (JSC::JITStubs::cti_op_get_by_id_second): + (JSC::JITStubs::cti_op_get_by_id_self_fail): + (JSC::JITStubs::cti_op_get_by_id_proto_list): + (JSC::JITStubs::cti_op_get_by_id_proto_list_full): + (JSC::JITStubs::cti_op_get_by_id_proto_fail): + (JSC::JITStubs::cti_op_get_by_id_array_fail): + (JSC::JITStubs::cti_op_get_by_id_string_fail): + (JSC::JITStubs::cti_op_instanceof): + (JSC::JITStubs::cti_op_del_by_id): + (JSC::JITStubs::cti_op_mul): + (JSC::JITStubs::cti_op_call_NotJSFunction): + (JSC::JITStubs::cti_op_resolve): + (JSC::JITStubs::cti_op_construct_NotJSConstruct): + (JSC::JITStubs::cti_op_get_by_val): + (JSC::JITStubs::cti_op_get_by_val_string): + (JSC::JITStubs::cti_op_get_by_val_byte_array): + (JSC::JITStubs::cti_op_resolve_func): + (JSC::JITStubs::cti_op_sub): + (JSC::JITStubs::cti_op_put_by_val): + (JSC::JITStubs::cti_op_put_by_val_array): + (JSC::JITStubs::cti_op_put_by_val_byte_array): + (JSC::JITStubs::cti_op_lesseq): + (JSC::JITStubs::cti_op_loop_if_true): + (JSC::JITStubs::cti_op_load_varargs): + (JSC::JITStubs::cti_op_negate): + (JSC::JITStubs::cti_op_resolve_base): + (JSC::JITStubs::cti_op_resolve_skip): + (JSC::JITStubs::cti_op_resolve_global): + (JSC::JITStubs::cti_op_div): + (JSC::JITStubs::cti_op_pre_dec): + (JSC::JITStubs::cti_op_jless): + (JSC::JITStubs::cti_op_not): + (JSC::JITStubs::cti_op_jtrue): + (JSC::JITStubs::cti_op_post_inc): + (JSC::JITStubs::cti_op_eq): + (JSC::JITStubs::cti_op_lshift): + (JSC::JITStubs::cti_op_bitand): + (JSC::JITStubs::cti_op_rshift): + (JSC::JITStubs::cti_op_bitnot): + (JSC::JITStubs::cti_op_resolve_with_base): + (JSC::JITStubs::cti_op_mod): + (JSC::JITStubs::cti_op_less): + (JSC::JITStubs::cti_op_neq): + (JSC::JITStubs::cti_op_post_dec): + (JSC::JITStubs::cti_op_urshift): + (JSC::JITStubs::cti_op_bitxor): + (JSC::JITStubs::cti_op_bitor): + (JSC::JITStubs::cti_op_call_eval): + (JSC::JITStubs::cti_op_throw): + (JSC::JITStubs::cti_op_next_pname): + (JSC::JITStubs::cti_op_typeof): + (JSC::JITStubs::cti_op_is_undefined): + (JSC::JITStubs::cti_op_is_boolean): + (JSC::JITStubs::cti_op_is_number): + (JSC::JITStubs::cti_op_is_string): + (JSC::JITStubs::cti_op_is_object): + (JSC::JITStubs::cti_op_is_function): + (JSC::JITStubs::cti_op_stricteq): + (JSC::JITStubs::cti_op_nstricteq): + (JSC::JITStubs::cti_op_to_jsnumber): + (JSC::JITStubs::cti_op_in): + (JSC::JITStubs::cti_op_switch_imm): + (JSC::JITStubs::cti_op_switch_char): + (JSC::JITStubs::cti_op_switch_string): + (JSC::JITStubs::cti_op_del_by_val): + (JSC::JITStubs::cti_op_new_error): + (JSC::JITStubs::cti_vm_throw): + * jit/JITStubs.h: + * jsc.cpp: + (functionPrint): + (functionDebug): + (functionGC): + (functionVersion): + (functionRun): + (functionLoad): + (functionSetSamplingFlag): + (functionClearSamplingFlag): + (functionReadline): + (functionQuit): + * parser/Nodes.cpp: + (JSC::processClauseList): + * profiler/ProfileGenerator.cpp: + (JSC::ProfileGenerator::addParentForConsoleStart): + * profiler/Profiler.cpp: + (JSC::Profiler::willExecute): + (JSC::Profiler::didExecute): + (JSC::Profiler::createCallIdentifier): + * profiler/Profiler.h: + * runtime/ArgList.cpp: + (JSC::MarkedArgumentBuffer::slowAppend): + * runtime/ArgList.h: + (JSC::MarkedArgumentBuffer::at): + (JSC::MarkedArgumentBuffer::append): + (JSC::ArgList::ArgList): + (JSC::ArgList::at): + * runtime/Arguments.cpp: + (JSC::Arguments::put): + * runtime/Arguments.h: + (JSC::Arguments::createStructure): + (JSC::asArguments): + * runtime/ArrayConstructor.cpp: + (JSC::callArrayConstructor): + * runtime/ArrayPrototype.cpp: + (JSC::getProperty): + (JSC::putProperty): + (JSC::arrayProtoFuncToString): + (JSC::arrayProtoFuncToLocaleString): + (JSC::arrayProtoFuncJoin): + (JSC::arrayProtoFuncConcat): + (JSC::arrayProtoFuncPop): + (JSC::arrayProtoFuncPush): + (JSC::arrayProtoFuncReverse): + (JSC::arrayProtoFuncShift): + (JSC::arrayProtoFuncSlice): + (JSC::arrayProtoFuncSort): + (JSC::arrayProtoFuncSplice): + (JSC::arrayProtoFuncUnShift): + (JSC::arrayProtoFuncFilter): + (JSC::arrayProtoFuncMap): + (JSC::arrayProtoFuncEvery): + (JSC::arrayProtoFuncForEach): + (JSC::arrayProtoFuncSome): + (JSC::arrayProtoFuncReduce): + (JSC::arrayProtoFuncReduceRight): + (JSC::arrayProtoFuncIndexOf): + (JSC::arrayProtoFuncLastIndexOf): + * runtime/BooleanConstructor.cpp: + (JSC::callBooleanConstructor): + (JSC::constructBooleanFromImmediateBoolean): + * runtime/BooleanConstructor.h: + * runtime/BooleanObject.h: + (JSC::asBooleanObject): + * runtime/BooleanPrototype.cpp: + (JSC::booleanProtoFuncToString): + (JSC::booleanProtoFuncValueOf): + * runtime/CallData.cpp: + (JSC::call): + * runtime/CallData.h: + * runtime/Collector.cpp: + (JSC::Heap::protect): + (JSC::Heap::unprotect): + (JSC::Heap::heap): + * runtime/Collector.h: + * runtime/Completion.cpp: + (JSC::evaluate): + * runtime/Completion.h: + (JSC::Completion::Completion): + (JSC::Completion::value): + (JSC::Completion::setValue): + * runtime/ConstructData.cpp: + (JSC::construct): + * runtime/ConstructData.h: + * runtime/DateConstructor.cpp: + (JSC::constructDate): + (JSC::callDate): + (JSC::dateParse): + (JSC::dateNow): + (JSC::dateUTC): + * runtime/DateInstance.h: + (JSC::asDateInstance): + * runtime/DatePrototype.cpp: + (JSC::dateProtoFuncToString): + (JSC::dateProtoFuncToUTCString): + (JSC::dateProtoFuncToDateString): + (JSC::dateProtoFuncToTimeString): + (JSC::dateProtoFuncToLocaleString): + (JSC::dateProtoFuncToLocaleDateString): + (JSC::dateProtoFuncToLocaleTimeString): + (JSC::dateProtoFuncGetTime): + (JSC::dateProtoFuncGetFullYear): + (JSC::dateProtoFuncGetUTCFullYear): + (JSC::dateProtoFuncToGMTString): + (JSC::dateProtoFuncGetMonth): + (JSC::dateProtoFuncGetUTCMonth): + (JSC::dateProtoFuncGetDate): + (JSC::dateProtoFuncGetUTCDate): + (JSC::dateProtoFuncGetDay): + (JSC::dateProtoFuncGetUTCDay): + (JSC::dateProtoFuncGetHours): + (JSC::dateProtoFuncGetUTCHours): + (JSC::dateProtoFuncGetMinutes): + (JSC::dateProtoFuncGetUTCMinutes): + (JSC::dateProtoFuncGetSeconds): + (JSC::dateProtoFuncGetUTCSeconds): + (JSC::dateProtoFuncGetMilliSeconds): + (JSC::dateProtoFuncGetUTCMilliseconds): + (JSC::dateProtoFuncGetTimezoneOffset): + (JSC::dateProtoFuncSetTime): + (JSC::setNewValueFromTimeArgs): + (JSC::setNewValueFromDateArgs): + (JSC::dateProtoFuncSetMilliSeconds): + (JSC::dateProtoFuncSetUTCMilliseconds): + (JSC::dateProtoFuncSetSeconds): + (JSC::dateProtoFuncSetUTCSeconds): + (JSC::dateProtoFuncSetMinutes): + (JSC::dateProtoFuncSetUTCMinutes): + (JSC::dateProtoFuncSetHours): + (JSC::dateProtoFuncSetUTCHours): + (JSC::dateProtoFuncSetDate): + (JSC::dateProtoFuncSetUTCDate): + (JSC::dateProtoFuncSetMonth): + (JSC::dateProtoFuncSetUTCMonth): + (JSC::dateProtoFuncSetFullYear): + (JSC::dateProtoFuncSetUTCFullYear): + (JSC::dateProtoFuncSetYear): + (JSC::dateProtoFuncGetYear): + * runtime/DatePrototype.h: + (JSC::DatePrototype::createStructure): + * runtime/ErrorConstructor.cpp: + (JSC::callErrorConstructor): + * runtime/ErrorPrototype.cpp: + (JSC::errorProtoFuncToString): + * runtime/ExceptionHelpers.cpp: + (JSC::createInterruptedExecutionException): + (JSC::createError): + (JSC::createStackOverflowError): + (JSC::createUndefinedVariableError): + (JSC::createErrorMessage): + (JSC::createInvalidParamError): + (JSC::createNotAConstructorError): + (JSC::createNotAFunctionError): + * runtime/ExceptionHelpers.h: + * runtime/FunctionConstructor.cpp: + (JSC::callFunctionConstructor): + * runtime/FunctionPrototype.cpp: + (JSC::callFunctionPrototype): + (JSC::functionProtoFuncToString): + (JSC::functionProtoFuncApply): + (JSC::functionProtoFuncCall): + * runtime/FunctionPrototype.h: + (JSC::FunctionPrototype::createStructure): + * runtime/GetterSetter.cpp: + (JSC::GetterSetter::toPrimitive): + (JSC::GetterSetter::getPrimitiveNumber): + * runtime/GetterSetter.h: + (JSC::asGetterSetter): + * runtime/InternalFunction.cpp: + (JSC::InternalFunction::displayName): + * runtime/InternalFunction.h: + (JSC::InternalFunction::createStructure): + (JSC::asInternalFunction): + * runtime/JSActivation.cpp: + (JSC::JSActivation::getOwnPropertySlot): + (JSC::JSActivation::put): + (JSC::JSActivation::putWithAttributes): + (JSC::JSActivation::argumentsGetter): + * runtime/JSActivation.h: + (JSC::JSActivation::createStructure): + (JSC::asActivation): + * runtime/JSArray.cpp: + (JSC::storageSize): + (JSC::JSArray::JSArray): + (JSC::JSArray::getOwnPropertySlot): + (JSC::JSArray::put): + (JSC::JSArray::putSlowCase): + (JSC::JSArray::deleteProperty): + (JSC::JSArray::setLength): + (JSC::JSArray::pop): + (JSC::JSArray::push): + (JSC::JSArray::mark): + (JSC::compareNumbersForQSort): + (JSC::JSArray::sortNumeric): + (JSC::JSArray::sort): + (JSC::JSArray::compactForSorting): + (JSC::JSArray::checkConsistency): + (JSC::constructArray): + * runtime/JSArray.h: + (JSC::JSArray::getIndex): + (JSC::JSArray::setIndex): + (JSC::JSArray::createStructure): + (JSC::asArray): + (JSC::isJSArray): + * runtime/JSByteArray.cpp: + (JSC::JSByteArray::createStructure): + (JSC::JSByteArray::put): + * runtime/JSByteArray.h: + (JSC::JSByteArray::getIndex): + (JSC::JSByteArray::setIndex): + (JSC::asByteArray): + (JSC::isJSByteArray): + * runtime/JSCell.cpp: + (JSC::JSCell::put): + (JSC::JSCell::getJSNumber): + * runtime/JSCell.h: + (JSC::asCell): + (JSC::JSValue::asCell): + (JSC::JSValue::isString): + (JSC::JSValue::isGetterSetter): + (JSC::JSValue::isObject): + (JSC::JSValue::getString): + (JSC::JSValue::getObject): + (JSC::JSValue::getCallData): + (JSC::JSValue::getConstructData): + (JSC::JSValue::getUInt32): + (JSC::JSValue::getTruncatedInt32): + (JSC::JSValue::getTruncatedUInt32): + (JSC::JSValue::mark): + (JSC::JSValue::marked): + (JSC::JSValue::toPrimitive): + (JSC::JSValue::getPrimitiveNumber): + (JSC::JSValue::toBoolean): + (JSC::JSValue::toNumber): + (JSC::JSValue::toString): + (JSC::JSValue::toObject): + (JSC::JSValue::toThisObject): + (JSC::JSValue::needsThisConversion): + (JSC::JSValue::toThisString): + (JSC::JSValue::getJSNumber): + * runtime/JSFunction.cpp: + (JSC::JSFunction::call): + (JSC::JSFunction::argumentsGetter): + (JSC::JSFunction::callerGetter): + (JSC::JSFunction::lengthGetter): + (JSC::JSFunction::getOwnPropertySlot): + (JSC::JSFunction::put): + (JSC::JSFunction::construct): + * runtime/JSFunction.h: + (JSC::JSFunction::createStructure): + (JSC::asFunction): + * runtime/JSGlobalData.h: + * runtime/JSGlobalObject.cpp: + (JSC::markIfNeeded): + (JSC::JSGlobalObject::put): + (JSC::JSGlobalObject::putWithAttributes): + (JSC::JSGlobalObject::reset): + (JSC::JSGlobalObject::resetPrototype): + * runtime/JSGlobalObject.h: + (JSC::JSGlobalObject::createStructure): + (JSC::JSGlobalObject::GlobalPropertyInfo::GlobalPropertyInfo): + (JSC::asGlobalObject): + (JSC::Structure::prototypeForLookup): + (JSC::Structure::prototypeChain): + (JSC::Structure::isValid): + * runtime/JSGlobalObjectFunctions.cpp: + (JSC::encode): + (JSC::decode): + (JSC::globalFuncEval): + (JSC::globalFuncParseInt): + (JSC::globalFuncParseFloat): + (JSC::globalFuncIsNaN): + (JSC::globalFuncIsFinite): + (JSC::globalFuncDecodeURI): + (JSC::globalFuncDecodeURIComponent): + (JSC::globalFuncEncodeURI): + (JSC::globalFuncEncodeURIComponent): + (JSC::globalFuncEscape): + (JSC::globalFuncUnescape): + (JSC::globalFuncJSCPrint): + * runtime/JSGlobalObjectFunctions.h: + * runtime/JSImmediate.cpp: + (JSC::JSImmediate::toThisObject): + (JSC::JSImmediate::toObject): + (JSC::JSImmediate::prototype): + (JSC::JSImmediate::toString): + * runtime/JSImmediate.h: + (JSC::JSImmediate::isImmediate): + (JSC::JSImmediate::isNumber): + (JSC::JSImmediate::isIntegerNumber): + (JSC::JSImmediate::isDoubleNumber): + (JSC::JSImmediate::isPositiveIntegerNumber): + (JSC::JSImmediate::isBoolean): + (JSC::JSImmediate::isUndefinedOrNull): + (JSC::JSImmediate::isEitherImmediate): + (JSC::JSImmediate::areBothImmediate): + (JSC::JSImmediate::areBothImmediateIntegerNumbers): + (JSC::JSImmediate::makeValue): + (JSC::JSImmediate::makeInt): + (JSC::JSImmediate::makeDouble): + (JSC::JSImmediate::makeBool): + (JSC::JSImmediate::makeUndefined): + (JSC::JSImmediate::makeNull): + (JSC::JSImmediate::doubleValue): + (JSC::JSImmediate::intValue): + (JSC::JSImmediate::uintValue): + (JSC::JSImmediate::boolValue): + (JSC::JSImmediate::rawValue): + (JSC::JSImmediate::trueImmediate): + (JSC::JSImmediate::falseImmediate): + (JSC::JSImmediate::undefinedImmediate): + (JSC::JSImmediate::nullImmediate): + (JSC::JSImmediate::zeroImmediate): + (JSC::JSImmediate::oneImmediate): + (JSC::JSImmediate::impossibleValue): + (JSC::JSImmediate::toBoolean): + (JSC::JSImmediate::getTruncatedUInt32): + (JSC::JSImmediate::fromNumberOutsideIntegerRange): + (JSC::JSImmediate::from): + (JSC::JSImmediate::getTruncatedInt32): + (JSC::JSImmediate::toDouble): + (JSC::JSImmediate::getUInt32): + (JSC::JSValue::JSValue): + (JSC::JSValue::isUndefinedOrNull): + (JSC::JSValue::isBoolean): + (JSC::JSValue::getBoolean): + (JSC::JSValue::toInt32): + (JSC::JSValue::toUInt32): + (JSC::JSValue::isCell): + (JSC::JSValue::isInt32Fast): + (JSC::JSValue::getInt32Fast): + (JSC::JSValue::isUInt32Fast): + (JSC::JSValue::getUInt32Fast): + (JSC::JSValue::makeInt32Fast): + (JSC::JSValue::areBothInt32Fast): + (JSC::JSFastMath::canDoFastBitwiseOperations): + (JSC::JSFastMath::equal): + (JSC::JSFastMath::notEqual): + (JSC::JSFastMath::andImmediateNumbers): + (JSC::JSFastMath::xorImmediateNumbers): + (JSC::JSFastMath::orImmediateNumbers): + (JSC::JSFastMath::canDoFastRshift): + (JSC::JSFastMath::canDoFastUrshift): + (JSC::JSFastMath::rightShiftImmediateNumbers): + (JSC::JSFastMath::canDoFastAdditiveOperations): + (JSC::JSFastMath::addImmediateNumbers): + (JSC::JSFastMath::subImmediateNumbers): + (JSC::JSFastMath::incImmediateNumber): + (JSC::JSFastMath::decImmediateNumber): + * runtime/JSNotAnObject.cpp: + (JSC::JSNotAnObject::toPrimitive): + (JSC::JSNotAnObject::getPrimitiveNumber): + (JSC::JSNotAnObject::put): + * runtime/JSNotAnObject.h: + (JSC::JSNotAnObject::createStructure): + * runtime/JSNumberCell.cpp: + (JSC::JSNumberCell::toPrimitive): + (JSC::JSNumberCell::getPrimitiveNumber): + (JSC::JSNumberCell::getJSNumber): + (JSC::jsNumberCell): + * runtime/JSNumberCell.h: + (JSC::JSNumberCell::createStructure): + (JSC::isNumberCell): + (JSC::asNumberCell): + (JSC::jsNumber): + (JSC::JSValue::isDoubleNumber): + (JSC::JSValue::getDoubleNumber): + (JSC::JSValue::isNumber): + (JSC::JSValue::uncheckedGetNumber): + (JSC::jsNaN): + (JSC::JSValue::toJSNumber): + (JSC::JSValue::getNumber): + (JSC::JSValue::numberToInt32): + (JSC::JSValue::numberToUInt32): + * runtime/JSObject.cpp: + (JSC::JSObject::mark): + (JSC::JSObject::put): + (JSC::JSObject::putWithAttributes): + (JSC::callDefaultValueFunction): + (JSC::JSObject::getPrimitiveNumber): + (JSC::JSObject::defaultValue): + (JSC::JSObject::defineGetter): + (JSC::JSObject::defineSetter): + (JSC::JSObject::lookupGetter): + (JSC::JSObject::lookupSetter): + (JSC::JSObject::hasInstance): + (JSC::JSObject::toNumber): + (JSC::JSObject::toString): + (JSC::JSObject::fillGetterPropertySlot): + * runtime/JSObject.h: + (JSC::JSObject::getDirect): + (JSC::JSObject::getDirectLocation): + (JSC::JSObject::offsetForLocation): + (JSC::JSObject::locationForOffset): + (JSC::JSObject::getDirectOffset): + (JSC::JSObject::putDirectOffset): + (JSC::JSObject::createStructure): + (JSC::asObject): + (JSC::JSObject::prototype): + (JSC::JSObject::setPrototype): + (JSC::JSValue::isObject): + (JSC::JSObject::inlineGetOwnPropertySlot): + (JSC::JSObject::getOwnPropertySlotForWrite): + (JSC::JSObject::getPropertySlot): + (JSC::JSObject::get): + (JSC::JSObject::putDirect): + (JSC::JSObject::putDirectWithoutTransition): + (JSC::JSObject::toPrimitive): + (JSC::JSValue::get): + (JSC::JSValue::put): + (JSC::JSObject::allocatePropertyStorageInline): + * runtime/JSPropertyNameIterator.cpp: + (JSC::JSPropertyNameIterator::toPrimitive): + (JSC::JSPropertyNameIterator::getPrimitiveNumber): + * runtime/JSPropertyNameIterator.h: + (JSC::JSPropertyNameIterator::create): + (JSC::JSPropertyNameIterator::next): + * runtime/JSStaticScopeObject.cpp: + (JSC::JSStaticScopeObject::put): + (JSC::JSStaticScopeObject::putWithAttributes): + * runtime/JSStaticScopeObject.h: + (JSC::JSStaticScopeObject::JSStaticScopeObject): + (JSC::JSStaticScopeObject::createStructure): + * runtime/JSString.cpp: + (JSC::JSString::toPrimitive): + (JSC::JSString::getPrimitiveNumber): + (JSC::JSString::getOwnPropertySlot): + * runtime/JSString.h: + (JSC::JSString::createStructure): + (JSC::asString): + (JSC::isJSString): + (JSC::JSValue::toThisJSString): + * runtime/JSValue.cpp: + (JSC::JSValue::toInteger): + (JSC::JSValue::toIntegerPreserveNaN): + * runtime/JSValue.h: + (JSC::JSValue::makeImmediate): + (JSC::JSValue::asValue): + (JSC::noValue): + (JSC::jsImpossibleValue): + (JSC::jsNull): + (JSC::jsUndefined): + (JSC::jsBoolean): + (JSC::operator==): + (JSC::operator!=): + (JSC::JSValue::encode): + (JSC::JSValue::decode): + (JSC::JSValue::JSValue): + (JSC::JSValue::operator bool): + (JSC::JSValue::operator==): + (JSC::JSValue::operator!=): + (JSC::JSValue::isUndefined): + (JSC::JSValue::isNull): + * runtime/JSVariableObject.h: + (JSC::JSVariableObject::symbolTablePut): + (JSC::JSVariableObject::symbolTablePutWithAttributes): + * runtime/JSWrapperObject.h: + (JSC::JSWrapperObject::internalValue): + (JSC::JSWrapperObject::setInternalValue): + * runtime/Lookup.cpp: + (JSC::setUpStaticFunctionSlot): + * runtime/Lookup.h: + (JSC::lookupPut): + * runtime/MathObject.cpp: + (JSC::mathProtoFuncAbs): + (JSC::mathProtoFuncACos): + (JSC::mathProtoFuncASin): + (JSC::mathProtoFuncATan): + (JSC::mathProtoFuncATan2): + (JSC::mathProtoFuncCeil): + (JSC::mathProtoFuncCos): + (JSC::mathProtoFuncExp): + (JSC::mathProtoFuncFloor): + (JSC::mathProtoFuncLog): + (JSC::mathProtoFuncMax): + (JSC::mathProtoFuncMin): + (JSC::mathProtoFuncPow): + (JSC::mathProtoFuncRandom): + (JSC::mathProtoFuncRound): + (JSC::mathProtoFuncSin): + (JSC::mathProtoFuncSqrt): + (JSC::mathProtoFuncTan): + * runtime/MathObject.h: + (JSC::MathObject::createStructure): + * runtime/NativeErrorConstructor.cpp: + (JSC::callNativeErrorConstructor): + * runtime/NumberConstructor.cpp: + (JSC::numberConstructorNaNValue): + (JSC::numberConstructorNegInfinity): + (JSC::numberConstructorPosInfinity): + (JSC::numberConstructorMaxValue): + (JSC::numberConstructorMinValue): + (JSC::callNumberConstructor): + * runtime/NumberConstructor.h: + (JSC::NumberConstructor::createStructure): + * runtime/NumberObject.cpp: + (JSC::NumberObject::getJSNumber): + (JSC::constructNumber): + * runtime/NumberObject.h: + * runtime/NumberPrototype.cpp: + (JSC::numberProtoFuncToString): + (JSC::numberProtoFuncToLocaleString): + (JSC::numberProtoFuncValueOf): + (JSC::numberProtoFuncToFixed): + (JSC::numberProtoFuncToExponential): + (JSC::numberProtoFuncToPrecision): + * runtime/ObjectConstructor.cpp: + (JSC::constructObject): + (JSC::callObjectConstructor): + * runtime/ObjectPrototype.cpp: + (JSC::objectProtoFuncValueOf): + (JSC::objectProtoFuncHasOwnProperty): + (JSC::objectProtoFuncIsPrototypeOf): + (JSC::objectProtoFuncDefineGetter): + (JSC::objectProtoFuncDefineSetter): + (JSC::objectProtoFuncLookupGetter): + (JSC::objectProtoFuncLookupSetter): + (JSC::objectProtoFuncPropertyIsEnumerable): + (JSC::objectProtoFuncToLocaleString): + (JSC::objectProtoFuncToString): + * runtime/ObjectPrototype.h: + * runtime/Operations.cpp: + (JSC::JSValue::equalSlowCase): + (JSC::JSValue::strictEqualSlowCase): + (JSC::throwOutOfMemoryError): + (JSC::jsAddSlowCase): + (JSC::jsTypeStringForValue): + (JSC::jsIsObjectType): + (JSC::jsIsFunctionType): + * runtime/Operations.h: + (JSC::JSValue::equal): + (JSC::JSValue::equalSlowCaseInline): + (JSC::JSValue::strictEqual): + (JSC::JSValue::strictEqualSlowCaseInline): + (JSC::jsLess): + (JSC::jsLessEq): + (JSC::jsAdd): + (JSC::countPrototypeChainEntriesAndCheckForProxies): + (JSC::resolveBase): + * runtime/PropertySlot.cpp: + (JSC::PropertySlot::functionGetter): + * runtime/PropertySlot.h: + (JSC::PropertySlot::PropertySlot): + (JSC::PropertySlot::getValue): + (JSC::PropertySlot::putValue): + (JSC::PropertySlot::setValueSlot): + (JSC::PropertySlot::setValue): + (JSC::PropertySlot::setCustom): + (JSC::PropertySlot::setCustomIndex): + (JSC::PropertySlot::slotBase): + (JSC::PropertySlot::setBase): + (JSC::PropertySlot::): + * runtime/Protect.h: + (JSC::gcProtect): + (JSC::gcUnprotect): + (JSC::ProtectedPtr::operator JSValue): + (JSC::ProtectedJSValue::ProtectedJSValue): + (JSC::ProtectedJSValue::get): + (JSC::ProtectedJSValue::operator JSValue): + (JSC::ProtectedJSValue::operator->): + (JSC::ProtectedJSValue::~ProtectedJSValue): + (JSC::ProtectedJSValue::operator=): + (JSC::operator==): + (JSC::operator!=): + * runtime/RegExpConstructor.cpp: + (JSC::RegExpConstructor::getBackref): + (JSC::RegExpConstructor::getLastParen): + (JSC::RegExpConstructor::getLeftContext): + (JSC::RegExpConstructor::getRightContext): + (JSC::regExpConstructorDollar1): + (JSC::regExpConstructorDollar2): + (JSC::regExpConstructorDollar3): + (JSC::regExpConstructorDollar4): + (JSC::regExpConstructorDollar5): + (JSC::regExpConstructorDollar6): + (JSC::regExpConstructorDollar7): + (JSC::regExpConstructorDollar8): + (JSC::regExpConstructorDollar9): + (JSC::regExpConstructorInput): + (JSC::regExpConstructorMultiline): + (JSC::regExpConstructorLastMatch): + (JSC::regExpConstructorLastParen): + (JSC::regExpConstructorLeftContext): + (JSC::regExpConstructorRightContext): + (JSC::RegExpConstructor::put): + (JSC::setRegExpConstructorInput): + (JSC::setRegExpConstructorMultiline): + (JSC::constructRegExp): + (JSC::callRegExpConstructor): + * runtime/RegExpConstructor.h: + (JSC::RegExpConstructor::createStructure): + (JSC::asRegExpConstructor): + * runtime/RegExpMatchesArray.h: + (JSC::RegExpMatchesArray::put): + * runtime/RegExpObject.cpp: + (JSC::regExpObjectGlobal): + (JSC::regExpObjectIgnoreCase): + (JSC::regExpObjectMultiline): + (JSC::regExpObjectSource): + (JSC::regExpObjectLastIndex): + (JSC::RegExpObject::put): + (JSC::setRegExpObjectLastIndex): + (JSC::RegExpObject::test): + (JSC::RegExpObject::exec): + (JSC::callRegExpObject): + * runtime/RegExpObject.h: + (JSC::RegExpObject::createStructure): + (JSC::asRegExpObject): + * runtime/RegExpPrototype.cpp: + (JSC::regExpProtoFuncTest): + (JSC::regExpProtoFuncExec): + (JSC::regExpProtoFuncCompile): + (JSC::regExpProtoFuncToString): + * runtime/StringConstructor.cpp: + (JSC::stringFromCharCodeSlowCase): + (JSC::stringFromCharCode): + (JSC::callStringConstructor): + * runtime/StringObject.cpp: + (JSC::StringObject::put): + * runtime/StringObject.h: + (JSC::StringObject::createStructure): + (JSC::asStringObject): + * runtime/StringObjectThatMasqueradesAsUndefined.h: + (JSC::StringObjectThatMasqueradesAsUndefined::createStructure): + * runtime/StringPrototype.cpp: + (JSC::stringProtoFuncReplace): + (JSC::stringProtoFuncToString): + (JSC::stringProtoFuncCharAt): + (JSC::stringProtoFuncCharCodeAt): + (JSC::stringProtoFuncConcat): + (JSC::stringProtoFuncIndexOf): + (JSC::stringProtoFuncLastIndexOf): + (JSC::stringProtoFuncMatch): + (JSC::stringProtoFuncSearch): + (JSC::stringProtoFuncSlice): + (JSC::stringProtoFuncSplit): + (JSC::stringProtoFuncSubstr): + (JSC::stringProtoFuncSubstring): + (JSC::stringProtoFuncToLowerCase): + (JSC::stringProtoFuncToUpperCase): + (JSC::stringProtoFuncLocaleCompare): + (JSC::stringProtoFuncBig): + (JSC::stringProtoFuncSmall): + (JSC::stringProtoFuncBlink): + (JSC::stringProtoFuncBold): + (JSC::stringProtoFuncFixed): + (JSC::stringProtoFuncItalics): + (JSC::stringProtoFuncStrike): + (JSC::stringProtoFuncSub): + (JSC::stringProtoFuncSup): + (JSC::stringProtoFuncFontcolor): + (JSC::stringProtoFuncFontsize): + (JSC::stringProtoFuncAnchor): + (JSC::stringProtoFuncLink): + * runtime/Structure.cpp: + (JSC::Structure::Structure): + (JSC::Structure::changePrototypeTransition): + * runtime/Structure.h: + (JSC::Structure::create): + (JSC::Structure::setPrototypeWithoutTransition): + (JSC::Structure::storedPrototype): + +2009-05-01 Geoffrey Garen + + Reviewed by Sam "That doesn't look like what I thought it looks like" Weinig. + + Beefed up the JSValuePtr class and removed some non-JSValuePtr dependencies + on JSImmediate, in prepapration for making JSImmediate an implementation + detail of JSValuePtr. + + SunSpider reports no change. + + * interpreter/Interpreter.cpp: + (JSC::Interpreter::privateExecute): + * jit/JIT.cpp: + (JSC::JIT::privateCompileMainPass): + * jit/JITArithmetic.cpp: + (JSC::JIT::compileFastArith_op_mod): + * runtime/JSGlobalObjectFunctions.cpp: + (JSC::globalFuncParseInt): Updated for interface changes. + + * runtime/JSImmediate.h: + (JSC::JSValuePtr::JSValuePtr): + * runtime/JSValue.h: + (JSC::JSValuePtr::): + (JSC::jsImpossibleValue): + (JSC::jsNull): + (JSC::jsUndefined): + (JSC::jsBoolean): + (JSC::JSValuePtr::encode): + (JSC::JSValuePtr::decode): + (JSC::JSValuePtr::JSValuePtr): + (JSC::JSValuePtr::operator bool): + (JSC::JSValuePtr::operator==): + (JSC::JSValuePtr::operator!=): + (JSC::JSValuePtr::isUndefined): + (JSC::JSValuePtr::isNull): Changed jsImpossibleValue(), jsNull(), + jsUndefined(), and jsBoolean() to operate in terms of JSValuePtr instead + of JSImmediate. + + * wtf/StdLibExtras.h: + (WTF::bitwise_cast): Fixed up for clarity. + +2009-04-30 Gavin Barraclough + + Reviewed by Geoff Garen. + + Bug fix for rdar:/6845379. If a case-insensitive regex contains + a character class containing a range with an upper bound of \uFFFF + the parser will infinite-loop whist adding other-case characters + for characters in the range that do have another case. + + * yarr/RegexCompiler.cpp: + (JSC::Yarr::CharacterClassConstructor::putRange): + +2009-04-30 Gavin Barraclough + + Reviewed by Oliver Hunt. + + OPCODE_SAMPLING without CODEBLOCK_SAMPLING is currently broken, + since SamplingTool::Sample::isNull() checks the m_codeBlock + member (which is always null without CODEBLOCK_SAMPLING). + + Restructure the checks so make this work again. + + * bytecode/SamplingTool.cpp: + (JSC::SamplingTool::doRun): + * bytecode/SamplingTool.h: + (JSC::SamplingTool::Sample::isNull): + +2009-04-30 Maciej Stachowiak + + Reviewed by Gavin Barraclough. + + - Concatenate final three strings in simple replace case at one go + + ~0.2% SunSpider speedup + + * runtime/StringPrototype.cpp: + (JSC::stringProtoFuncReplace): Use new replaceRange helper instead of + taking substrings and concatenating three strings. + * runtime/UString.cpp: + (JSC::UString::replaceRange): New helper function. + * runtime/UString.h: + +2009-04-30 Geoffrey Garen + + Rubber Stamped by Gavin Barraclough. + + Changed JSValueEncodedAsPtr* => EncodedJSValuePtr to support a non-pointer + encoding for JSValuePtrs. + + * API/APICast.h: + (toJS): + * bytecompiler/BytecodeGenerator.h: + (JSC::BytecodeGenerator::JSValueHashTraits::constructDeletedValue): + (JSC::BytecodeGenerator::JSValueHashTraits::isDeletedValue): + * interpreter/Register.h: + (JSC::Register::): + * jit/JIT.cpp: + (JSC::): + * jit/JIT.h: + * jit/JITCode.h: + (JSC::): + * jit/JITStubs.cpp: + (JSC::JITStubs::cti_op_add): + (JSC::JITStubs::cti_op_pre_inc): + (JSC::JITStubs::cti_op_get_by_id_generic): + (JSC::JITStubs::cti_op_get_by_id): + (JSC::JITStubs::cti_op_get_by_id_second): + (JSC::JITStubs::cti_op_get_by_id_self_fail): + (JSC::JITStubs::cti_op_get_by_id_proto_list): + (JSC::JITStubs::cti_op_get_by_id_proto_list_full): + (JSC::JITStubs::cti_op_get_by_id_proto_fail): + (JSC::JITStubs::cti_op_get_by_id_array_fail): + (JSC::JITStubs::cti_op_get_by_id_string_fail): + (JSC::JITStubs::cti_op_instanceof): + (JSC::JITStubs::cti_op_del_by_id): + (JSC::JITStubs::cti_op_mul): + (JSC::JITStubs::cti_op_call_NotJSFunction): + (JSC::JITStubs::cti_op_resolve): + (JSC::JITStubs::cti_op_construct_NotJSConstruct): + (JSC::JITStubs::cti_op_get_by_val): + (JSC::JITStubs::cti_op_get_by_val_string): + (JSC::JITStubs::cti_op_get_by_val_byte_array): + (JSC::JITStubs::cti_op_sub): + (JSC::JITStubs::cti_op_lesseq): + (JSC::JITStubs::cti_op_negate): + (JSC::JITStubs::cti_op_resolve_base): + (JSC::JITStubs::cti_op_resolve_skip): + (JSC::JITStubs::cti_op_resolve_global): + (JSC::JITStubs::cti_op_div): + (JSC::JITStubs::cti_op_pre_dec): + (JSC::JITStubs::cti_op_not): + (JSC::JITStubs::cti_op_eq): + (JSC::JITStubs::cti_op_lshift): + (JSC::JITStubs::cti_op_bitand): + (JSC::JITStubs::cti_op_rshift): + (JSC::JITStubs::cti_op_bitnot): + (JSC::JITStubs::cti_op_mod): + (JSC::JITStubs::cti_op_less): + (JSC::JITStubs::cti_op_neq): + (JSC::JITStubs::cti_op_urshift): + (JSC::JITStubs::cti_op_bitxor): + (JSC::JITStubs::cti_op_bitor): + (JSC::JITStubs::cti_op_call_eval): + (JSC::JITStubs::cti_op_throw): + (JSC::JITStubs::cti_op_next_pname): + (JSC::JITStubs::cti_op_typeof): + (JSC::JITStubs::cti_op_is_undefined): + (JSC::JITStubs::cti_op_is_boolean): + (JSC::JITStubs::cti_op_is_number): + (JSC::JITStubs::cti_op_is_string): + (JSC::JITStubs::cti_op_is_object): + (JSC::JITStubs::cti_op_is_function): + (JSC::JITStubs::cti_op_stricteq): + (JSC::JITStubs::cti_op_nstricteq): + (JSC::JITStubs::cti_op_to_jsnumber): + (JSC::JITStubs::cti_op_in): + (JSC::JITStubs::cti_op_del_by_val): + (JSC::JITStubs::cti_vm_throw): + * jit/JITStubs.h: + * runtime/JSValue.h: + (JSC::JSValuePtr::encode): + (JSC::JSValuePtr::decode): + +2009-04-30 Gavin Barraclough + + Reviewed by Oliver "Abandon Ship!" Hunt. + + Fix a leak in Yarr. + + All Disjunctions should be recorded in RegexPattern::m_disjunctions, + so that they can be freed at the end of compilation - copyDisjunction + is failing to do so. + + * yarr/RegexCompiler.cpp: + (JSC::Yarr::RegexPatternConstructor::copyDisjunction): + +2009-04-30 Oliver Hunt + + Reviewed by Gavin Barraclough. + + Add function to CallFrame for dumping the current JS caller + + Added debug only method CallFrame::dumpCaller() that provide the call location + of the deepest currently executing JS function. + + * interpreter/CallFrame.cpp: + (JSC::CallFrame::dumpCaller): + * interpreter/CallFrame.h: + +2009-04-30 Maciej Stachowiak + + Reviewed by Geoff Garen. + + - make BaseStrings have themselves as a base, instead of nothing, to remove common branches + + ~0.7% SunSpider speedup + + * runtime/UString.h: + (JSC::UString::Rep::Rep): For the constructor without a base, set self as base instead of null. + (JSC::UString::Rep::baseString): Just read m_baseString - no more branching. + +2009-04-30 Gavin Barraclough + + Reviewed by Oliver Hunt. + + Two quick improvements to SamplingFlags mechanism. + + SamplingFlags::ScopedFlag class to provide support for automagically + clearing a flag as it goes out of scope, and add a little more detail + to the output generated by the tool. + + * bytecode/SamplingTool.cpp: + (JSC::SamplingFlags::stop): + * bytecode/SamplingTool.h: + (JSC::SamplingFlags::ScopedFlag::ScopedFlag): + (JSC::SamplingFlags::ScopedFlag::~ScopedFlag): + +2009-04-30 Adam Roben + + Restore build event steps that were truncated in r43082 + + Rubber-stamped by Steve Falkenburg. + + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops: + * JavaScriptCore.vcproj/jsc/jscCommon.vsprops: + * JavaScriptCore.vcproj/testapi/testapiCommon.vsprops: + Re-copied the command lines for the build events from the pre-r43082 + .vcproj files. + + * JavaScriptCore.vcproj/jsc/jsc.vcproj: Removed an unnecessary + attribute. + +2009-04-30 Adam Roben + + Move settings from .vcproj files to .vsprops files within the + JavaScriptCore directory + + Moving the settings to a .vsprops file means that we will only have to + change a single setting to affect all configurations, instead of one + setting per configuration. + + Reviewed by Steve Falkenburg. + + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: + * JavaScriptCore.vcproj/WTF/WTF.vcproj: + * JavaScriptCore.vcproj/jsc/jsc.vcproj: + * JavaScriptCore.vcproj/testapi/testapi.vcproj: + Moved settings from these files to the new .vsprops files. Note that + testapi.vcproj had a lot of overrides of default settings that were + the same as the defaults, which I've removed. + + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops: Added. + * JavaScriptCore.vcproj/WTF/WTFCommon.vsprops: Added. + * JavaScriptCore.vcproj/jsc/jscCommon.vsprops: Added. + * JavaScriptCore.vcproj/testapi/testapiCommon.vsprops: Added. + +2009-04-30 Dimitri Glazkov + + Reviewed by Timothy Hatcher. + + https://bugs.webkit.org/show_bug.cgi?id=25470 + Extend the cover of ENABLE_JAVASCRIPT_DEBUGGER to profiler. + + * Configurations/FeatureDefines.xcconfig: Added ENABLE_JAVASCRIPT_DEBUGGER define. + +2009-04-30 Maciej Stachowiak + + Reviewed by Alexey Proskuryakov. + + - speed up string concatenation by reorganizing some simple cases + + 0.7% SunSpider speedup + + * runtime/UString.cpp: + (JSC::concatenate): Put fast case for appending a single character + before the empty string special cases; streamline code a bit to + delay computing values that are not needed in the fast path. + +2009-04-30 Gavin Barraclough + + Reviewed by Maciej Stachowiak. + + Add SamplingFlags mechanism. + + This mechanism allows fine-grained JSC and JavaScript program aware + performance measurement. The mechanism provides a set of 32 flags, + numbered #1..#32. Flag #16 is initially set, and all other flags + are cleared. Flags may be set and cleared from within + + Enable by setting ENABLE_SAMPLING_FLAGS to 1 in wtf/Platform.h. + Disabled by default, no performance impact. Flags may be modified + by calling SamplingFlags::setFlag() and SamplingFlags::clearFlag() + from within JSC implementation, or by calling setSamplingFlag() and + clearSamplingFlag() from JavaScript. + + The flags are sampled with a frequency of 10000Hz, and the highest + set flag in recorded, allowing multiple events to be measured (with + the highest flag number representing the highest priority). + + Disabled by default; no performance impact. + + * JavaScriptCore.exp: + * bytecode/SamplingTool.cpp: + (JSC::SamplingFlags::sample): + (JSC::SamplingFlags::start): + (JSC::SamplingFlags::stop): + (JSC::SamplingThread::threadStartFunc): + (JSC::SamplingThread::start): + (JSC::SamplingThread::stop): + (JSC::ScopeSampleRecord::sample): + (JSC::SamplingTool::doRun): + (JSC::SamplingTool::sample): + (JSC::SamplingTool::start): + (JSC::SamplingTool::stop): + * bytecode/SamplingTool.h: + (JSC::SamplingFlags::setFlag): + (JSC::SamplingFlags::clearFlag): + (JSC::SamplingTool::SamplingTool): + * jsc.cpp: + (GlobalObject::GlobalObject): + (functionSetSamplingFlag): + (functionClearSamplingFlag): + (runWithScripts): + * wtf/Platform.h: + +2009-04-29 Sam Weinig + + Another attempt to fix the windows build. + + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: + +2009-04-29 Sam Weinig + + Try and fix the windows build. + + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: + +2009-04-29 Gavin Barraclough + + Reviewed by Oliver "Peg-Leg" Hunt. + + Coallesce input checking and reduce futzing with the index position + between alternatives and iterations of the main loop of a regex, + when run in YARR. + + Consider the following regex: /foo|bar/ + + Prior to this patch, this will be implemented something like this pseudo-code description: + + loop: + check_for_available_input(3) // this increments the index by 3, for the first alterantive. + if (available) { test "foo" } + decrement_index(3) + check_for_available_input(3) // this increments the index by 3, for the second alterantive. + if (available) { test "bar" } + decrement_index(3) + check_for_available_input(1) // can we loop again? + if (available) { goto loop } + + With these changes it will look more like this: + + check_for_available_input(3) // this increments the index by 3, for the first alterantive. + if (!available) { goto fail } + loop: + test "foo" + test "bar" + check_for_available_input(1) // can we loop again? + if (available) { goto loop } + fail: + + + This gives about a 5% gain on v8-regex, no change on Sunspider. + + * yarr/RegexJIT.cpp: + (JSC::Yarr::RegexGenerator::TermGenerationState::linkAlternativeBacktracksTo): + (JSC::Yarr::RegexGenerator::generateDisjunction): + +2009-04-29 Oliver Hunt + + Reviewed by Gavin Barraclough. + + Clean up ArgList to be a trivial type + + Separate out old ArgList logic to handle buffering and marking arguments + into a distinct MarkedArgumentBuffer type. ArgList becomes a trivial + struct of a pointer and length. + + * API/JSObjectRef.cpp: + (JSObjectMakeFunction): + (JSObjectMakeArray): + (JSObjectMakeDate): + (JSObjectMakeError): + (JSObjectMakeRegExp): + (JSObjectCallAsFunction): + (JSObjectCallAsConstructor): + * JavaScriptCore.exp: + * interpreter/CallFrame.h: + (JSC::ExecState::emptyList): + * runtime/ArgList.cpp: + (JSC::ArgList::getSlice): + (JSC::MarkedArgumentBuffer::markLists): + (JSC::MarkedArgumentBuffer::slowAppend): + * runtime/ArgList.h: + (JSC::MarkedArgumentBuffer::MarkedArgumentBuffer): + (JSC::MarkedArgumentBuffer::~MarkedArgumentBuffer): + (JSC::ArgList::ArgList): + (JSC::ArgList::at): + (JSC::ArgList::isEmpty): + (JSC::ArgList::size): + (JSC::ArgList::begin): + (JSC::ArgList::end): + * runtime/Arguments.cpp: + (JSC::Arguments::fillArgList): + * runtime/Arguments.h: + * runtime/ArrayPrototype.cpp: + (JSC::arrayProtoFuncConcat): + (JSC::arrayProtoFuncPush): + (JSC::arrayProtoFuncSort): + (JSC::arrayProtoFuncFilter): + (JSC::arrayProtoFuncMap): + (JSC::arrayProtoFuncEvery): + (JSC::arrayProtoFuncForEach): + (JSC::arrayProtoFuncSome): + (JSC::arrayProtoFuncReduce): + (JSC::arrayProtoFuncReduceRight): + * runtime/Collector.cpp: + (JSC::Heap::collect): + * runtime/Collector.h: + (JSC::Heap::markListSet): + * runtime/CommonIdentifiers.h: + * runtime/Error.cpp: + (JSC::Error::create): + * runtime/FunctionPrototype.cpp: + (JSC::functionProtoFuncApply): + * runtime/JSArray.cpp: + (JSC::JSArray::JSArray): + (JSC::AVLTreeAbstractorForArrayCompare::compare_key_key): + (JSC::JSArray::fillArgList): + (JSC::constructArray): + * runtime/JSArray.h: + * runtime/JSGlobalData.cpp: + (JSC::JSGlobalData::JSGlobalData): + * runtime/JSGlobalData.h: + * runtime/JSObject.cpp: + (JSC::JSObject::put): + * runtime/StringConstructor.cpp: + (JSC::stringFromCharCodeSlowCase): + * runtime/StringPrototype.cpp: + (JSC::stringProtoFuncReplace): + (JSC::stringProtoFuncConcat): + (JSC::stringProtoFuncMatch): + +2009-04-29 Laszlo Gombos + + Reviewed by Sam Weinig. + + https://bugs.webkit.org/show_bug.cgi?id=25334 + + Fix Qt build when ENABLE_JIT is explicitly set to 1 + to overrule defaults. + + * JavaScriptCore.pri: + +2009-04-29 Oliver Hunt + + Reviewed by Steve Falkenburg. + + Crash in profiler due to incorrect assuming displayName would be a string. + + Fixed by adding a type guard. + + * runtime/InternalFunction.cpp: + (JSC::InternalFunction::displayName): + +2009-04-28 Geoffrey Garen + + Rubber stamped by Beth Dakin. + + Removed scaffolding supporting dynamically converting between 32bit and + 64bit value representations. + + * API/JSCallbackConstructor.cpp: + (JSC::constructJSCallback): + * API/JSCallbackFunction.cpp: + (JSC::JSCallbackFunction::call): + * API/JSCallbackObjectFunctions.h: + (JSC::::construct): + (JSC::::call): + * bytecode/CodeBlock.cpp: + (JSC::CodeBlock::dump): + * bytecode/CodeBlock.h: + (JSC::CodeBlock::getConstant): + * bytecompiler/BytecodeGenerator.cpp: + (JSC::BytecodeGenerator::emitEqualityOp): + * interpreter/CallFrame.cpp: + (JSC::CallFrame::thisValue): + * interpreter/Interpreter.cpp: + (JSC::Interpreter::callEval): + (JSC::Interpreter::throwException): + (JSC::Interpreter::createExceptionScope): + (JSC::Interpreter::privateExecute): + (JSC::Interpreter::retrieveArguments): + * interpreter/Register.h: + (JSC::Register::): + (JSC::Register::Register): + (JSC::Register::jsValue): + (JSC::Register::marked): + (JSC::Register::mark): + (JSC::Register::i): + (JSC::Register::activation): + (JSC::Register::arguments): + (JSC::Register::callFrame): + (JSC::Register::codeBlock): + (JSC::Register::function): + (JSC::Register::propertyNameIterator): + (JSC::Register::scopeChain): + (JSC::Register::vPC): + * jit/JITStubs.cpp: + (JSC::JITStubs::cti_op_call_NotJSFunction): + (JSC::JITStubs::cti_op_load_varargs): + (JSC::JITStubs::cti_op_call_eval): + * jsc.cpp: + (functionPrint): + (functionDebug): + (functionRun): + (functionLoad): + * runtime/ArgList.h: + (JSC::ArgList::at): + * runtime/Arguments.cpp: + (JSC::Arguments::copyToRegisters): + (JSC::Arguments::fillArgList): + (JSC::Arguments::getOwnPropertySlot): + * runtime/ArrayConstructor.cpp: + (JSC::constructArrayWithSizeQuirk): + * runtime/ArrayPrototype.cpp: + (JSC::arrayProtoFuncJoin): + (JSC::arrayProtoFuncConcat): + (JSC::arrayProtoFuncPush): + (JSC::arrayProtoFuncSlice): + (JSC::arrayProtoFuncSort): + (JSC::arrayProtoFuncSplice): + (JSC::arrayProtoFuncUnShift): + (JSC::arrayProtoFuncFilter): + (JSC::arrayProtoFuncMap): + (JSC::arrayProtoFuncEvery): + (JSC::arrayProtoFuncForEach): + (JSC::arrayProtoFuncSome): + (JSC::arrayProtoFuncReduce): + (JSC::arrayProtoFuncReduceRight): + (JSC::arrayProtoFuncIndexOf): + (JSC::arrayProtoFuncLastIndexOf): + * runtime/BooleanConstructor.cpp: + (JSC::constructBoolean): + (JSC::callBooleanConstructor): + * runtime/DateConstructor.cpp: + (JSC::constructDate): + (JSC::dateParse): + (JSC::dateUTC): + * runtime/DatePrototype.cpp: + (JSC::formatLocaleDate): + (JSC::fillStructuresUsingTimeArgs): + (JSC::fillStructuresUsingDateArgs): + (JSC::dateProtoFuncSetTime): + (JSC::dateProtoFuncSetYear): + * runtime/ErrorConstructor.cpp: + (JSC::constructError): + * runtime/FunctionConstructor.cpp: + (JSC::constructFunction): + * runtime/FunctionPrototype.cpp: + (JSC::functionProtoFuncApply): + (JSC::functionProtoFuncCall): + * runtime/JSArray.cpp: + (JSC::JSArray::JSArray): + (JSC::constructArray): + * runtime/JSArray.h: + * runtime/JSGlobalObjectFunctions.cpp: + (JSC::encode): + (JSC::decode): + (JSC::globalFuncEval): + (JSC::globalFuncParseInt): + (JSC::globalFuncParseFloat): + (JSC::globalFuncIsNaN): + (JSC::globalFuncIsFinite): + (JSC::globalFuncEscape): + (JSC::globalFuncUnescape): + (JSC::globalFuncJSCPrint): + * runtime/MathObject.cpp: + (JSC::mathProtoFuncAbs): + (JSC::mathProtoFuncACos): + (JSC::mathProtoFuncASin): + (JSC::mathProtoFuncATan): + (JSC::mathProtoFuncATan2): + (JSC::mathProtoFuncCeil): + (JSC::mathProtoFuncCos): + (JSC::mathProtoFuncExp): + (JSC::mathProtoFuncFloor): + (JSC::mathProtoFuncLog): + (JSC::mathProtoFuncMax): + (JSC::mathProtoFuncMin): + (JSC::mathProtoFuncPow): + (JSC::mathProtoFuncRound): + (JSC::mathProtoFuncSin): + (JSC::mathProtoFuncSqrt): + (JSC::mathProtoFuncTan): + * runtime/NativeErrorConstructor.cpp: + (JSC::NativeErrorConstructor::construct): + * runtime/NumberConstructor.cpp: + (JSC::constructWithNumberConstructor): + (JSC::callNumberConstructor): + * runtime/NumberPrototype.cpp: + (JSC::numberProtoFuncToString): + (JSC::numberProtoFuncToFixed): + (JSC::numberProtoFuncToExponential): + (JSC::numberProtoFuncToPrecision): + * runtime/ObjectConstructor.cpp: + (JSC::constructObject): + * runtime/ObjectPrototype.cpp: + (JSC::objectProtoFuncHasOwnProperty): + (JSC::objectProtoFuncIsPrototypeOf): + (JSC::objectProtoFuncDefineGetter): + (JSC::objectProtoFuncDefineSetter): + (JSC::objectProtoFuncLookupGetter): + (JSC::objectProtoFuncLookupSetter): + (JSC::objectProtoFuncPropertyIsEnumerable): + * runtime/PropertySlot.h: + (JSC::PropertySlot::getValue): + * runtime/RegExpConstructor.cpp: + (JSC::constructRegExp): + * runtime/RegExpObject.cpp: + (JSC::RegExpObject::match): + * runtime/RegExpPrototype.cpp: + (JSC::regExpProtoFuncCompile): + * runtime/StringConstructor.cpp: + (JSC::stringFromCharCodeSlowCase): + (JSC::stringFromCharCode): + (JSC::constructWithStringConstructor): + (JSC::callStringConstructor): + * runtime/StringPrototype.cpp: + (JSC::stringProtoFuncReplace): + (JSC::stringProtoFuncCharAt): + (JSC::stringProtoFuncCharCodeAt): + (JSC::stringProtoFuncConcat): + (JSC::stringProtoFuncIndexOf): + (JSC::stringProtoFuncLastIndexOf): + (JSC::stringProtoFuncMatch): + (JSC::stringProtoFuncSearch): + (JSC::stringProtoFuncSlice): + (JSC::stringProtoFuncSplit): + (JSC::stringProtoFuncSubstr): + (JSC::stringProtoFuncSubstring): + (JSC::stringProtoFuncLocaleCompare): + (JSC::stringProtoFuncFontcolor): + (JSC::stringProtoFuncFontsize): + (JSC::stringProtoFuncAnchor): + (JSC::stringProtoFuncLink): + +2009-04-28 David Kilzer + + A little more hardening for UString + + Reviewed by Maciej Stachowiak. + + Revised fix for in r42644. + + * runtime/UString.cpp: + (JSC::newCapacityWithOverflowCheck): Added. + (JSC::concatenate): Used newCapacityWithOverflowCheck(). + (JSC::UString::append): Ditto. + +2009-04-28 Oliver Hunt + + Reviewed by Gavin Barraclough. + + Bring back r42969, this time with correct codegen + + Add logic to the codegen for right shift to avoid jumping to a helper function + when shifting a small floating point value. + + * jit/JITArithmetic.cpp: + (isSSE2Present): + (JSC::JIT::compileFastArith_op_rshift): + (JSC::JIT::compileFastArithSlow_op_rshift): + +2009-04-28 Kevin Ollivier + + wxMSW build fix. Switch JSCore build back to static. + + * API/JSBase.h: + * config.h: + * jscore.bkl: + +2009-04-28 Oliver Hunt + + Reviewed by NOBODY (Build fix). + + Roll out r42969, due to hangs in build bot. + + * jit/JITArithmetic.cpp: + (JSC::JIT::compileFastArith_op_rshift): + (JSC::JIT::compileFastArithSlow_op_rshift): + (JSC::isSSE2Present): + +2009-04-28 Xan Lopez + + Unreviewed: fix distcheck build, add (even more) missing files to list. + + * GNUmakefile.am: + +2009-04-28 Oliver Hunt + + Reviewed by Geoff Garen. + + Improve performance of string indexing + + Add a cti_get_by_val_string function to specialise indexing into a string object. + This gives us a slight performance win on a number of string tests. + + * jit/JITStubs.cpp: + (JSC::JITStubs::cti_op_get_by_val): + (JSC::JITStubs::cti_op_get_by_val_string): + * jit/JITStubs.h: + +2009-04-28 Oliver Hunt + + Reviewed by Geoff Garen. + + Improve performance of right shifts of large or otherwise floating point values. + + Add logic to the codegen for right shift to avoid jumping to a helper function + when shifting a small floating point value. + + * jit/JITArithmetic.cpp: + (isSSE2Present): Moved to the head of file. + (JSC::JIT::compileFastArith_op_rshift): + (JSC::JIT::compileFastArithSlow_op_rshift): + +2009-04-28 Xan Lopez + + Unreviewed: fix distcheck build, add (more) missing files to list. + + * GNUmakefile.am: + +2009-04-28 Xan Lopez + + Unreviewed: fix distcheck build, add missing header to file list. + + * GNUmakefile.am: + +2009-04-28 Gavin Barraclough + + Rubber stamped by Maciej "Henry Morgan" Stachowiak. + + Enable YARR. + (Again.) + + * wtf/Platform.h: + +2009-04-27 Gavin Barraclough + + Reviewed by Maciej Stachowiak. + + Tweak a loop condition to keep GCC happy, + some GCCs seem to be having issues with this. :-/ + + * bytecompiler/BytecodeGenerator.cpp: + (JSC::BytecodeGenerator::breakTarget): + * wtf/Platform.h: + +2009-04-27 Adam Roben + + Windows Debug build fix + + Not sure why the buildbots weren't affected by this problem. + + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Let VS + re-order the file list, and added JavaScriptCore[_debug].def to the + project. This was not necessary for the fix, but made making the fix + easier. + + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: + Removed a function that no longer exists. + +2009-04-26 Gavin Barraclough + + Reviewed by Weinig Sam. + + Fix for https://bugs.webkit.org/show_bug.cgi?id=25416 + "Cached prototype accesses unsafely hoist property storage load above structure checks." + + Do not hoist the load of the pointer to the property storage array. + + No performance impact. + + * jit/JITPropertyAccess.cpp: + (JSC::JIT::privateCompileGetByIdProto): + (JSC::JIT::privateCompileGetByIdProtoList): + +2009-04-26 Gavin Barraclough + + Reviewed by Geoffrey "Gaffe or energy?" Garen. + + Randomize address requested by ExecutableAllocatorFixedVMPool. + + * jit/ExecutableAllocatorFixedVMPool.cpp: + (JSC::FixedVMPoolAllocator::FixedVMPoolAllocator): + +2009-04-26 Sam Weinig + + Reviewed by Eric Seidel. + + Remove scons-based build system. + + * JavaScriptCore.scons: Removed. + +2009-04-25 Oliver Hunt + + Reviewed by NOBODY (Buildfix). + + Make HAVE_MADV_FREE darwin only for now + + * wtf/Platform.h: + +2009-04-25 Jan Michael Alonzo + + Reviewed by Oliver Hunt. + + Gtk build fix - check if we have MADV_FREE before using it. + + * interpreter/RegisterFile.cpp: + (JSC::RegisterFile::releaseExcessCapacity): + * wtf/Platform.h: + +2009-04-24 Kevin Ollivier + + wx build fix. Switching JSCore from a static lib to a dynamic lib + to match the Apple build and fix symbol exports. + + * jscore.bkl: + +2009-04-24 Laszlo Gombos + + Rubber-stamped by Mark Rowe. + + https://bugs.webkit.org/show_bug.cgi?id=25337 + Move ThreadingQt.cpp under the qt directory. + + * JavaScriptCore.pri: + * wtf/ThreadingQt.cpp: Removed. + * wtf/qt/ThreadingQt.cpp: Copied from JavaScriptCore/wtf/ThreadingQt.cpp. + +2009-04-24 Laszlo Gombos + + Rubber-stamped by Mark Rowe. + + https://bugs.webkit.org/show_bug.cgi?id=25338 + Move ThreadingGtk.cpp under the gtk directory. + + * GNUmakefile.am: + * wtf/ThreadingGtk.cpp: Removed. + * wtf/gtk/ThreadingGtk.cpp: Copied from JavaScriptCore/wtf/ThreadingGtk.cpp. + +2009-04-24 Gavin Barraclough + + Reviewed by Sam "Wesley" Weinig. + + Improve performance to YARR interpreter. + (From about 3x slower than PCRE on regex-dna to about 30% slower). + + * yarr/RegexCompiler.cpp: + (JSC::Yarr::RegexPatternConstructor::setupAlternativeOffsets): + * yarr/RegexInterpreter.cpp: + (JSC::Yarr::Interpreter::checkCharacter): + (JSC::Yarr::Interpreter::checkCasedCharacter): + (JSC::Yarr::Interpreter::backtrackPatternCharacter): + (JSC::Yarr::Interpreter::backtrackPatternCasedCharacter): + (JSC::Yarr::Interpreter::matchParentheticalAssertionBegin): + (JSC::Yarr::Interpreter::matchParentheticalAssertionEnd): + (JSC::Yarr::Interpreter::backtrackParentheticalAssertionBegin): + (JSC::Yarr::Interpreter::backtrackParentheticalAssertionEnd): + (JSC::Yarr::Interpreter::matchDisjunction): + (JSC::Yarr::Interpreter::interpret): + (JSC::Yarr::ByteCompiler::atomPatternCharacter): + (JSC::Yarr::ByteCompiler::atomParenthesesSubpatternBegin): + (JSC::Yarr::ByteCompiler::atomParentheticalAssertionBegin): + (JSC::Yarr::ByteCompiler::closeAlternative): + (JSC::Yarr::ByteCompiler::closeBodyAlternative): + (JSC::Yarr::ByteCompiler::atomParenthesesEnd): + (JSC::Yarr::ByteCompiler::regexBegin): + (JSC::Yarr::ByteCompiler::regexEnd): + (JSC::Yarr::ByteCompiler::alterantiveBodyDisjunction): + (JSC::Yarr::ByteCompiler::alterantiveDisjunction): + (JSC::Yarr::ByteCompiler::emitDisjunction): + * yarr/RegexInterpreter.h: + (JSC::Yarr::ByteTerm::): + (JSC::Yarr::ByteTerm::ByteTerm): + (JSC::Yarr::ByteTerm::BodyAlternativeBegin): + (JSC::Yarr::ByteTerm::BodyAlternativeDisjunction): + (JSC::Yarr::ByteTerm::BodyAlternativeEnd): + (JSC::Yarr::ByteTerm::AlternativeBegin): + (JSC::Yarr::ByteTerm::AlternativeDisjunction): + (JSC::Yarr::ByteTerm::AlternativeEnd): + (JSC::Yarr::ByteTerm::SubpatternBegin): + (JSC::Yarr::ByteTerm::SubpatternEnd): + * yarr/RegexJIT.cpp: + (JSC::Yarr::RegexGenerator::generateParentheticalAssertion): + * yarr/RegexPattern.h: + +2009-04-24 Rob Raguet-Schofield + + Rubber-stamped by Mark Rowe. + + * wtf/CurrentTime.h: Fix a typo in a comment. + +2009-04-24 Oliver Hunt + + Reviewed by NOBODY (Build fix). + + Add reinterpret_cast + + * interpreter/RegisterFile.cpp: + (JSC::RegisterFile::releaseExcessCapacity): + +2009-04-23 Oliver Hunt + + Reviewed by Geoff Garen. + + JavaScript register file should remap to release physical pages accumulated during deep recursion + + We now track the maximum extent of the RegisterFile, and when we reach the final + return from JS (so the stack portion of the registerfile becomes empty) we see + if that extent is greater than maxExcessCapacity. If it is we use madvise or + VirtualFree to release the physical pages that were backing the excess. + + * interpreter/RegisterFile.cpp: + (JSC::RegisterFile::releaseExcessCapacity): + * interpreter/RegisterFile.h: + (JSC::RegisterFile::RegisterFile): + (JSC::RegisterFile::shrink): + (JSC::RegisterFile::grow): + +2009-04-23 Mark Rowe + + With great sadness and a heavy heart I switch us back from YARR to WREC in + order to restore greenness to the world once more. + + * wtf/Platform.h: + +2009-04-23 Mark Rowe + + More Windows build fixage. + + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: + +2009-04-23 Mark Rowe + + Attempt to fix the Windows build. + + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: Remove a symbol that no longer exists. + +2009-04-23 Francisco Tolmasky + + BUG 24604: WebKit profiler reports incorrect total times + + + Reviewed by Timothy Hatcher and Kevin McCullough. + + * JavaScriptCore.exp: + * JavaScriptCore.xcodeproj/project.pbxproj: + * profiler/CallIdentifier.h: + (JSC::CallIdentifier::Hash::hash): + (JSC::CallIdentifier::Hash::equal): + (JSC::CallIdentifier::hash): + (WTF::): + * profiler/HeavyProfile.cpp: Removed. + * profiler/HeavyProfile.h: Removed. + * profiler/Profile.cpp: No more need for TreeProfile/HeavyProfile + (JSC::Profile::create): + * profiler/Profile.h: + * profiler/ProfileNode.cpp: + * profiler/ProfileNode.h: + * profiler/TreeProfile.cpp: Removed. + * profiler/TreeProfile.h: Removed. + +2009-04-23 Gavin Barraclough + + Not Reviewed. + + Speculative Windows build fix II. + + * yarr/RegexInterpreter.cpp: + +2009-04-23 Gavin Barraclough + + Not Reviewed. + + Speculative Windows build fix. + + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: + * runtime/RegExp.cpp: + +2009-04-23 Gavin Barraclough + + Rubber stamped by salty sea dogs Sam & Geoff. + + Enable YARR_JIT by default (where supported), replacing WREC. + + * wtf/Platform.h: + +2009-04-23 Gavin Barraclough + + Reviewed by Geoff "Dread Pirate Roberts" Garen. + + Various small fixes to YARR JIT, in preparation for enabling it by default. + + * Correctly index into the callframe when storing restart addresses for + nested alternatives. + * Allow backtracking back into matched alternatives of parentheses. + * Fix callframe offset calculation for parenthetical assertions. + * When a set of parenthese are quantified with a fixed and variable portion, + and the variable portion is quantified once, this should not reset the + pattern match on failure to match (the last match from the firxed portion + should be preserved). + * Up the pattern size limit to match PCRE's new limit. + * Unlclosed parentheses should be reported with the message "missing )". + + * wtf/Platform.h: + * yarr/RegexCompiler.cpp: + (JSC::Yarr::RegexPatternConstructor::quantifyAtom): + (JSC::Yarr::RegexPatternConstructor::setupAlternativeOffsets): + * yarr/RegexInterpreter.cpp: + (JSC::Yarr::Interpreter::matchParentheses): + (JSC::Yarr::Interpreter::backtrackParentheses): + (JSC::Yarr::ByteCompiler::emitDisjunction): + * yarr/RegexJIT.cpp: + (JSC::Yarr::RegexGenerator::loadFromFrameAndJump): + (JSC::Yarr::RegexGenerator::generateParenthesesDisjunction): + (JSC::Yarr::RegexGenerator::generateParentheticalAssertion): + (JSC::Yarr::RegexGenerator::generateTerm): + (JSC::Yarr::executeRegex): + * yarr/RegexParser.h: + (JSC::Yarr::Parser::): + (JSC::Yarr::Parser::parseTokens): + (JSC::Yarr::Parser::parse): + * yarr/RegexPattern.h: + (JSC::Yarr::PatternTerm::): + (JSC::Yarr::PatternTerm::PatternTerm): + +2009-04-22 Mark Rowe + + Rubber-stamped by Gavin Barraclough. + + Add the m_ prefix on FixedVMPoolAllocator's member variables, and fix typos in a few comments. + + * jit/ExecutableAllocatorFixedVMPool.cpp: + (JSC::FixedVMPoolAllocator::addToFreeList): + (JSC::FixedVMPoolAllocator::coalesceFreeSpace): + (JSC::FixedVMPoolAllocator::FixedVMPoolAllocator): + (JSC::FixedVMPoolAllocator::alloc): + (JSC::FixedVMPoolAllocator::free): + (JSC::FixedVMPoolAllocator::isWithinVMPool): + +2009-04-22 Mark Rowe + + Rubber-stamped by Gavin Barraclough. + + Add some assertions to FixedVMPoolAllocator to guard against cases where we + attempt to free memory that didn't originate from the pool, or we attempt to + hand out a bogus address from alloc. + + * jit/ExecutableAllocatorFixedVMPool.cpp: + (JSC::FixedVMPoolAllocator::release): + (JSC::FixedVMPoolAllocator::FixedVMPoolAllocator): + (JSC::FixedVMPoolAllocator::alloc): + (JSC::FixedVMPoolAllocator::free): + (JSC::FixedVMPoolAllocator::isWithinVMPool): + +2009-04-22 Gavin Barraclough + + Rubber stamped by Sam "Blackbeard" Weinig. + + Although pirates do spell the word 'generate' as 'genertate', + webkit developers do not. Fixertate. + + * yarr/RegexJIT.cpp: + (JSC::Yarr::RegexGenerator::generateAssertionBOL): + (JSC::Yarr::RegexGenerator::generateAssertionEOL): + (JSC::Yarr::RegexGenerator::generateAssertionWordBoundary): + (JSC::Yarr::RegexGenerator::generatePatternCharacterSingle): + (JSC::Yarr::RegexGenerator::generatePatternCharacterPair): + (JSC::Yarr::RegexGenerator::generatePatternCharacterFixed): + (JSC::Yarr::RegexGenerator::generatePatternCharacterGreedy): + (JSC::Yarr::RegexGenerator::generatePatternCharacterNonGreedy): + (JSC::Yarr::RegexGenerator::generateCharacterClassSingle): + (JSC::Yarr::RegexGenerator::generateCharacterClassFixed): + (JSC::Yarr::RegexGenerator::generateCharacterClassGreedy): + (JSC::Yarr::RegexGenerator::generateCharacterClassNonGreedy): + (JSC::Yarr::RegexGenerator::generateTerm): + +2009-04-22 Gavin Barraclough + + Reviewed by Sam "Blackbeard" Weinig. + + Improvements to YARR JIT. This patch expands support in three key areas: + * Add (temporary) support for falling back to PCRE for expressions not supported. + * Add support for x86_64 and Windows. + * Add support for singly quantified parentheses (? and ??), alternatives within + parentheses, and parenthetical assertions. + + * runtime/RegExp.cpp: + (JSC::RegExp::match): + * yarr/RegexJIT.cpp: + (JSC::Yarr::RegexGenerator::storeToFrame): + (JSC::Yarr::RegexGenerator::storeToFrameWithPatch): + (JSC::Yarr::RegexGenerator::loadFromFrameAndJump): + (JSC::Yarr::RegexGenerator::AlternativeBacktrackRecord::AlternativeBacktrackRecord): + (JSC::Yarr::RegexGenerator::TermGenerationState::resetAlternative): + (JSC::Yarr::RegexGenerator::TermGenerationState::resetTerm): + (JSC::Yarr::RegexGenerator::TermGenerationState::jumpToBacktrack): + (JSC::Yarr::RegexGenerator::TermGenerationState::plantJumpToBacktrackIfExists): + (JSC::Yarr::RegexGenerator::TermGenerationState::addBacktrackJump): + (JSC::Yarr::RegexGenerator::TermGenerationState::linkAlternativeBacktracks): + (JSC::Yarr::RegexGenerator::TermGenerationState::propagateBacktrackingFrom): + (JSC::Yarr::RegexGenerator::genertateAssertionBOL): + (JSC::Yarr::RegexGenerator::genertateAssertionEOL): + (JSC::Yarr::RegexGenerator::matchAssertionWordchar): + (JSC::Yarr::RegexGenerator::genertateAssertionWordBoundary): + (JSC::Yarr::RegexGenerator::genertatePatternCharacterSingle): + (JSC::Yarr::RegexGenerator::genertatePatternCharacterPair): + (JSC::Yarr::RegexGenerator::genertatePatternCharacterFixed): + (JSC::Yarr::RegexGenerator::genertatePatternCharacterGreedy): + (JSC::Yarr::RegexGenerator::genertatePatternCharacterNonGreedy): + (JSC::Yarr::RegexGenerator::genertateCharacterClassSingle): + (JSC::Yarr::RegexGenerator::genertateCharacterClassFixed): + (JSC::Yarr::RegexGenerator::genertateCharacterClassGreedy): + (JSC::Yarr::RegexGenerator::genertateCharacterClassNonGreedy): + (JSC::Yarr::RegexGenerator::generateParenthesesDisjunction): + (JSC::Yarr::RegexGenerator::generateParenthesesSingle): + (JSC::Yarr::RegexGenerator::generateParentheticalAssertion): + (JSC::Yarr::RegexGenerator::generateTerm): + (JSC::Yarr::RegexGenerator::generateDisjunction): + (JSC::Yarr::RegexGenerator::generateEnter): + (JSC::Yarr::RegexGenerator::generateReturn): + (JSC::Yarr::RegexGenerator::RegexGenerator): + (JSC::Yarr::RegexGenerator::generate): + (JSC::Yarr::RegexGenerator::compile): + (JSC::Yarr::RegexGenerator::generationFailed): + (JSC::Yarr::jitCompileRegex): + (JSC::Yarr::executeRegex): + * yarr/RegexJIT.h: + (JSC::Yarr::RegexCodeBlock::RegexCodeBlock): + (JSC::Yarr::RegexCodeBlock::~RegexCodeBlock): + +2009-04-22 Sam Weinig + + Rubber-stamped by Darin Adler. + + Fix for + Turn off Geolocation by default + + * Configurations/FeatureDefines.xcconfig: + +2009-04-22 Oliver Hunt + + Reviewed by NOBODY (Buildfix). + + * interpreter/CachedCall.h: + +2009-04-21 Oliver Hunt + + Reviewed by NOBODY (Build fix). + + * runtime/StringPrototype.cpp: + +2009-04-21 Oliver Hunt + + Reviewed by Maciej Stachowiak. + + Improve String.replace performance slightly + + Apply our vm reentry caching logic to String.replace with global + regexes. + + * runtime/StringPrototype.cpp: + (JSC::stringProtoFuncReplace): + +2009-04-21 Geoffrey Garen + + Reviewed by Cameron Zwarich and Oliver Hunt. + + Re-Fixed REGRESSION: Stack overflow on PowerPC on + fast/workers/use-machine-stack.html (22531) + + SunSpider reports no change. + + Use a larger recursion limit on the main thread (because we can, and + there's some evidence that it may improve compatibility), and a smaller + recursion limit on secondary threads (because they tend to have smaller + stacks). + + * interpreter/Interpreter.cpp: + (JSC::Interpreter::execute): + (JSC::Interpreter::prepareForRepeatCall): + * interpreter/Interpreter.h: + (JSC::): Ditto. I wrote the recursion test slightly funny, so that the + common case remains a simple compare to constant. + + * runtime/ArrayPrototype.cpp: + (JSC::arrayProtoFuncToString): + (JSC::arrayProtoFuncToLocaleString): + (JSC::arrayProtoFuncJoin): Conservatively, set the array recursion limits + to the lower, secondary thread limit. We can do something fancier if + compatibility moves us, but this seems sufficient for now. + +2009-04-21 Geoffrey Garen + + Rubber-stamped by Adam Roben. + + Disabled one more Mozilla JS test because it fails intermittently on Windows. + (See https://bugs.webkit.org/show_bug.cgi?id=25160.) + + * tests/mozilla/expected.html: + +2009-04-21 Adam Roben + + Rename JavaScriptCore_debug.dll to JavaScriptCore.dll in the Debug + configuration + + This matches the naming scheme for WebKit.dll, and will be necessary + once Safari links against JavaScriptCore.dll. This change also causes + run-safari not to fail (because the launcher printed by FindSafari was + always looking for JavaScriptCore.dll, never + JavaScriptCore_debug.dll). + + Part of Bug 25305: can't run safari or drt on windows + + + Reviewed by Steve Falkenburg and Sam Weinig. + + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: + * JavaScriptCore.vcproj/jsc/jsc.vcproj: + * JavaScriptCore.vcproj/testapi/testapi.vcproj: + Use $(WebKitDLLConfigSuffix) for naming JavaScriptCore.{dll,lib}. + +2009-04-21 Adam Roben + + Fix JavaScriptCore build on VC++ Express + + Reviewed by Steve Falkenburg and Sam Weinig. + + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Link + explicitly against gdi32.lib and oleaut32.lib. + +2009-04-21 Geoffrey Garen + + Reviewed by Mark Rowe. + + Tiger crash fix: Put VM tags in their own header file, and fixed up the + #ifdefs so they're not used on Tiger. + + * JavaScriptCore.xcodeproj/project.pbxproj: + * interpreter/RegisterFile.h: + (JSC::RegisterFile::RegisterFile): + * jit/ExecutableAllocatorFixedVMPool.cpp: + (JSC::FixedVMPoolAllocator::FixedVMPoolAllocator): + * jit/ExecutableAllocatorPosix.cpp: + (JSC::ExecutablePool::systemAlloc): + * runtime/Collector.cpp: + (JSC::allocateBlock): + * wtf/VMTags.h: Added. + +2009-04-20 Steve Falkenburg + + More Windows build fixes. + + * JavaScriptCore.vcproj/JavaScriptCore.make: Copy DLLs, PDBs. + * JavaScriptCore.vcproj/JavaScriptCore.resources: Added. + * JavaScriptCore.vcproj/JavaScriptCore.resources/Info.plist: Added. + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.rc: Added. + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Add version stamping, resource copying. + +2009-04-20 Steve Falkenburg + + Separate JavaScriptCore.dll from WebKit.dll. + Slight performance improvement or no change on benchmarks. + + Allows us to break a circular dependency between CFNetwork and WebKit on Windows, + and simplifies standalone JavaScriptCore builds. + + Reviewed by Oliver Hunt. + + * API/JSBase.h: Export symbols with JS_EXPORT when using MSVC. + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: + * JavaScriptCore.vcproj/WTF/WTF.vcproj: Build JavaScriptCore as a DLL instead of a static library. + * config.h: Specify __declspec(dllexport/dllimport) appropriately when exporting data. + * runtime/InternalFunction.h: Specify JS_EXPORTDATA on exported data. + * runtime/JSArray.h: Specify JS_EXPORTDATA on exported data. + * runtime/JSFunction.h: Specify JS_EXPORTDATA on exported data. + * runtime/StringObject.h: Specify JS_EXPORTDATA on exported data. + * runtime/UString.h: Specify JS_EXPORTDATA on exported data. + +2009-04-20 Sam Weinig + + Reviewed by Kevin McCullough. + + Always tag mmaped memory on darwin and clean up #defines + now that they are a little bigger. + + * interpreter/RegisterFile.h: + (JSC::RegisterFile::RegisterFile): + * jit/ExecutableAllocatorFixedVMPool.cpp: + (JSC::FixedVMPoolAllocator::FixedVMPoolAllocator): + * jit/ExecutableAllocatorPosix.cpp: + (JSC::ExecutablePool::systemAlloc): + * runtime/Collector.cpp: + (JSC::allocateBlock): + +2009-04-20 Sam Weinig + + Rubber-stamped by Tim Hatcher. + + Add licenses for xcconfig files. + + * Configurations/Base.xcconfig: + * Configurations/DebugRelease.xcconfig: + * Configurations/FeatureDefines.xcconfig: + * Configurations/JavaScriptCore.xcconfig: + * Configurations/Version.xcconfig: + +2009-04-20 Ariya Hidayat + + Build fix for Qt port (after r42646). Not reviewed. + + * wtf/unicode/qt4/UnicodeQt4.h: Added U16_PREV. + +2009-04-19 Sam Weinig + + Reviewed by Darin Adler. + + Better fix for JSStringCreateWithCFString hardening. + + * API/JSStringRefCF.cpp: + (JSStringCreateWithCFString): + +2009-04-19 Sam Weinig + + Reviewed by Dan Bernstein. + + Fix for + Harden JSStringCreateWithCFString against malformed CFStringRefs. + + * API/JSStringRefCF.cpp: + (JSStringCreateWithCFString): + +2009-04-19 David Kilzer + + Make FEATURE_DEFINES completely dynamic + + Reviewed by Darin Adler. + + Make FEATURE_DEFINES depend on individual ENABLE_FEATURE_NAME + variables for each feature, making it possible to remove all + knowledge of FEATURE_DEFINES from build-webkit. + + * Configurations/FeatureDefines.xcconfig: Extract a variable + from FEATURE_DEFINES for each feature setting. + +2009-04-18 Sam Weinig + + Reviewed by Dan Bernstein. + + Fix typo. s/VM_MEMORY_JAVASCRIPT_JIT_REGISTER_FILE/VM_MEMORY_JAVASCRIPT_CORE/ + + * runtime/Collector.cpp: + (JSC::allocateBlock): Fix bozo typo. + +2009-04-18 Sam Weinig + + Reviewed by Anders Carlsson. + + Fix for Tag JavaScript memory on SnowLeopard + + * interpreter/RegisterFile.h: + (JSC::RegisterFile::RegisterFile): + * jit/ExecutableAllocatorFixedVMPool.cpp: + (JSC::FixedVMPoolAllocator::FixedVMPoolAllocator): + * jit/ExecutableAllocatorPosix.cpp: + (JSC::ExecutablePool::systemAlloc): + * runtime/Collector.cpp: + (JSC::allocateBlock): + +2009-04-18 Drew Wilson + + VisiblePosition.characterAfter should return UChar32 + + Reviewed by Dan Bernstein. + + * wtf/unicode/icu/UnicodeIcu.h: + (WTF::Unicode::hasLineBreakingPropertyComplexContextOrIdeographic): Added. + +2009-04-18 Sam Weinig + + Reviewed by Mark Rowe. + + Fix for + A little bit of hardening for UString. + + * runtime/UString.cpp: + (JSC::concatenate): + (JSC::UString::append): + +2009-04-18 Sam Weinig + + Reviewed by Mark Rowe and Dan Bernstein. + + Fix for + A little bit of hardening for Vector. + + * wtf/Vector.h: + (WTF::Vector::append): + (WTF::Vector::insert): + +2009-04-17 Gavin Barraclough + + Reviewed by Geoff Garen. + + On x86_64, make all JIT-code allocations from a new heap, managed + by FixedVMPoolAllocator. This class allocates a single large (2Gb) + pool of virtual memory from which all further allocations take place. + Since all JIT code is allocated from this pool, we can continue to + safely assume (as is already asserted) that it will always be possible + to link any JIT-code to JIT-code jumps and calls. + + * JavaScriptCore.xcodeproj/project.pbxproj: + Add new file. + * jit/ExecutableAllocatorFixedVMPool.cpp: Added. + (JSC::FreeListEntry::FreeListEntry): + (JSC::AVLTreeAbstractorForFreeList::get_less): + (JSC::AVLTreeAbstractorForFreeList::set_less): + (JSC::AVLTreeAbstractorForFreeList::get_greater): + (JSC::AVLTreeAbstractorForFreeList::set_greater): + (JSC::AVLTreeAbstractorForFreeList::get_balance_factor): + (JSC::AVLTreeAbstractorForFreeList::set_balance_factor): + (JSC::AVLTreeAbstractorForFreeList::null): + (JSC::AVLTreeAbstractorForFreeList::compare_key_key): + (JSC::AVLTreeAbstractorForFreeList::compare_key_node): + (JSC::AVLTreeAbstractorForFreeList::compare_node_node): + (JSC::sortFreeListEntriesByPointer): + (JSC::sortCommonSizedAllocations): + (JSC::FixedVMPoolAllocator::release): + (JSC::FixedVMPoolAllocator::reuse): + (JSC::FixedVMPoolAllocator::addToFreeList): + (JSC::FixedVMPoolAllocator::coalesceFreeSpace): + (JSC::FixedVMPoolAllocator::FixedVMPoolAllocator): + (JSC::FixedVMPoolAllocator::alloc): + (JSC::FixedVMPoolAllocator::free): + (JSC::ExecutableAllocator::intializePageSize): + (JSC::ExecutablePool::systemAlloc): + (JSC::ExecutablePool::systemRelease): + The new 2Gb heap class! + * jit/ExecutableAllocatorPosix.cpp: + Disable use of this implementation on x86_64. + * wtf/AVLTree.h: + Add missing variable initialization. + (WTF::::remove): + +2009-04-17 Oliver Hunt + + Reviewed by Darin Adler. + + Fix bug where the VM reentry cache would not correctly unroll the cached callframe + + Fix a check that was intended to mark a cached call as invalid when the callframe could + not be constructed. Instead it was just checking that there was a place to put the + exception. This eventually results in a non-recoverable RegisterFile starvation. + + * interpreter/CachedCall.h: + (JSC::CachedCall::CachedCall): + (JSC::CachedCall::call): add assertion to ensure we don't use a bad callframe + +2009-04-17 David Kilzer + + Simplify FEATURE_DEFINES definition + + Reviewed by Darin Adler. + + This moves FEATURE_DEFINES and its related ENABLE_FEATURE_NAME + variables to their own FeatureDefines.xcconfig file. It also + extracts a new ENABLE_GEOLOCATION variable so that + FEATURE_DEFINES only needs to be defined once. + + * Configurations/FeatureDefines.xcconfig: Added. + * Configurations/JavaScriptCore.xcconfig: Removed definition of + ENABLE_SVG_DOM_OBJC_BINDINGS and FEATURE_DEFINES. Added include + of FeatureDefines.xcconfig. + * JavaScriptCore.xcodeproj/project.pbxproj: Added + FeatureDefines.xcconfig file. + +2009-04-08 Mihnea Ovidenie + + Reviewed by Oliver Hunt. + + Bug 25027: JavaScript parseInt wrong on negative numbers + + + When dealing with negative numbers, parseInt should use ceil instead of floor. + + * runtime/JSGlobalObjectFunctions.cpp: + (JSC::globalFuncParseInt): + +2009-04-16 Stephanie Lewis + + Reviewed by Oliver Hunt. + + 32-bit to 64-bit: Javascript hash tables double in size + + Remove perfect hash optimization which removes 1 MB of overhead on 32-bit and almost 2 MB on 64-bit. Removing the optimization was not a regression on SunSpider and the acid 3 test still passes. + + * create_hash_table: + * runtime/Lookup.cpp: + (JSC::HashTable::createTable): + (JSC::HashTable::deleteTable): + * runtime/Lookup.h: + (JSC::HashEntry::initialize): + (JSC::HashEntry::next): + (JSC::HashTable::entry): + * runtime/Structure.cpp: + (JSC::Structure::getEnumerableNamesFromClassInfoTable): + +2009-04-16 Oliver Hunt + + Reviewed by Gavin Barraclough. + + Fix subtle error in optimised VM reentry in Array.sort + + Basically to ensure we don't accidentally invalidate the cached callframe + we should be using the cached callframe rather than our own exec state. + While the old behaviour was wrong i have been unable to actually create a + test case where anything actually ends up going wrong. + + * interpreter/CachedCall.h: + (JSC::CachedCall::newCallFrame): + * runtime/JSArray.cpp: + (JSC::AVLTreeAbstractorForArrayCompare::compare_key_key): + +2009-04-16 Oliver Hunt + + Reviewed by Gavin Barraclough. + + Optimise op_resolve_base + + If we can statically find a property we are trying to resolve + the base of, the base is guaranteed to be the global object. + + * bytecompiler/BytecodeGenerator.cpp: + (JSC::BytecodeGenerator::emitResolveBase): + +2009-04-16 Oliver Hunt + + Reviewed by Gavin Barraclough. + + Improve performance of read-write-modify operators + + Implement cross scope optimisation for read-write-modify + operators, to avoid unnecessary calls to property resolve + helper functions. + + * bytecompiler/BytecodeGenerator.cpp: + (JSC::BytecodeGenerator::BytecodeGenerator): + (JSC::BytecodeGenerator::emitLoadGlobalObject): + (JSC::BytecodeGenerator::emitResolveWithBase): + * bytecompiler/BytecodeGenerator.h: + +2009-04-16 Oliver Hunt + + Reviewed by Gavin Barraclough. + + Improve performance of remaining array enumeration functions + + Make use of function entry cache for remaining Array enumeration functions. + + * runtime/ArrayPrototype.cpp: + (JSC::arrayProtoFuncMap): + (JSC::arrayProtoFuncEvery): + (JSC::arrayProtoFuncForEach): + (JSC::arrayProtoFuncSome): + +2009-04-15 Oliver Hunt + + Reviewed by Gavin Barraclough. + + Improve performance of Array.sort + + Cache the VM entry for Array.sort when using a JS comparison function. + + * runtime/JSArray.cpp: + (JSC::AVLTreeAbstractorForArrayCompare::compare_key_key): + (JSC::JSArray::sort): + +2009-04-15 Oliver Hunt + + Reviewed by Gavin Barraclough. + + Bug 25229: Need support for Array.prototype.reduceRight + + + Implement Array.reduceRight + + * runtime/ArrayPrototype.cpp: + (JSC::arrayProtoFuncReduceRight): + +2009-04-15 Oliver Hunt + + Reviewed by Gavin Barraclough. + + Bug 25227: Array.filter triggers an assertion when the target array shrinks while being filtered + + + We correct this simply by making the fast array path fall back on the slow path if + we ever discover the fast access is unsafe. + + * runtime/ArrayPrototype.cpp: + (JSC::arrayProtoFuncFilter): + +2009-04-13 Oliver Hunt + + Reviewed by Gavin Barraclough. + + Bug 25159: Support Array.prototype.reduce + + + Implement Array.prototype.reduce + + * runtime/ArrayPrototype.cpp: + (JSC::arrayProtoFuncReduce): + +2009-04-15 Oliver Hunt + + Reviewed by NOBODY (Build fix). + + Move CallFrameClosure from inside the Interpreter class to its own file. + + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: + * JavaScriptCore.xcodeproj/project.pbxproj: + * interpreter/CachedCall.h: + * interpreter/CallFrameClosure.h: Copied from JavaScriptCore/yarr/RegexJIT.h. + (JSC::CallFrameClosure::setArgument): + (JSC::CallFrameClosure::resetCallFrame): + * interpreter/Interpreter.cpp: + (JSC::Interpreter::prepareForRepeatCall): + * interpreter/Interpreter.h: + +2009-04-14 Oliver Hunt + + Reviewed by Cameron Zwarich. + + Bug 25202: Improve performance of repeated callbacks into the VM + + Add the concept of a CachedCall to native code for use in Array + prototype and similar functions where a single callback function + is called repeatedly with the same number of arguments. + + Used Array.prototype.filter as the test function and got a 50% win + over a naive non-caching specialised version. This makes the native + implementation of Array.prototype.filter faster than the JS one once + more. + + * JavaScriptCore.vcproj/JavaScriptCore.sln: + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: + * JavaScriptCore.xcodeproj/project.pbxproj: + * interpreter/CachedCall.h: Added. + (JSC::CachedCall::CachedCall): + (JSC::CachedCall::call): + (JSC::CachedCall::setThis): + (JSC::CachedCall::setArgument): + (JSC::CachedCall::~CachedCall): + CachedCall is a wrapper that automates the calling and teardown + for a CallFrameClosure + * interpreter/CallFrame.h: + * interpreter/Interpreter.cpp: + (JSC::Interpreter::prepareForRepeatCall): + Create the basic entry closure for a function + (JSC::Interpreter::execute): + A new ::execute method to enter the interpreter from a closure + (JSC::Interpreter::endRepeatCall): + Clear the entry closure + * interpreter/Interpreter.h: + (JSC::Interpreter::CallFrameClosure::setArgument): + (JSC::Interpreter::CallFrameClosure::resetCallFrame): + Helper functions to simplify setting up the closure's callframe + * runtime/ArrayPrototype.cpp: + (JSC::arrayProtoFuncFilter): + +2009-04-14 Xan Lopez + + Fix the build. + + Add the yarr headers (and only the headers) to the build, so that + RegExp.cpp can compile. The headers are ifdefed out with yarr + disabled, so we don't need anything else for now. + + * GNUmakefile.am: + +2009-04-14 Adam Roben + + Remove support for profile-guided optimization on Windows + + Rubber-stamped by Steve Falkenburg. + + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Removed + the Release_PGO configuration. Also let VS re-order the source files + list. + +2009-04-14 Xan Lopez + + Unreviewed build fix. + + * GNUmakefile.am: + +2009-04-14 Jan Michael Alonzo + + Gtk build fix when building minidom. Not reviewed. + + Use C-style comment instead of C++ style since autotools builds + minidom using gcc and not g++. + + * wtf/Platform.h: + +2009-04-14 Gavin Barraclough + + Reviewed by NOBODY - speculative build fix. + + * runtime/RegExp.h: + +2009-04-13 Gavin Barraclough + + Reviewed by Cap'n Geoff Garen. + + Yarr! + (Yet another regex runtime). + + Currently disabled by default since the interpreter, whilst awesomely + functional, has not been optimized and is likely slower than PCRE, and + the JIT, whilst faster than WREC, is presently incomplete and does not + fallback to using an interpreter for the cases it cannot handle. + + * JavaScriptCore.xcodeproj/project.pbxproj: + * assembler/MacroAssemblerX86Common.h: + (JSC::MacroAssemblerX86Common::move): + (JSC::MacroAssemblerX86Common::swap): + (JSC::MacroAssemblerX86Common::signExtend32ToPtr): + (JSC::MacroAssemblerX86Common::zeroExtend32ToPtr): + (JSC::MacroAssemblerX86Common::branch32): + (JSC::MacroAssemblerX86Common::branch16): + * assembler/X86Assembler.h: + (JSC::X86Assembler::cmpw_im): + (JSC::X86Assembler::testw_rr): + (JSC::X86Assembler::X86InstructionFormatter::immediate16): + * runtime/RegExp.cpp: + (JSC::RegExp::RegExp): + (JSC::RegExp::~RegExp): + (JSC::RegExp::create): + (JSC::RegExp::compile): + (JSC::RegExp::match): + * runtime/RegExp.h: + * wtf/Platform.h: + * yarr: Added. + * yarr/RegexCompiler.cpp: Added. + (JSC::Yarr::CharacterClassConstructor::CharacterClassConstructor): + (JSC::Yarr::CharacterClassConstructor::reset): + (JSC::Yarr::CharacterClassConstructor::append): + (JSC::Yarr::CharacterClassConstructor::putChar): + (JSC::Yarr::CharacterClassConstructor::isUnicodeUpper): + (JSC::Yarr::CharacterClassConstructor::isUnicodeLower): + (JSC::Yarr::CharacterClassConstructor::putRange): + (JSC::Yarr::CharacterClassConstructor::charClass): + (JSC::Yarr::CharacterClassConstructor::addSorted): + (JSC::Yarr::CharacterClassConstructor::addSortedRange): + (JSC::Yarr::newlineCreate): + (JSC::Yarr::digitsCreate): + (JSC::Yarr::spacesCreate): + (JSC::Yarr::wordcharCreate): + (JSC::Yarr::nondigitsCreate): + (JSC::Yarr::nonspacesCreate): + (JSC::Yarr::nonwordcharCreate): + (JSC::Yarr::RegexPatternConstructor::RegexPatternConstructor): + (JSC::Yarr::RegexPatternConstructor::~RegexPatternConstructor): + (JSC::Yarr::RegexPatternConstructor::reset): + (JSC::Yarr::RegexPatternConstructor::assertionBOL): + (JSC::Yarr::RegexPatternConstructor::assertionEOL): + (JSC::Yarr::RegexPatternConstructor::assertionWordBoundary): + (JSC::Yarr::RegexPatternConstructor::atomPatternCharacter): + (JSC::Yarr::RegexPatternConstructor::atomBuiltInCharacterClass): + (JSC::Yarr::RegexPatternConstructor::atomCharacterClassBegin): + (JSC::Yarr::RegexPatternConstructor::atomCharacterClassAtom): + (JSC::Yarr::RegexPatternConstructor::atomCharacterClassRange): + (JSC::Yarr::RegexPatternConstructor::atomCharacterClassBuiltIn): + (JSC::Yarr::RegexPatternConstructor::atomCharacterClassEnd): + (JSC::Yarr::RegexPatternConstructor::atomParenthesesSubpatternBegin): + (JSC::Yarr::RegexPatternConstructor::atomParentheticalAssertionBegin): + (JSC::Yarr::RegexPatternConstructor::atomParenthesesEnd): + (JSC::Yarr::RegexPatternConstructor::atomBackReference): + (JSC::Yarr::RegexPatternConstructor::copyDisjunction): + (JSC::Yarr::RegexPatternConstructor::copyTerm): + (JSC::Yarr::RegexPatternConstructor::quantifyAtom): + (JSC::Yarr::RegexPatternConstructor::disjunction): + (JSC::Yarr::RegexPatternConstructor::regexBegin): + (JSC::Yarr::RegexPatternConstructor::regexEnd): + (JSC::Yarr::RegexPatternConstructor::regexError): + (JSC::Yarr::RegexPatternConstructor::setupAlternativeOffsets): + (JSC::Yarr::RegexPatternConstructor::setupDisjunctionOffsets): + (JSC::Yarr::RegexPatternConstructor::setupOffsets): + (JSC::Yarr::compileRegex): + * yarr/RegexCompiler.h: Added. + * yarr/RegexInterpreter.cpp: Added. + (JSC::Yarr::Interpreter::appendParenthesesDisjunctionContext): + (JSC::Yarr::Interpreter::popParenthesesDisjunctionContext): + (JSC::Yarr::Interpreter::DisjunctionContext::DisjunctionContext): + (JSC::Yarr::Interpreter::DisjunctionContext::operator new): + (JSC::Yarr::Interpreter::allocDisjunctionContext): + (JSC::Yarr::Interpreter::freeDisjunctionContext): + (JSC::Yarr::Interpreter::ParenthesesDisjunctionContext::ParenthesesDisjunctionContext): + (JSC::Yarr::Interpreter::ParenthesesDisjunctionContext::operator new): + (JSC::Yarr::Interpreter::ParenthesesDisjunctionContext::restoreOutput): + (JSC::Yarr::Interpreter::ParenthesesDisjunctionContext::getDisjunctionContext): + (JSC::Yarr::Interpreter::allocParenthesesDisjunctionContext): + (JSC::Yarr::Interpreter::freeParenthesesDisjunctionContext): + (JSC::Yarr::Interpreter::InputStream::InputStream): + (JSC::Yarr::Interpreter::InputStream::next): + (JSC::Yarr::Interpreter::InputStream::rewind): + (JSC::Yarr::Interpreter::InputStream::read): + (JSC::Yarr::Interpreter::InputStream::readChecked): + (JSC::Yarr::Interpreter::InputStream::reread): + (JSC::Yarr::Interpreter::InputStream::prev): + (JSC::Yarr::Interpreter::InputStream::getPos): + (JSC::Yarr::Interpreter::InputStream::setPos): + (JSC::Yarr::Interpreter::InputStream::atStart): + (JSC::Yarr::Interpreter::InputStream::atEnd): + (JSC::Yarr::Interpreter::InputStream::checkInput): + (JSC::Yarr::Interpreter::InputStream::uncheckInput): + (JSC::Yarr::Interpreter::testCharacterClass): + (JSC::Yarr::Interpreter::tryConsumeCharacter): + (JSC::Yarr::Interpreter::checkCharacter): + (JSC::Yarr::Interpreter::tryConsumeCharacterClass): + (JSC::Yarr::Interpreter::checkCharacterClass): + (JSC::Yarr::Interpreter::tryConsumeBackReference): + (JSC::Yarr::Interpreter::matchAssertionBOL): + (JSC::Yarr::Interpreter::matchAssertionEOL): + (JSC::Yarr::Interpreter::matchAssertionWordBoundary): + (JSC::Yarr::Interpreter::matchPatternCharacter): + (JSC::Yarr::Interpreter::backtrackPatternCharacter): + (JSC::Yarr::Interpreter::matchCharacterClass): + (JSC::Yarr::Interpreter::backtrackCharacterClass): + (JSC::Yarr::Interpreter::matchBackReference): + (JSC::Yarr::Interpreter::backtrackBackReference): + (JSC::Yarr::Interpreter::recordParenthesesMatch): + (JSC::Yarr::Interpreter::resetMatches): + (JSC::Yarr::Interpreter::resetAssertionMatches): + (JSC::Yarr::Interpreter::parenthesesDoBacktrack): + (JSC::Yarr::Interpreter::matchParenthesesOnceBegin): + (JSC::Yarr::Interpreter::matchParenthesesOnceEnd): + (JSC::Yarr::Interpreter::backtrackParenthesesOnceBegin): + (JSC::Yarr::Interpreter::backtrackParenthesesOnceEnd): + (JSC::Yarr::Interpreter::matchParentheticalAssertionOnceBegin): + (JSC::Yarr::Interpreter::matchParentheticalAssertionOnceEnd): + (JSC::Yarr::Interpreter::backtrackParentheticalAssertionOnceBegin): + (JSC::Yarr::Interpreter::backtrackParentheticalAssertionOnceEnd): + (JSC::Yarr::Interpreter::matchParentheses): + (JSC::Yarr::Interpreter::backtrackParentheses): + (JSC::Yarr::Interpreter::matchTerm): + (JSC::Yarr::Interpreter::backtrackTerm): + (JSC::Yarr::Interpreter::matchAlternative): + (JSC::Yarr::Interpreter::matchDisjunction): + (JSC::Yarr::Interpreter::matchNonZeroDisjunction): + (JSC::Yarr::Interpreter::interpret): + (JSC::Yarr::Interpreter::Interpreter): + (JSC::Yarr::ByteCompiler::ParenthesesStackEntry::ParenthesesStackEntry): + (JSC::Yarr::ByteCompiler::ByteCompiler): + (JSC::Yarr::ByteCompiler::compile): + (JSC::Yarr::ByteCompiler::checkInput): + (JSC::Yarr::ByteCompiler::assertionBOL): + (JSC::Yarr::ByteCompiler::assertionEOL): + (JSC::Yarr::ByteCompiler::assertionWordBoundary): + (JSC::Yarr::ByteCompiler::atomPatternCharacter): + (JSC::Yarr::ByteCompiler::atomCharacterClass): + (JSC::Yarr::ByteCompiler::atomBackReference): + (JSC::Yarr::ByteCompiler::atomParenthesesSubpatternBegin): + (JSC::Yarr::ByteCompiler::atomParentheticalAssertionBegin): + (JSC::Yarr::ByteCompiler::popParenthesesStack): + (JSC::Yarr::ByteCompiler::dumpDisjunction): + (JSC::Yarr::ByteCompiler::closeAlternative): + (JSC::Yarr::ByteCompiler::atomParenthesesEnd): + (JSC::Yarr::ByteCompiler::regexBegin): + (JSC::Yarr::ByteCompiler::regexEnd): + (JSC::Yarr::ByteCompiler::alterantiveDisjunction): + (JSC::Yarr::ByteCompiler::emitDisjunction): + (JSC::Yarr::byteCompileRegex): + (JSC::Yarr::interpretRegex): + * yarr/RegexInterpreter.h: Added. + (JSC::Yarr::ByteTerm::): + (JSC::Yarr::ByteTerm::ByteTerm): + (JSC::Yarr::ByteTerm::BOL): + (JSC::Yarr::ByteTerm::CheckInput): + (JSC::Yarr::ByteTerm::EOL): + (JSC::Yarr::ByteTerm::WordBoundary): + (JSC::Yarr::ByteTerm::BackReference): + (JSC::Yarr::ByteTerm::AlternativeBegin): + (JSC::Yarr::ByteTerm::AlternativeDisjunction): + (JSC::Yarr::ByteTerm::AlternativeEnd): + (JSC::Yarr::ByteTerm::PatternEnd): + (JSC::Yarr::ByteTerm::invert): + (JSC::Yarr::ByteTerm::capture): + (JSC::Yarr::ByteDisjunction::ByteDisjunction): + (JSC::Yarr::BytecodePattern::BytecodePattern): + (JSC::Yarr::BytecodePattern::~BytecodePattern): + * yarr/RegexJIT.cpp: Added. + (JSC::Yarr::RegexGenerator::optimizeAlternative): + (JSC::Yarr::RegexGenerator::matchCharacterClassRange): + (JSC::Yarr::RegexGenerator::matchCharacterClass): + (JSC::Yarr::RegexGenerator::jumpIfNoAvailableInput): + (JSC::Yarr::RegexGenerator::jumpIfAvailableInput): + (JSC::Yarr::RegexGenerator::checkInput): + (JSC::Yarr::RegexGenerator::atEndOfInput): + (JSC::Yarr::RegexGenerator::notAtEndOfInput): + (JSC::Yarr::RegexGenerator::jumpIfCharEquals): + (JSC::Yarr::RegexGenerator::jumpIfCharNotEquals): + (JSC::Yarr::RegexGenerator::readCharacter): + (JSC::Yarr::RegexGenerator::storeToFrame): + (JSC::Yarr::RegexGenerator::loadFromFrame): + (JSC::Yarr::RegexGenerator::TermGenerationState::TermGenerationState): + (JSC::Yarr::RegexGenerator::TermGenerationState::resetAlternative): + (JSC::Yarr::RegexGenerator::TermGenerationState::alternativeValid): + (JSC::Yarr::RegexGenerator::TermGenerationState::nextAlternative): + (JSC::Yarr::RegexGenerator::TermGenerationState::alternative): + (JSC::Yarr::RegexGenerator::TermGenerationState::resetTerm): + (JSC::Yarr::RegexGenerator::TermGenerationState::termValid): + (JSC::Yarr::RegexGenerator::TermGenerationState::nextTerm): + (JSC::Yarr::RegexGenerator::TermGenerationState::term): + (JSC::Yarr::RegexGenerator::TermGenerationState::lookaheadTerm): + (JSC::Yarr::RegexGenerator::TermGenerationState::isSinglePatternCharacterLookaheadTerm): + (JSC::Yarr::RegexGenerator::TermGenerationState::inputOffset): + (JSC::Yarr::RegexGenerator::TermGenerationState::jumpToBacktrack): + (JSC::Yarr::RegexGenerator::TermGenerationState::setBacktrackGenerated): + (JSC::Yarr::RegexGenerator::jumpToBacktrackCheckEmitPending): + (JSC::Yarr::RegexGenerator::genertateAssertionBOL): + (JSC::Yarr::RegexGenerator::genertateAssertionEOL): + (JSC::Yarr::RegexGenerator::matchAssertionWordchar): + (JSC::Yarr::RegexGenerator::genertateAssertionWordBoundary): + (JSC::Yarr::RegexGenerator::genertatePatternCharacterSingle): + (JSC::Yarr::RegexGenerator::genertatePatternCharacterPair): + (JSC::Yarr::RegexGenerator::genertatePatternCharacterFixed): + (JSC::Yarr::RegexGenerator::genertatePatternCharacterGreedy): + (JSC::Yarr::RegexGenerator::genertatePatternCharacterNonGreedy): + (JSC::Yarr::RegexGenerator::genertateCharacterClassSingle): + (JSC::Yarr::RegexGenerator::genertateCharacterClassFixed): + (JSC::Yarr::RegexGenerator::genertateCharacterClassGreedy): + (JSC::Yarr::RegexGenerator::genertateCharacterClassNonGreedy): + (JSC::Yarr::RegexGenerator::generateParenthesesSingleDisjunctionOneAlternative): + (JSC::Yarr::RegexGenerator::generateParenthesesSingle): + (JSC::Yarr::RegexGenerator::generateTerm): + (JSC::Yarr::RegexGenerator::generateDisjunction): + (JSC::Yarr::RegexGenerator::RegexGenerator): + (JSC::Yarr::RegexGenerator::generate): + (JSC::Yarr::jitCompileRegex): + (JSC::Yarr::executeRegex): + * yarr/RegexJIT.h: Added. + (JSC::Yarr::RegexCodeBlock::RegexCodeBlock): + * yarr/RegexParser.h: Added. + (JSC::Yarr::): + (JSC::Yarr::Parser::): + (JSC::Yarr::Parser::CharacterClassParserDelegate::CharacterClassParserDelegate): + (JSC::Yarr::Parser::CharacterClassParserDelegate::begin): + (JSC::Yarr::Parser::CharacterClassParserDelegate::atomPatternCharacterUnescaped): + (JSC::Yarr::Parser::CharacterClassParserDelegate::atomPatternCharacter): + (JSC::Yarr::Parser::CharacterClassParserDelegate::atomBuiltInCharacterClass): + (JSC::Yarr::Parser::CharacterClassParserDelegate::end): + (JSC::Yarr::Parser::CharacterClassParserDelegate::assertionWordBoundary): + (JSC::Yarr::Parser::CharacterClassParserDelegate::atomBackReference): + (JSC::Yarr::Parser::CharacterClassParserDelegate::flush): + (JSC::Yarr::Parser::CharacterClassParserDelegate::): + (JSC::Yarr::Parser::Parser): + (JSC::Yarr::Parser::parseEscape): + (JSC::Yarr::Parser::parseAtomEscape): + (JSC::Yarr::Parser::parseCharacterClassEscape): + (JSC::Yarr::Parser::parseCharacterClass): + (JSC::Yarr::Parser::parseParenthesesBegin): + (JSC::Yarr::Parser::parseParenthesesEnd): + (JSC::Yarr::Parser::parseQuantifier): + (JSC::Yarr::Parser::parseTokens): + (JSC::Yarr::Parser::parse): + (JSC::Yarr::Parser::saveState): + (JSC::Yarr::Parser::restoreState): + (JSC::Yarr::Parser::atEndOfPattern): + (JSC::Yarr::Parser::peek): + (JSC::Yarr::Parser::peekIsDigit): + (JSC::Yarr::Parser::peekDigit): + (JSC::Yarr::Parser::consume): + (JSC::Yarr::Parser::consumeDigit): + (JSC::Yarr::Parser::consumeNumber): + (JSC::Yarr::Parser::consumeOctal): + (JSC::Yarr::Parser::tryConsume): + (JSC::Yarr::Parser::tryConsumeHex): + (JSC::Yarr::parse): + * yarr/RegexPattern.h: Added. + (JSC::Yarr::CharacterRange::CharacterRange): + (JSC::Yarr::): + (JSC::Yarr::PatternTerm::): + (JSC::Yarr::PatternTerm::PatternTerm): + (JSC::Yarr::PatternTerm::BOL): + (JSC::Yarr::PatternTerm::EOL): + (JSC::Yarr::PatternTerm::WordBoundary): + (JSC::Yarr::PatternTerm::invert): + (JSC::Yarr::PatternTerm::capture): + (JSC::Yarr::PatternTerm::quantify): + (JSC::Yarr::PatternAlternative::PatternAlternative): + (JSC::Yarr::PatternAlternative::lastTerm): + (JSC::Yarr::PatternAlternative::removeLastTerm): + (JSC::Yarr::PatternDisjunction::PatternDisjunction): + (JSC::Yarr::PatternDisjunction::~PatternDisjunction): + (JSC::Yarr::PatternDisjunction::addNewAlternative): + (JSC::Yarr::RegexPattern::RegexPattern): + (JSC::Yarr::RegexPattern::~RegexPattern): + (JSC::Yarr::RegexPattern::reset): + (JSC::Yarr::RegexPattern::containsIllegalBackReference): + (JSC::Yarr::RegexPattern::newlineCharacterClass): + (JSC::Yarr::RegexPattern::digitsCharacterClass): + (JSC::Yarr::RegexPattern::spacesCharacterClass): + (JSC::Yarr::RegexPattern::wordcharCharacterClass): + (JSC::Yarr::RegexPattern::nondigitsCharacterClass): + (JSC::Yarr::RegexPattern::nonspacesCharacterClass): + (JSC::Yarr::RegexPattern::nonwordcharCharacterClass): + +2009-04-13 Oliver Hunt + + Reviewed by NOBODY (Missed code from last patch). + + * runtime/InternalFunction.cpp: + (JSC::InternalFunction::displayName): + (JSC::InternalFunction::calculatedDisplayName): + * runtime/InternalFunction.h: + +2009-04-13 Francisco Tolmasky + + Reviewed by Oliver Hunt. + + BUG 25171: It should be possible to manually set the name of an anonymous function + + + This change adds the displayName property to functions, which when set overrides the + normal name when appearing in the console. + + * profiler/Profiler.cpp: + (JSC::createCallIdentifierFromFunctionImp): Changed call to InternalFunction::name to InternalFunction::calculatedDisplayName + * runtime/CommonIdentifiers.h: Added displayName common identifier. + * runtime/InternalFunction.cpp: + (JSC::InternalFunction::displayName): Access to user settable displayName property + (JSC::InternalFunction::calculatedDisplayName): Returns displayName if it exists, if not then the natural name + +2009-04-13 Geoffrey Garen + + Reviewed by Sam Weinig. + + Disabled another JavaScriptCore test because it fails on Windows but + not Mac, so it makes the bots red. + + * tests/mozilla/expected.html: + +2009-04-13 Geoffrey Garen + + Reviewed by Sam Weinig. + + Disabled two JavaScriptCore tests because they fail on Window or Mac but + not both, so they make the bots red. + + * tests/mozilla/expected.html: Updated expected results. + +2009-04-09 Ben Murdoch + + Reviewed by Alexey Proskuryakov. + + https://bugs.webkit.org/show_bug.cgi?id=25091 + The Android platform requires threads to be registered with the VM. + This patch implements this behaviour inside ThreadingPthreads.cpp. + + * wtf/ThreadingPthreads.cpp: Add a level above threadEntryPoint that takes care of (un)registering threads with the VM. + (WTF::runThreadWithRegistration): register the thread and run entryPoint. Unregister the thread afterwards. + (WTF::createThreadInternal): call runThreadWithRegistration instead of entryPoint directly. + +2009-04-09 David Kilzer + + Reinstating Option to turn off SVG DOM Objective-C bindings + + Rolled r42345 back in. The build failure was caused by an + internal script which had not been updated the same way that + build-webkit was updated. + + * Configurations/JavaScriptCore.xcconfig: + +2009-04-09 Alexey Proskuryakov + + Reverting Option to turn off SVG DOM Objective-C bindings. + It broke Mac build, and I don't know how to fix it. + + * Configurations/JavaScriptCore.xcconfig: + +2009-04-09 Xan Lopez + + Unreviewed build fix. + + Checking for __GLIBCXX__ being bigger than some date is not enough + to get std::tr1, C++0x has to be in use too. Add another check for + __GXX_EXPERIMENTAL_CXX0X__. + + * wtf/TypeTraits.h: + +2009-04-08 Oliver Hunt + + Reviewed by Adam Roben. + + Fix assertion failure in function.apply + + The result of excess arguments to function.apply is irrelevant + so we don't need to provide a result register. We were providing + temporary result register but not ref'ing it resulting in an + assertion failure. + + * parser/Nodes.cpp: + (JSC::ApplyFunctionCallDotNode::emitBytecode): + +2009-04-08 David Kilzer + + Option to turn off SVG DOM Objective-C bindings + + Reviewed by Darin Adler and Maciej Stachowiak. + + Introduce the ENABLE_SVG_DOM_OBJC_BINDINGS feature define so + that SVG DOM Objective-C bindings may be optionally disabled. + + * Configurations/JavaScriptCore.xcconfig: Added + ENABLE_SVG_DOM_OBJC_BINDINGS variable and use it in + FEATURE_DEFINES. + +2009-04-08 Paul Pedriana + + Reviewed by Darin Adler. + + https://bugs.webkit.org/show_bug.cgi?id=20422 + Allow custom memory allocation control. + + * wtf/FastAllocBase.h: + New added file. Implements allocation base class. + * wtf/TypeTraits.h: + Augments existing type traits support as needed by FastAllocBase. + * wtf/FastMalloc.h: + Changed to support FastMalloc match validation. + * wtf/FastMalloc.cpp: + Changed to support FastMalloc match validation. + * wtf/Platform.h: + Added ENABLE_FAST_MALLOC_MATCH_VALIDATION; defaults to 0. + * GNUmakefile.am: + Updated to include added FastAllocBase.h. + * JavaScriptCore.xcodeproj/project.pbxproj: + Updated to include added FastAllocBase.h. + * JavaScriptCore.vcproj/WTF/WTF.vcproj: + Updated to include added FastAllocBase.h. + +2009-04-07 Oliver Hunt + + Reviewed by Geoff Garen. + + Improve function.apply performance + + Jump through a few hoops to improve performance of function.apply in the general case. + + In the case of zero or one arguments, or if there are only two arguments and the + second is an array literal we treat function.apply as function.call. + + Otherwise we use the new opcodes op_load_varargs and op_call_varargs to do the .apply call + without re-entering the virtual machine. + + * bytecode/CodeBlock.cpp: + (JSC::CodeBlock::dump): + * bytecode/Opcode.h: + * bytecompiler/BytecodeGenerator.cpp: + (JSC::BytecodeGenerator::emitJumpIfNotFunctionApply): + (JSC::BytecodeGenerator::emitLoadVarargs): + (JSC::BytecodeGenerator::emitCallVarargs): + * bytecompiler/BytecodeGenerator.h: + * interpreter/Interpreter.cpp: + (JSC::Interpreter::privateExecute): + * jit/JIT.cpp: + (JSC::JIT::privateCompileMainPass): + (JSC::JIT::privateCompileSlowCases): + * jit/JIT.h: + * jit/JITCall.cpp: + (JSC::JIT::compileOpCallSetupArgs): + (JSC::JIT::compileOpCallVarargsSetupArgs): + (JSC::JIT::compileOpCallVarargs): + (JSC::JIT::compileOpCallVarargsSlowCase): + * jit/JITStubs.cpp: + (JSC::JITStubs::cti_op_load_varargs): + * jit/JITStubs.h: + * parser/Grammar.y: + * parser/Nodes.cpp: + (JSC::ArrayNode::isSimpleArray): + (JSC::ArrayNode::toArgumentList): + (JSC::CallFunctionCallDotNode::emitBytecode): + (JSC::ApplyFunctionCallDotNode::emitBytecode): + * parser/Nodes.h: + (JSC::ExpressionNode::): + (JSC::ApplyFunctionCallDotNode::): + * runtime/Arguments.cpp: + (JSC::Arguments::copyToRegisters): + (JSC::Arguments::fillArgList): + * runtime/Arguments.h: + (JSC::Arguments::numProvidedArguments): + * runtime/FunctionPrototype.cpp: + (JSC::FunctionPrototype::addFunctionProperties): + * runtime/FunctionPrototype.h: + * runtime/JSArray.cpp: + (JSC::JSArray::copyToRegisters): + * runtime/JSArray.h: + * runtime/JSGlobalObject.cpp: + (JSC::JSGlobalObject::reset): + (JSC::JSGlobalObject::mark): + * runtime/JSGlobalObject.h: + +2009-04-08 Alexey Proskuryakov + + Reviewed by Darin Adler. + + https://bugs.webkit.org/show_bug.cgi?id=25073 + JavaScriptCore tests don't run if time zone is not PST + + * API/tests/testapi.c: + (timeZoneIsPST): Added a function that checks whether the time zone is PST, using the same + method as functions in DateMath.cpp do for formatting the result. + (main): Skip date string format test if the time zone is not PST. + +2009-04-07 David Levin + + Reviewed by Sam Weinig and Geoff Garen. + + https://bugs.webkit.org/show_bug.cgi?id=25039 + UString refactoring to support UChar* sharing. + + No change in sunspider perf. + + * runtime/SmallStrings.cpp: + (JSC::SmallStringsStorage::SmallStringsStorage): + * runtime/UString.cpp: + (JSC::initializeStaticBaseString): + (JSC::initializeUString): + (JSC::UString::BaseString::isShared): + Encapsulate the meaning behind the refcount == 1 checks because + this needs to do slightly more when sharing is added. + (JSC::concatenate): + (JSC::UString::append): + (JSC::UString::operator=): + * runtime/UString.h: + Make m_baseString part of a union to get rid of casts, but make it protected because + it is tricky to use it correctly since it is only valid when the Rep is not a BaseString. + The void* will be filled in when sharing is added. + + Add constructors due to the making members protected and it make ensuring proper + initialization work better (like in SmallStringsStorage). + (JSC::UString::Rep::create): + (JSC::UString::Rep::Rep): + (JSC::UString::Rep::): + (JSC::UString::BaseString::BaseString): + (JSC::UString::Rep::setBaseString): + (JSC::UString::Rep::baseString): + +2009-04-04 Xan Lopez + + Reviewed by Alexey Proskuryakov. + + https://bugs.webkit.org/show_bug.cgi?id=25033 + dtoa.cpp segfaults with g++ 4.4.0 + + g++ 4.4.0 seems to be more strict about aliasing rules, so it + produces incorrect code if dtoa.cpp is compiled with + -fstrict-aliasing (it also emits a ton of warnings, so fair enough + I guess). The problem was that we were only casting variables to + union types in order to do type punning, but GCC and the C + standard require that we actually use a union to store the value. + + This patch does just that, the code is mostly copied from the dtoa + version in GCC: + http://gcc.gnu.org/viewcvs/trunk/libjava/classpath/native/fdlibm/dtoa.c?view=markup. + + * wtf/dtoa.cpp: + (WTF::ulp): + (WTF::b2d): + (WTF::ratio): + (WTF::hexnan): + (WTF::strtod): + (WTF::dtoa): + +2009-04-04 Kevin Ollivier + + wx build fix for Win port. Build the assembler sources to get missing functions. + + * JavaScriptCoreSources.bkl: + * jscore.bkl: + * wtf/Platform.h: + +2009-04-02 Darin Adler + + Reviewed by Kevin Decker. + + crash in GC due to uninitialized callFunction pointer + + * runtime/JSGlobalObject.h: + (JSC::JSGlobalObject::JSGlobalObjectData::JSGlobalObjectData): Initialize + callFunction as we do the other data members that are used in the mark function. + +2009-04-02 Yael Aharon + + Reviewed by Simon Hausmann + + https://bugs.webkit.org/show_bug.cgi?id=24490 + + Implement WTF::ThreadSpecific in the Qt build using + QThreadStorage. + + * wtf/ThreadSpecific.h: + +2009-04-01 Greg Bolsinga + + Reviewed by Mark Rowe. + + https://bugs.webkit.org/show_bug.cgi?id=24990 + Put SECTORDER_FLAGS into xcconfig files. + + * Configurations/Base.xcconfig: + * Configurations/DebugRelease.xcconfig: + * JavaScriptCore.xcodeproj/project.pbxproj: + +2009-03-27 Oliver Hunt + + Reviewed by NOBODY (Build fix). + + Fix non-AllInOneFile builds. + + * bytecompiler/BytecodeGenerator.cpp: + +2009-03-27 Oliver Hunt + + Reviewed by Gavin Barraclough. + + Improve performance of Function.prototype.call + + + Optimistically assume that expression.call(..) is going to be a call to + Function.prototype.call, and handle it specially to attempt to reduce the + degree of VM reentrancy. + + When everything goes right this removes the vm reentry improving .call() + by around a factor of 10. + + * JavaScriptCore.xcodeproj/project.pbxproj: + * bytecode/CodeBlock.cpp: + (JSC::CodeBlock::dump): + * bytecode/Opcode.h: + * bytecompiler/BytecodeGenerator.cpp: + (JSC::BytecodeGenerator::emitJumpIfNotFunctionCall): + * bytecompiler/BytecodeGenerator.h: + * interpreter/Interpreter.cpp: + (JSC::Interpreter::privateExecute): + * jit/JIT.cpp: + (JSC::JIT::privateCompileMainPass): + * parser/Grammar.y: + * parser/Nodes.cpp: + (JSC::CallFunctionCallDotNode::emitBytecode): + * parser/Nodes.h: + (JSC::CallFunctionCallDotNode::): + * runtime/FunctionPrototype.cpp: + (JSC::FunctionPrototype::addFunctionProperties): + * runtime/FunctionPrototype.h: + * runtime/JSGlobalObject.cpp: + (JSC::JSGlobalObject::reset): + (JSC::JSGlobalObject::mark): + * runtime/JSGlobalObject.h: + +2009-03-27 Laszlo Gombos + + Reviewed by Darin Adler. + + Bug 24884: Include strings.h for strcasecmp() + https://bugs.webkit.org/show_bug.cgi?id=24884 + + * runtime/DateMath.cpp: Reversed previous change including strings.h + * wtf/StringExtras.h: Include strings.h here is available + +2009-03-26 Adam Roben + + Copy testapi.js to $WebKitOutputDir on Windows + + Part of Bug 24856: run-javascriptcore-tests should run testapi on + Windows + + + This matches what Mac does, which will help once we enable running + testapi from run-javascriptcore-tests on Windows. + + Reviewed by Steve Falkenburg. + + * JavaScriptCore.vcproj/testapi/testapi.vcproj: Copy testapi.js next + to testapi.exe. + +2009-03-25 Oliver Hunt + + Reviewed by Geoff Garen. + + Fix exception handling for instanceof in the interpreter. + + * interpreter/Interpreter.cpp: + (JSC::Interpreter::privateExecute): + +2009-03-25 Geoffrey Garen + + Reviewed by Cameron Zwarich. + + Fixed Write to freed memory in JSC::Label::deref + when reloading http://helpme.att.net/speedtest/ + + * bytecompiler/BytecodeGenerator.h: Reversed the declaration order for + m_labelScopes and m_labels to reverse their destruction order. + m_labelScopes has references to memory within m_labels, so its destructor + needs to run first. + +2009-03-24 Eli Fidler + + Reviewed by George Staikos. + + Correct warnings which in some environments are treated as errors. + + * wtf/dtoa.cpp: + (WTF::b2d): + (WTF::d2b): + (WTF::strtod): + (WTF::dtoa): + +2009-03-24 Kevin Ollivier + + Reviewed by Darin Adler. + + Explicitly define HAVE_LANGINFO_H on Darwin. Fixes the wx build bot jscore + test failure. + + https://bugs.webkit.org/show_bug.cgi?id=24780 + + * wtf/Platform.h: + +2009-03-23 Oliver Hunt + + Reviewed by Cameron Zwarich. + + Fix className() for API defined class + + * API/JSCallbackObjectFunctions.h: + (JSC::::className): + * API/tests/testapi.c: + (EmptyObject_class): + (main): + * API/tests/testapi.js: + +2009-03-23 Oliver Hunt + + Reviewed by Geoff Garen. + + Make testapi assertions run in release builds, so that testapi actually + works in a release build. + + Many of the testapi assertions have side effects that are necessary, and + given testapi is a testing program, perf impact of an assertion is not + important, so it makes sense to apply the assertions in release builds + anyway. + + * API/tests/testapi.c: + (EvilExceptionObject_hasInstance): + +2009-03-23 David Kilzer + + Provide JavaScript exception information after slow script timeout + + Reviewed by Oliver Hunt. + + * runtime/Completion.cpp: + (JSC::evaluate): Set the exception object as the Completion + object's value for slow script timeouts. This is used in + WebCore when reporting the exception. + * runtime/ExceptionHelpers.cpp: + (JSC::InterruptedExecutionError::toString): Added. Provides a + description message for the exception when it is reported. + +2009-03-23 Gustavo Noronha Silva and Thadeu Lima de Souza Cascardo + + Reviewed by Adam Roben. + + https://bugs.webkit.org/show_bug.cgi?id=24674 + Crashes in !PLATFORM(MAC)'s formatLocaleDate, in very specific situations + + Make sure strftime never returns 2-digits years to avoid ambiguity + and a crash. We wrap this new code option in HAVE_LANGINFO_H, + since it is apparently not available in all platforms. + + * runtime/DatePrototype.cpp: + (JSC::formatLocaleDate): + * wtf/Platform.h: + +2009-03-22 Oliver Hunt + + Reviewed by Cameron Zwarich. + + Fix exception handling in API + + We can't just use the ExecState exception slot for returning exceptions + from class introspection functions provided through the API as many JSC + functions will explicitly clear the ExecState exception when returning. + + * API/JSCallbackObjectFunctions.h: + (JSC::JSCallbackObject::getOwnPropertySlot): + (JSC::JSCallbackObject::put): + (JSC::JSCallbackObject::deleteProperty): + (JSC::JSCallbackObject::construct): + (JSC::JSCallbackObject::hasInstance): + (JSC::JSCallbackObject::call): + (JSC::JSCallbackObject::toNumber): + (JSC::JSCallbackObject::toString): + (JSC::JSCallbackObject::staticValueGetter): + (JSC::JSCallbackObject::callbackGetter): + * API/tests/testapi.c: + (MyObject_hasProperty): + (MyObject_getProperty): + (MyObject_setProperty): + (MyObject_deleteProperty): + (MyObject_callAsFunction): + (MyObject_callAsConstructor): + (MyObject_hasInstance): + (EvilExceptionObject_hasInstance): + (EvilExceptionObject_convertToType): + (EvilExceptionObject_class): + (main): + * API/tests/testapi.js: + (EvilExceptionObject.hasInstance): + (EvilExceptionObject.toNumber): + (EvilExceptionObject.toStringExplicit): + +2009-03-21 Cameron Zwarich + + Reviewed by Oliver Hunt. + + Bug 20049: testapi failure: MyObject - 0 should be NaN but instead is 1. + + + + In this case, the test is wrong. According to the ECMA spec, subtraction + uses ToNumber, not ToPrimitive. Change the test to match the spec. + + * API/tests/testapi.js: + +2009-03-21 Oliver Hunt + + Reviewed by Cameron Zwarich. + + Ensure that JSObjectMakeFunction doesn't produce incorrect line numbers. + + Also make test api correctly propagate failures. + + * API/tests/testapi.c: + (main): + * runtime/FunctionConstructor.cpp: + (JSC::constructFunction): + +2009-03-21 Oliver Hunt + + Reviewed by Mark Rowe. + + Improve testapi by making it report failures in a way we can pick up + from our test scripts. + + * API/tests/testapi.c: + (assertEqualsAsBoolean): + (assertEqualsAsNumber): + (assertEqualsAsUTF8String): + (assertEqualsAsCharactersPtr): + (main): + * API/tests/testapi.js: + (pass): + (fail): + (shouldBe): + (shouldThrow): + +2009-03-20 Norbert Leser + + Reviewed by Darin Adler. + + https://bugs.webkit.org/show_bug.cgi?id=24535 + + Fixes missing line terminator character (;) after macro call. + It is common practice to add the trailing ";" where macros are substituted + and not where they are defined with #define. + This change is consistent with other macro declarations across webkit, + and it also solves compilation failure with symbian compilers. + + * runtime/UString.cpp: + * wtf/Assertions.h: + +2009-03-20 Geoffrey Garen + + Reviewed by Darin Adler. + + Fixed a JavaScriptCore crash on the Windows buildbot. + + * bytecompiler/BytecodeGenerator.h: Reduced the AST recursion limit. + Apparently, Windows has small stacks. + +2009-03-20 Geoffrey Garen + + Reviewed by Oliver Hunt. + + A little cleanup in the RegisterFile code. + + Moved large inline functions out of the class declaration, to make it + more readable. + + Switched over to using the roundUpAllocationSize function to avoid + duplicate code and subtle bugs. + + Renamed m_maxCommitted to m_commitEnd, to match m_end. + + Renamed allocationSize to commitSize because it's the chunk size for + committing memory, not allocating memory. + + SunSpider reports no change. + + * interpreter/RegisterFile.h: + (JSC::RegisterFile::RegisterFile): + (JSC::RegisterFile::shrink): + (JSC::RegisterFile::grow): + * jit/ExecutableAllocator.h: + (JSC::roundUpAllocationSize): + +2009-03-19 Geoffrey Garen + + Reviewed by Oliver Hunt. + + Fixed -- a little bit of hardening in the Collector. + + SunSpider reports no change. I also verified in the disassembly that + we end up with a single compare to constant. + + * runtime/Collector.cpp: + (JSC::Heap::heapAllocate): + +2009-03-19 Geoffrey Garen + + Reviewed by Cameron Zwarich and Oliver Hunt. + + Fixed REGRESSION: Stack overflow on PowerPC on + fast/workers/use-machine-stack.html (22531) + + Dialed down the re-entry allowance to 64 (from 128). + + On a 512K stack, this leaves about 64K for other code on the stack while + JavaScript is running. Not perfect, but it solves our crash on PPC. + + Different platforms may want to dial this down even more. + + Also, substantially shrunk BytecodeGenerator. Since we allocate one on + the stack in order to throw a stack overflow exception -- well, let's + just say the old code had an appreciation for irony. + + SunSpider reports no change. + + * bytecompiler/BytecodeGenerator.h: + * interpreter/Interpreter.h: + (JSC::): + +2009-03-19 Cameron Zwarich + + Reviewed by Oliver Hunt. + + Bug 24350: REGRESSION: Safari 4 breaks SPAW wysiwyg editor multiple instances + + + + The SPAW editor's JavaScript assumes that toString() on a function + constructed with the Function constructor produces a function with + a newline after the opening brace. + + * runtime/FunctionConstructor.cpp: + (JSC::constructFunction): Add a newline after the opening brace of the + function's source code. + +2009-03-19 Cameron Zwarich + + Reviewed by Geoff Garen. + + Bug 23771: REGRESSION (r36016): JSObjectHasProperty freezes on global class without kJSClassAttributeNoAutomaticPrototype + + + + * API/tests/testapi.c: + (main): Add a test for this bug. + * runtime/JSGlobalObject.cpp: + (JSC::JSGlobalObject::resetPrototype): Don't set the prototype of the + last object in the prototype chain to the object prototype when the + object prototype is already the last object in the prototype chain. + +2009-03-19 Timothy Hatcher + + -[WebView scheduleInRunLoop:forMode:] has no affect on timers + + Reviewed by Darin Adler. + + * wtf/Platform.h: Added HAVE_RUNLOOP_TIMER for PLATFORM(MAC). + +2009-03-19 Geoffrey Garen + + Reviewed by Oliver Hunt. + + Fixed Regular expression run-time complexity + limit too low for long inputs (21485) + + I raised PCRE's "matchLimit" (limit on backtracking) by an order of + magnitude. This fixes all the reported examples of timing out on legitimate + regular expression matches. + + In my testing on a Core Duo MacBook Pro, the longest you can get stuck + trying to match a string is still under 1s, so this seems like a safe change. + + I can think of a number of better solutions that are more complicated, + but this is a good improvement for now. + + * pcre/pcre_exec.cpp: + +2009-03-19 Geoffrey Garen + + Reviewed by Sam Weinig. + + Fixed REGRESSION (Safari 4): regular expression + pattern size limit lower than Safari 3.2, other browsers, breaks SAP (14873) + + Bumped the pattern size limit to 1MB, and standardized it between PCRE + and WREC. (Empirical testing says that we can easily compile a 1MB regular + expression without risking a hang. Other browsers support bigger regular + expressions, but also hang.) + + SunSpider reports no change. + + I started with a patch posted to Bugzilla by Erik Corry (erikcorry@google.com). + + * pcre/pcre_internal.h: + (put3ByteValue): + (get3ByteValue): + (put3ByteValueAndAdvance): + (putLinkValueAllowZero): + (getLinkValueAllowZero): Made PCRE's "LINK_SIZE" (the number of bytes + used to record jumps between bytecodes) 3, to accomodate larger potential + jumps. Bumped PCRE's "MAX_PATTERN_SIZE" to 1MB. (Technically, at this + LINK_SIZE, we can support even larger patterns, but we risk a hang during + compilation, and it's not clear that such large patterns are important + on the web.) + + * wrec/WREC.cpp: + (JSC::WREC::Generator::compileRegExp): Match PCRE's maximum pattern size, + to avoid quirks between platforms. + +2009-03-18 Ada Chan + + Rolling out r41818 since it broke the windows build. + Error: ..\..\runtime\DatePrototype.cpp(30) : fatal error C1083: Cannot open include file: 'langinfo.h': No such file or directory + + * runtime/DatePrototype.cpp: + (JSC::formatLocaleDate): + +2009-03-17 Oliver Hunt + + Reviewed by Cameron Zwarich. + + REGRESSION (Safari 4): Incorrect function return value when using IE "try ... finally" memory leak work-around (24654) + + + If the return value for a function is in a local register we need + to copy it before executing any finalisers, otherwise it is possible + for the finaliser to clobber the result. + + * bytecompiler/BytecodeGenerator.h: + (JSC::BytecodeGenerator::hasFinaliser): + * parser/Nodes.cpp: + (JSC::ReturnNode::emitBytecode): + +2009-03-17 Kevin Ollivier + + Reviewed by Mark Rowe. + + Move BUILDING_ON_* defines into Platform.h to make them available to other ports. + Also tweak the defines so that they work with the default values set by + AvailabilityMacros.h. + + https://bugs.webkit.org/show_bug.cgi?id=24630 + + * JavaScriptCorePrefix.h: + * wtf/Platform.h: + +2009-03-15 Simon Fraser + + Revert r41718 because it broke DumpRenderTree on Tiger. + + * JavaScriptCorePrefix.h: + * wtf/Platform.h: + +2009-03-15 Kevin Ollivier + + Non-Apple Mac ports build fix. Move defines for the BUILDING_ON_ macros into + Platform.h so that they're defined for all ports building on Mac, and tweak + the definitions of those macros based on Mark Rowe's suggestions to accomodate + cases where the values may not be <= to the .0 release for that version. + + * JavaScriptCorePrefix.h: + * wtf/Platform.h: + +2009-03-13 Mark Rowe + + Rubber-stamped by Dan Bernstein. + + Take advantage of the ability of recent versions of Xcode to easily switch the active + architecture. + + * Configurations/DebugRelease.xcconfig: + +2009-03-13 Mark Rowe + + Reviewed by David Kilzer. + + Prevent AllInOneFile.cpp and ProfileGenerator.cpp from rebuilding unnecessarily when + switching between building in Xcode and via build-webkit. + + build-webkit passes FEATURE_DEFINES to xcodebuild, resulting in it being present in the + Derived Sources build settings. When building in Xcode, this setting isn't present so + Xcode reruns the script build phases. This results in a new version of TracingDtrace.h + being generated, and the files that include it being rebuilt. + + * JavaScriptCore.xcodeproj/project.pbxproj: Don't regenerate TracingDtrace.h if it is + already newer than the input file. + +2009-03-13 Norbert Leser + + Reviewed by Darin Adler. + + Resolved name conflict with globally defined tzname in Symbian. + Replaced with different name instead of using namespace qualifier + (appeared to be less clumsy). + + * runtime/DateMath.cpp: + +2009-03-12 Mark Rowe + + Reviewed by Darin Adler. + + TCMalloc_SystemRelease should use madvise rather than re-mmaping span of pages + + * wtf/FastMalloc.cpp: + (WTF::mergeDecommittedStates): If either of the spans has been released to the system, release the other + span as well so that the flag in the merged span is accurate. + * wtf/Platform.h: + * wtf/TCSystemAlloc.cpp: Track decommitted spans when using MADV_FREE_REUSABLE / MADV_FREE_REUSE. + (TCMalloc_SystemRelease): Use madvise with MADV_FREE_REUSABLE when it is available. + (TCMalloc_SystemCommit): Use madvise with MADV_FREE_REUSE when it is available. + * wtf/TCSystemAlloc.h: + +2009-03-12 Adam Treat + + Reviewed by NOBODY (Build fix). + + Include string.h for strlen usage. + + * wtf/Threading.cpp: + +2009-03-12 David Kilzer + + Add NO_RETURN attribute to runInteractive() when not using readline + + Reviewed by Darin Adler. + + * jsc.cpp: + (runInteractive): If the readline library is not used, this method + will never return, thus the NO_RETURN attribute is needed to prevent + a gcc warning. + +2009-03-12 Adam Roben + + Adopt setThreadNameInternal on Windows + + Also changed a Windows-only assertion about thread name length to an + all-platform log message. + + Reviewed by Adam Treat. + + * wtf/Threading.cpp: + (WTF::createThread): Warn if the thread name is longer than 31 + characters, as Visual Studio will truncate names longer than that + length. + + * wtf/ThreadingWin.cpp: + (WTF::setThreadNameInternal): Renamed from setThreadName and changed + to always operate on the current thread. + (WTF::initializeThreading): Changed to use setThreadNameInternal. + (WTF::createThreadInternal): Removed call to setThreadName. This is + now handled by threadEntryPoint and setThreadNameInternal. + +2009-03-11 David Kilzer + + Clarify comments regarding order of FEATURE_DEFINES + + Rubber-stamped by Mark Rowe. + + * Configurations/JavaScriptCore.xcconfig: Added warning about + the consequences when FEATURE_DEFINES are not kept in sync. + +2009-03-11 Dan Bernstein + + Reviewed by Darin Adler. + + - WTF support for fixing Thai text selection + in Safari is incorrect + + * wtf/unicode/icu/UnicodeIcu.h: + (WTF::Unicode::hasLineBreakingPropertyComplexContext): Added. Returns + whether the character has Unicode line breaking property value SA + ("Complex Context"). + * wtf/unicode/qt4/UnicodeQt4.h: + (WTF::Unicode::hasLineBreakingPropertyComplexContext): Added an + implementation that always returns false. + +2009-03-11 Darin Adler + + Reviewed by Mark Rowe. + + Give threads names on platforms with pthread_setname_np. + + * wtf/Threading.cpp: + (WTF::NewThreadContext::NewThreadContext): Initialize thread name. + (WTF::threadEntryPoint): Call setThreadNameInternal. + (WTF::createThread): Pass thread name. + + * wtf/Threading.h: Added new comments, setThreadNameInternal. + + * wtf/ThreadingGtk.cpp: + (WTF::setThreadNameInternal): Added. Empty. + * wtf/ThreadingNone.cpp: + (WTF::setThreadNameInternal): Added. Empty. + * wtf/ThreadingPthreads.cpp: + (WTF::setThreadNameInternal): Call pthread_setname_np when available. + * wtf/ThreadingQt.cpp: + (WTF::setThreadNameInternal): Added. Empty. + * wtf/ThreadingWin.cpp: + (WTF::setThreadNameInternal): Added. Empty. + +2009-03-11 Adam Roben + + Change the Windows implementation of ThreadSpecific to use functions + instead of extern globals + + This will make it easier to export ThreadSpecific from WebKit. + + Reviewed by John Sullivan. + + * API/JSBase.cpp: + (JSEvaluateScript): + Touched this file to force ThreadSpecific.h to be copied into + $WebKitOutputDir. + + * wtf/ThreadSpecific.h: Replaced g_tls_key_count with tlsKeyCount() + and g_tls_keys with tlsKeys(). + + (WTF::::ThreadSpecific): + (WTF::::~ThreadSpecific): + (WTF::::get): + (WTF::::set): + (WTF::::destroy): + Updated to use the new functions. + + * wtf/ThreadSpecificWin.cpp: + (WTF::tlsKeyCount): + (WTF::tlsKeys): + Added. + + (WTF::ThreadSpecificThreadExit): Changed to use the new functions. + +2009-03-10 Cameron Zwarich + + Reviewed by Geoff Garen. + + Bug 24291: REGRESSION (r38635): Single line JavaScript comment prevents HTML button click handler execution + + + + Add an extra newline to the end of the body of the program text constructed + by the Function constructor for parsing. This allows single line comments to + be handled correctly by the parser. + + * runtime/FunctionConstructor.cpp: + (JSC::constructFunction): + +2009-03-09 Oliver Hunt + + Reviewed by Gavin Barraclough. + + Bug 24447: REGRESSION (r41508): Google Maps does not complete initialization + + + r41508 actually exposed a pre-existing bug where we were not invalidating the result + register cache at jump targets. This causes problems when condition loads occur in an + expression -- namely through the ?: and || operators. This patch corrects these issues + by marking the target of all forward jumps as being a jump target, and then clears the + result register cache when ever it starts generating code for a targeted instruction. + + I do not believe it is possible to cause this class of failure outside of a single + expression, and expressions only provide forward branches, so this should resolve this + entire class of bug. That said i've included a test case that gets as close as possible + to hitting this bug with a back branch, to hopefully prevent anyone from introducing the + problem in future. + + * assembler/AbstractMacroAssembler.h: + (JSC::AbstractMacroAssembler::Label::isUsed): + (JSC::AbstractMacroAssembler::Label::used): + * assembler/X86Assembler.h: + (JSC::X86Assembler::JmpDst::JmpDst): + (JSC::X86Assembler::JmpDst::isUsed): + (JSC::X86Assembler::JmpDst::used): + * jit/JIT.cpp: + (JSC::JIT::privateCompileMainPass): + +2009-03-09 David Levin + + Reviewed by Darin Adler. + + Bug 23175: String and UString should be able to share a UChar* buffer. + + + Add CrossThreadRefCounted. + + * wtf/CrossThreadRefCounted.h: Added. + (WTF::CrossThreadRefCounted::create): + (WTF::CrossThreadRefCounted::isShared): + (WTF::CrossThreadRefCounted::dataAccessMustBeThreadSafe): + (WTF::CrossThreadRefCounted::mayBePassedToAnotherThread): + (WTF::CrossThreadRefCounted::CrossThreadRefCounted): + (WTF::CrossThreadRefCounted::~CrossThreadRefCounted): + (WTF::CrossThreadRefCounted::ref): + (WTF::CrossThreadRefCounted::deref): + (WTF::CrossThreadRefCounted::release): + (WTF::CrossThreadRefCounted::copy): + (WTF::CrossThreadRefCounted::threadSafeDeref): + * wtf/RefCounted.h: + * wtf/Threading.h: + (WTF::ThreadSafeSharedBase::ThreadSafeSharedBase): + (WTF::ThreadSafeSharedBase::derefBase): + (WTF::ThreadSafeShared::ThreadSafeShared): + (WTF::ThreadSafeShared::deref): + +2009-03-09 Laszlo Gombos + + Reviewed by George Staikos. + + https://bugs.webkit.org/show_bug.cgi?id=24353 + Allow to overrule default build options for Qt build. + + * JavaScriptCore.pri: Allow to overrule ENABLE_JIT + +2009-03-08 Oliver Hunt + + Reviewed by NOBODY (build fix). + + Build fix. + + * runtime/ArrayPrototype.cpp: + (JSC::arrayProtoFuncConcat): + +2009-03-01 Oliver Hunt + + Reviewed by Cameron Zwarich. + + Bug 24268: RuntimeArray is not a fully implemented JSArray + + + Don't cast a type to JSArray, just because it reportsArray as a supertype + in the JS type system. Doesn't appear feasible to create a testcase + unfortunately as setting up the failure conditions requires internal access + to JSC not present in DRT. + + * runtime/ArrayPrototype.cpp: + (JSC::arrayProtoFuncConcat): + +2009-03-06 Gavin Barraclough + + Reviewed by Oliver Hunt. + + When preforming an op_mov, preserve any existing register mapping. + + ~0.5% progression on v8 tests x86-64. + + * jit/JIT.cpp: + (JSC::JIT::privateCompileMainPass): + +2009-03-05 Simone Fiorentino + + Bug 24382: request to add SH4 platform + + + + Reviewed by David Kilzer. + + * wtf/Platform.h: Added support for SH4 platform. + +2009-03-05 Gavin Barraclough + + Reviewed by Oliver Hunt. + + Writes of constant values to SF registers should be made with direct memory + writes where possible, rather than moving the value via a hardware register. + + ~3% win on SunSpider tests on x86, ~1.5% win on v8 tests on x86-64. + + * assembler/MacroAssemblerX86_64.h: + (JSC::MacroAssemblerX86_64::storePtr): + * assembler/X86Assembler.h: + (JSC::X86Assembler::movq_i32m): + * jit/JIT.cpp: + (JSC::JIT::privateCompileMainPass): + +2009-03-05 Mark Rowe + + Fix the build. + + Sprinkle "static" around NumberConstructor.cpp in order to please the compiler. + + * runtime/NumberConstructor.cpp: + (JSC::numberConstructorNaNValue): + (JSC::numberConstructorNegInfinity): + (JSC::numberConstructorPosInfinity): + (JSC::numberConstructorMaxValue): + (JSC::numberConstructorMinValue): + +2009-03-04 Mark Rowe + + Reviewed by Oliver Hunt. + + FastMallocZone's enumeration code reports fragmented administration space + + The handling of MALLOC_ADMIN_REGION_RANGE_TYPE in FastMalloc's zone was incorrect. It was attempting + to record the memory containing and individual span as an administrative region, when all memory + allocated via MetaDataAlloc should in fact be recorded. This was causing memory regions allocated + via MetaDataAlloc to appear as "VM_ALLOCATE ?" in vmmap output. They are now correctly reported as + "MALLOC_OTHER" regions associated with the JavaScriptCore FastMalloc zone. + + Memory is allocated via MetaDataAlloc from two locations: PageHeapAllocator, and TCMalloc_PageMap{2,3}. + These two cases are handled differently. + + PageHeapAllocator is extended to keep a linked list of memory regions that it has allocated. The + first object in an allocated region contains the link to the previously allocated region. To record + the administrative regions of a PageHeapAllocator we can simply walk the linked list and record + each allocated region we encounter. + + TCMalloc_PageMaps allocate memory via MetaDataAlloc to store each level of the radix tree. To record + the administrative regions of a TCMalloc_PageMap we walk the tree and record the storage used for nodes + at each position rather than the nodes themselves. + + A small performance improvement is achieved by coalescing adjacent memory regions inside the PageMapMemoryUsageRecorder + so that fewer calls in to the range recorder are necessary. We further reduce the number of calls to the + range recorder by aggregating the in-use ranges of a given memory region into a local buffer before recording + them with a single call. A similar approach is also used by AdminRegionRecorder. + + * wtf/FastMalloc.cpp: + (WTF::PageHeapAllocator::Init): + (WTF::PageHeapAllocator::New): + (WTF::PageHeapAllocator::recordAdministrativeRegions): + (WTF::TCMallocStats::FreeObjectFinder::isFreeObject): + (WTF::TCMallocStats::PageMapMemoryUsageRecorder::~PageMapMemoryUsageRecorder): + (WTF::TCMallocStats::PageMapMemoryUsageRecorder::recordPendingRegions): + (WTF::TCMallocStats::PageMapMemoryUsageRecorder::visit): + (WTF::TCMallocStats::AdminRegionRecorder::AdminRegionRecorder): + (WTF::TCMallocStats::AdminRegionRecorder::recordRegion): + (WTF::TCMallocStats::AdminRegionRecorder::visit): + (WTF::TCMallocStats::AdminRegionRecorder::recordPendingRegions): + (WTF::TCMallocStats::AdminRegionRecorder::~AdminRegionRecorder): + (WTF::TCMallocStats::FastMallocZone::enumerate): + (WTF::TCMallocStats::FastMallocZone::FastMallocZone): + (WTF::TCMallocStats::FastMallocZone::init): + * wtf/TCPageMap.h: + (TCMalloc_PageMap2::visitValues): + (TCMalloc_PageMap2::visitAllocations): + (TCMalloc_PageMap3::visitValues): + (TCMalloc_PageMap3::visitAllocations): + +2009-03-04 Antti Koivisto + + Reviewed by Dave Hyatt. + + https://bugs.webkit.org/show_bug.cgi?id=24359 + Repaint throttling mechanism + + Set ENABLE_REPAINT_THROTTLING to 0 by default. + + * wtf/Platform.h: + +2009-03-03 David Kilzer + + WebCore and WebKit should install the same set of headers during installhdrs phase as build phase + + Reviewed by Mark Rowe. + + * Configurations/Base.xcconfig: Defined REAL_PLATFORM_NAME based + on PLATFORM_NAME to work around the missing definition on Tiger. + Updated HAVE_DTRACE to use REAL_PLATFORM_NAME. + +2009-03-03 Kevin McCullough + + Reviewed by Oliver Hunt. + + console.profile() doesn't work without a title + + * profiler/Profiler.cpp: + (JSC::Profiler::startProfiling): assert if there is not title to ensure + we don't start profiling without one. + +2009-03-02 Sam Weinig + + Reviewed by Mark Rowe. + + Enable Geolocation (except on Tiger and Leopard). + + * Configurations/JavaScriptCore.xcconfig: + +2009-03-01 David Kilzer + + Move HAVE_DTRACE check to Base.xcconfig + + Reviewed by Mark Rowe. + + * Configurations/Base.xcconfig: Set HAVE_DTRACE Xcode variable + based on PLATFORM_NAME and MAC_OS_X_VERSION_MAJOR. Also define + it as a preprocessor macro by modifying + GCC_PREPROCESSOR_DEFINITIONS. + * JavaScriptCore.xcodeproj/project.pbxproj: Changed "Generate + DTrace header" script phase to check for HAVE_DTRACE instead of + MACOSX_DEPLOYMENT_TARGET. + * wtf/Platform.h: Removed definition of HAVE_DTRACE macro since + it's defined in Base.xcconfig now. + +2009-03-01 Horia Olaru + + By looking in grammar.y there are only a few types of statement nodes + on which the debugger should stop. + + Removed isBlock and isLoop virtual calls. No need to emit debug hooks in + the "statementListEmitCode" method as long as the necessary hooks can be + added in each "emitCode". + + https://bugs.webkit.org/show_bug.cgi?id=21073 + + Reviewed by Kevin McCullough. + + * parser/Nodes.cpp: + (JSC::ConstStatementNode::emitBytecode): + (JSC::statementListEmitCode): + (JSC::EmptyStatementNode::emitBytecode): + (JSC::ExprStatementNode::emitBytecode): + (JSC::VarStatementNode::emitBytecode): + (JSC::IfNode::emitBytecode): + (JSC::IfElseNode::emitBytecode): + (JSC::DoWhileNode::emitBytecode): + (JSC::WhileNode::emitBytecode): + (JSC::ForNode::emitBytecode): + (JSC::ForInNode::emitBytecode): + (JSC::ContinueNode::emitBytecode): + (JSC::BreakNode::emitBytecode): + (JSC::ReturnNode::emitBytecode): + (JSC::WithNode::emitBytecode): + (JSC::SwitchNode::emitBytecode): + (JSC::LabelNode::emitBytecode): + (JSC::ThrowNode::emitBytecode): + (JSC::TryNode::emitBytecode): + * parser/Nodes.h: + +2009-02-26 Gavin Barraclough + + Reviewed by Geoff Garen. + + Fix bug #23614. Switches on double precision values were incorrectly + truncating the scrutinee value. E.g.: + + switch (1.1) { case 1: print("FAIL"); } + + Was resulting in FAIL. + + * interpreter/Interpreter.cpp: + (JSC::Interpreter::privateExecute): + * jit/JITStubs.cpp: + (JSC::JITStubs::cti_op_switch_imm): + +2009-02-26 Gavin Barraclough + + Reviewed by Oliver Hunt. + + Integer Immediate representation need not be canonical in x86 JIT code. + On x86-64 we already have loosened the requirement that the int immediate + representation in canonical, we should bring x86 into line. + + This patch is a minor (~0.5%) improvement on sunspider & v8-tests, and + should reduce memory footoprint (reduces JIT code size). + + * jit/JIT.cpp: + (JSC::JIT::compileOpStrictEq): + (JSC::JIT::privateCompileSlowCases): + * jit/JIT.h: + (JSC::JIT::emitJumpIfImmediateNumber): + (JSC::JIT::emitJumpIfNotImmediateNumber): + * jit/JITArithmetic.cpp: + (JSC::JIT::putDoubleResultToJSNumberCellOrJSImmediate): + (JSC::JIT::compileBinaryArithOp): + +2009-02-26 Carol Szabo + + Reviewed by Darin Adler. + + https://bugs.webkit.org/show_bug.cgi?id=24099 + ARM Compiler Warnings in pcre_exec.cpp + + * pcre/pcre_exec.cpp: + (match): + +2009-02-25 Cameron Zwarich + + Reviewed by Gavin Barraclough. + + Bug 24086: Regression (r40993): WebKit crashes after logging in to lists.zenbe + + + + The numeric sort optimization in r40993 generated bytecode for a function + without generating JIT code. This breaks an assumption in some parts of + the JIT's function calling logic that the presence of a CodeBlock implies + the existence of JIT code. + + In order to fix this, we simply generate JIT code whenever we check whether + a function is a numeric sort function. This only incurs an additional cost + in the case when the function is a numeric sort function, in which case it + is not expensive to generate JIT code for it. + + * runtime/ArrayPrototype.cpp: + (JSC::isNumericCompareFunction): + +2009-02-25 Geoffrey Garen + + Reviewed by Maciej Stachowiak. + + Fixed REGRESSION (r36701): Unable to select + messages on hotmail (24052) + + The bug was that for-in enumeration used a cached prototype chain without + validating that it was up-to-date. + + This led me to refactor prototype chain caching so it was easier to work + with and harder to get wrong. + + After a bit of inlining, this patch is performance-neutral on SunSpider + and the v8 benchmarks. + + * interpreter/Interpreter.cpp: + (JSC::Interpreter::tryCachePutByID): + (JSC::Interpreter::tryCacheGetByID): + * jit/JITStubs.cpp: + (JSC::JITStubs::tryCachePutByID): + (JSC::JITStubs::tryCacheGetByID): + (JSC::JITStubs::cti_op_get_by_id_proto_list): Use the new refactored goodness. See + lines beginning with "-" and smile. + + * runtime/JSGlobalObject.h: + (JSC::Structure::prototypeForLookup): A shout out to const. + + * runtime/JSPropertyNameIterator.h: + (JSC::JSPropertyNameIterator::next): We can use a pointer comparison to + see if our cached structure chain is equal to the object's structure chain, + since in the case of a cache hit, we share references to the same structure + chain. + + * runtime/Operations.h: + (JSC::countPrototypeChainEntriesAndCheckForProxies): Use the new refactored + goodness. + + * runtime/PropertyNameArray.h: + (JSC::PropertyNameArray::PropertyNameArray): + (JSC::PropertyNameArray::setShouldCache): + (JSC::PropertyNameArray::shouldCache): Renamed "cacheable" to "shouldCache" + to communicate that the client is specifying a recommendation, not a + capability. + + * runtime/Structure.cpp: + (JSC::Structure::Structure): No need to initialize a RefPtr. + (JSC::Structure::getEnumerablePropertyNames): Moved some code into helper + functions. + + (JSC::Structure::prototypeChain): New centralized accessor for a prototype + chain. Revalidates on every access, since the objects in the prototype + chain may have mutated. + + (JSC::Structure::isValid): Helper function for revalidating a cached + prototype chain. + + (JSC::Structure::getEnumerableNamesFromPropertyTable): + (JSC::Structure::getEnumerableNamesFromClassInfoTable): Factored out of + getEnumerablePropertyNames. + + * runtime/Structure.h: + + * runtime/StructureChain.cpp: + (JSC::StructureChain::StructureChain): + * runtime/StructureChain.h: + (JSC::StructureChain::create): No need for structureChainsAreEqual, since + we use pointer equality now. Refactored StructureChain to make a little + more sense and eliminate special cases for null prototypes. + +2009-02-25 Steve Falkenburg + + Use timeBeginPeriod to enable timing resolution greater than 16ms in command line jsc for Windows. + Allows more accurate reporting of benchmark times via command line jsc.exe. Doesn't affect WebKit's use of JavaScriptCore. + + Reviewed by Adam Roben. + + * jsc.cpp: + (main): + +2009-02-24 Geoffrey Garen + + Build fix? + + * GNUmakefile.am: + +2009-02-24 Mark Rowe + + Reviewed by Oliver Hunt. + + Rename AVAILABLE_AFTER_WEBKIT_VERSION_3_1 (etc.) to match the other macros + + * API/JSBasePrivate.h: + * API/JSContextRef.h: + * API/JSObjectRef.h: + * API/WebKitAvailability.h: + +2009-02-23 Geoffrey Garen + + Reviewed by Sam Weinig. + + Next step in splitting JIT functionality out of the Interpreter class: + Moved vptr storage from Interpreter to JSGlobalData, so it could be shared + between Interpreter and JITStubs, and moved the *Trampoline JIT stubs + into the JITStubs class. Also added a VPtrSet class to encapsulate vptr + hacks during JSGlobalData initialization. + + SunSpider says 0.4% faster. Meh. + + * JavaScriptCore.exp: + * JavaScriptCore.xcodeproj/project.pbxproj: + * interpreter/Interpreter.cpp: + (JSC::Interpreter::Interpreter): + (JSC::Interpreter::tryCacheGetByID): + (JSC::Interpreter::privateExecute): + * interpreter/Interpreter.h: + * jit/JIT.cpp: + (JSC::JIT::privateCompileMainPass): + (JSC::JIT::privateCompile): + (JSC::JIT::privateCompileCTIMachineTrampolines): + * jit/JIT.h: + (JSC::JIT::compileCTIMachineTrampolines): + * jit/JITCall.cpp: + (JSC::JIT::compileOpCall): + (JSC::JIT::compileOpCallSlowCase): + * jit/JITPropertyAccess.cpp: + (JSC::JIT::privateCompilePatchGetArrayLength): + * jit/JITStubs.cpp: + (JSC::JITStubs::JITStubs): + (JSC::JITStubs::tryCacheGetByID): + (JSC::JITStubs::cti_vm_dontLazyLinkCall): + (JSC::JITStubs::cti_op_get_by_val): + (JSC::JITStubs::cti_op_get_by_val_byte_array): + (JSC::JITStubs::cti_op_put_by_val): + (JSC::JITStubs::cti_op_put_by_val_array): + (JSC::JITStubs::cti_op_put_by_val_byte_array): + (JSC::JITStubs::cti_op_is_string): + * jit/JITStubs.h: + (JSC::JITStubs::ctiArrayLengthTrampoline): + (JSC::JITStubs::ctiStringLengthTrampoline): + (JSC::JITStubs::ctiVirtualCallPreLink): + (JSC::JITStubs::ctiVirtualCallLink): + (JSC::JITStubs::ctiVirtualCall): + * runtime/ArrayPrototype.cpp: + (JSC::arrayProtoFuncPop): + (JSC::arrayProtoFuncPush): + * runtime/FunctionPrototype.cpp: + (JSC::functionProtoFuncApply): + * runtime/JSArray.h: + (JSC::isJSArray): + * runtime/JSByteArray.h: + (JSC::asByteArray): + (JSC::isJSByteArray): + * runtime/JSCell.h: + * runtime/JSFunction.h: + * runtime/JSGlobalData.cpp: + (JSC::VPtrSet::VPtrSet): + (JSC::JSGlobalData::JSGlobalData): + (JSC::JSGlobalData::create): + (JSC::JSGlobalData::sharedInstance): + * runtime/JSGlobalData.h: + * runtime/JSString.h: + (JSC::isJSString): + * runtime/Operations.h: + (JSC::jsLess): + (JSC::jsLessEq): + * wrec/WREC.cpp: + (JSC::WREC::Generator::compileRegExp): + +2009-02-23 Csaba Osztrogonac + + Reviewed by Oliver Hunt. + + Bug 23787: Allow JIT to generate SSE2 code if using GCC + + + GCC version of the cpuid check. + + * jit/JITArithmetic.cpp: + (JSC::isSSE2Present): previous assembly code fixed. + +2009-02-23 David Levin + + Reviewed by Alexey Proskuryakov. + + Bug 24047: Need to simplify nested if's in WorkerRunLoop::runInMode + + + * wtf/MessageQueue.h: + (WTF::MessageQueue::infiniteTime): + Allows for one to call waitForMessageFilteredWithTimeout and wait forever. + + (WTF::MessageQueue::alwaysTruePredicate): + (WTF::MessageQueue::waitForMessage): + Made waitForMessage call waitForMessageFilteredWithTimeout, so that there is less + duplicate code. + + (WTF::MessageQueue::waitForMessageFilteredWithTimeout): + + * wtf/ThreadingQt.cpp: + (WTF::ThreadCondition::timedWait): + * wtf/ThreadingWin.cpp: + (WTF::ThreadCondition::timedWait): + Made these two implementations consistent with the pthread and gtk implementations. + Currently, the time calculations would overflow when passed large values. + +2009-02-23 Jeremy Moskovich + + Reviewed by Adam Roben. + + https://bugs.webkit.org/show_bug.cgi?id=24096 + PLATFORM(MAC)->PLATFORM(CF) since we want to use the CF functions in Chrome on OS X. + + * wtf/CurrentTime.cpp: + +2009-02-22 Geoffrey Garen + + Build fix? + + * GNUmakefile.am: + +2009-02-22 Geoffrey Garen + + Build fix. + + * GNUmakefile.am: + +2009-02-22 Geoffrey Garen + + Reviewed by Sam Weinig. + + Next step in splitting JIT functionality out of the Interpreter class: + Created a JITStubs class and renamed Interpreter::cti_* to JITStubs::cti_*. + + Also, moved timeout checking into its own class, located in JSGlobalData, + so both the Interpreter and the JIT could have access to it. + + * JavaScriptCore.exp: + * JavaScriptCore.pri: + * JavaScriptCore.scons: + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: + * JavaScriptCore.xcodeproj/project.pbxproj: + * JavaScriptCoreSources.bkl: + * interpreter/CallFrame.h: + * interpreter/Interpreter.cpp: + (JSC::Interpreter::Interpreter): + (JSC::Interpreter::privateExecute): + * interpreter/Interpreter.h: + * interpreter/Register.h: + * jit/JIT.cpp: + (JSC::): + (JSC::JIT::emitTimeoutCheck): + (JSC::JIT::privateCompileMainPass): + (JSC::JIT::privateCompileSlowCases): + (JSC::JIT::privateCompile): + (JSC::JIT::privateCompileCTIMachineTrampolines): + * jit/JIT.h: + * jit/JITArithmetic.cpp: + (JSC::JIT::compileFastArithSlow_op_lshift): + (JSC::JIT::compileFastArithSlow_op_rshift): + (JSC::JIT::compileFastArithSlow_op_bitand): + (JSC::JIT::compileFastArithSlow_op_mod): + (JSC::JIT::compileFastArith_op_mod): + (JSC::JIT::compileFastArithSlow_op_post_inc): + (JSC::JIT::compileFastArithSlow_op_post_dec): + (JSC::JIT::compileFastArithSlow_op_pre_inc): + (JSC::JIT::compileFastArithSlow_op_pre_dec): + (JSC::JIT::compileFastArith_op_add): + (JSC::JIT::compileFastArith_op_mul): + (JSC::JIT::compileFastArith_op_sub): + (JSC::JIT::compileBinaryArithOpSlowCase): + (JSC::JIT::compileFastArithSlow_op_add): + (JSC::JIT::compileFastArithSlow_op_mul): + * jit/JITCall.cpp: + (JSC::JIT::compileOpCall): + (JSC::JIT::compileOpCallSlowCase): + * jit/JITPropertyAccess.cpp: + (JSC::JIT::compileGetByIdHotPath): + (JSC::JIT::compilePutByIdHotPath): + (JSC::JIT::compileGetByIdSlowCase): + (JSC::JIT::compilePutByIdSlowCase): + (JSC::JIT::privateCompilePutByIdTransition): + (JSC::JIT::patchGetByIdSelf): + (JSC::JIT::patchPutByIdReplace): + (JSC::JIT::privateCompilePatchGetArrayLength): + (JSC::JIT::privateCompileGetByIdSelf): + (JSC::JIT::privateCompileGetByIdProto): + (JSC::JIT::privateCompileGetByIdChain): + (JSC::JIT::privateCompilePutByIdReplace): + * jit/JITStubs.cpp: + (JSC::JITStubs::tryCachePutByID): + (JSC::JITStubs::tryCacheGetByID): + (JSC::JITStubs::cti_op_convert_this): + (JSC::JITStubs::cti_op_end): + (JSC::JITStubs::cti_op_add): + (JSC::JITStubs::cti_op_pre_inc): + (JSC::JITStubs::cti_timeout_check): + (JSC::JITStubs::cti_register_file_check): + (JSC::JITStubs::cti_op_loop_if_less): + (JSC::JITStubs::cti_op_loop_if_lesseq): + (JSC::JITStubs::cti_op_new_object): + (JSC::JITStubs::cti_op_put_by_id_generic): + (JSC::JITStubs::cti_op_get_by_id_generic): + (JSC::JITStubs::cti_op_put_by_id): + (JSC::JITStubs::cti_op_put_by_id_second): + (JSC::JITStubs::cti_op_put_by_id_fail): + (JSC::JITStubs::cti_op_get_by_id): + (JSC::JITStubs::cti_op_get_by_id_second): + (JSC::JITStubs::cti_op_get_by_id_self_fail): + (JSC::JITStubs::cti_op_get_by_id_proto_list): + (JSC::JITStubs::cti_op_get_by_id_proto_list_full): + (JSC::JITStubs::cti_op_get_by_id_proto_fail): + (JSC::JITStubs::cti_op_get_by_id_array_fail): + (JSC::JITStubs::cti_op_get_by_id_string_fail): + (JSC::JITStubs::cti_op_instanceof): + (JSC::JITStubs::cti_op_del_by_id): + (JSC::JITStubs::cti_op_mul): + (JSC::JITStubs::cti_op_new_func): + (JSC::JITStubs::cti_op_call_JSFunction): + (JSC::JITStubs::cti_op_call_arityCheck): + (JSC::JITStubs::cti_vm_dontLazyLinkCall): + (JSC::JITStubs::cti_vm_lazyLinkCall): + (JSC::JITStubs::cti_op_push_activation): + (JSC::JITStubs::cti_op_call_NotJSFunction): + (JSC::JITStubs::cti_op_create_arguments): + (JSC::JITStubs::cti_op_create_arguments_no_params): + (JSC::JITStubs::cti_op_tear_off_activation): + (JSC::JITStubs::cti_op_tear_off_arguments): + (JSC::JITStubs::cti_op_profile_will_call): + (JSC::JITStubs::cti_op_profile_did_call): + (JSC::JITStubs::cti_op_ret_scopeChain): + (JSC::JITStubs::cti_op_new_array): + (JSC::JITStubs::cti_op_resolve): + (JSC::JITStubs::cti_op_construct_JSConstruct): + (JSC::JITStubs::cti_op_construct_NotJSConstruct): + (JSC::JITStubs::cti_op_get_by_val): + (JSC::JITStubs::cti_op_get_by_val_byte_array): + (JSC::JITStubs::cti_op_resolve_func): + (JSC::JITStubs::cti_op_sub): + (JSC::JITStubs::cti_op_put_by_val): + (JSC::JITStubs::cti_op_put_by_val_array): + (JSC::JITStubs::cti_op_put_by_val_byte_array): + (JSC::JITStubs::cti_op_lesseq): + (JSC::JITStubs::cti_op_loop_if_true): + (JSC::JITStubs::cti_op_negate): + (JSC::JITStubs::cti_op_resolve_base): + (JSC::JITStubs::cti_op_resolve_skip): + (JSC::JITStubs::cti_op_resolve_global): + (JSC::JITStubs::cti_op_div): + (JSC::JITStubs::cti_op_pre_dec): + (JSC::JITStubs::cti_op_jless): + (JSC::JITStubs::cti_op_not): + (JSC::JITStubs::cti_op_jtrue): + (JSC::JITStubs::cti_op_post_inc): + (JSC::JITStubs::cti_op_eq): + (JSC::JITStubs::cti_op_lshift): + (JSC::JITStubs::cti_op_bitand): + (JSC::JITStubs::cti_op_rshift): + (JSC::JITStubs::cti_op_bitnot): + (JSC::JITStubs::cti_op_resolve_with_base): + (JSC::JITStubs::cti_op_new_func_exp): + (JSC::JITStubs::cti_op_mod): + (JSC::JITStubs::cti_op_less): + (JSC::JITStubs::cti_op_neq): + (JSC::JITStubs::cti_op_post_dec): + (JSC::JITStubs::cti_op_urshift): + (JSC::JITStubs::cti_op_bitxor): + (JSC::JITStubs::cti_op_new_regexp): + (JSC::JITStubs::cti_op_bitor): + (JSC::JITStubs::cti_op_call_eval): + (JSC::JITStubs::cti_op_throw): + (JSC::JITStubs::cti_op_get_pnames): + (JSC::JITStubs::cti_op_next_pname): + (JSC::JITStubs::cti_op_push_scope): + (JSC::JITStubs::cti_op_pop_scope): + (JSC::JITStubs::cti_op_typeof): + (JSC::JITStubs::cti_op_is_undefined): + (JSC::JITStubs::cti_op_is_boolean): + (JSC::JITStubs::cti_op_is_number): + (JSC::JITStubs::cti_op_is_string): + (JSC::JITStubs::cti_op_is_object): + (JSC::JITStubs::cti_op_is_function): + (JSC::JITStubs::cti_op_stricteq): + (JSC::JITStubs::cti_op_nstricteq): + (JSC::JITStubs::cti_op_to_jsnumber): + (JSC::JITStubs::cti_op_in): + (JSC::JITStubs::cti_op_push_new_scope): + (JSC::JITStubs::cti_op_jmp_scopes): + (JSC::JITStubs::cti_op_put_by_index): + (JSC::JITStubs::cti_op_switch_imm): + (JSC::JITStubs::cti_op_switch_char): + (JSC::JITStubs::cti_op_switch_string): + (JSC::JITStubs::cti_op_del_by_val): + (JSC::JITStubs::cti_op_put_getter): + (JSC::JITStubs::cti_op_put_setter): + (JSC::JITStubs::cti_op_new_error): + (JSC::JITStubs::cti_op_debug): + (JSC::JITStubs::cti_vm_throw): + * jit/JITStubs.h: + (JSC::): + * runtime/JSFunction.h: + * runtime/JSGlobalData.cpp: + (JSC::JSGlobalData::JSGlobalData): + * runtime/JSGlobalData.h: + * runtime/JSGlobalObject.cpp: + * runtime/JSGlobalObject.h: + * runtime/TimeoutChecker.cpp: Copied from interpreter/Interpreter.cpp. + (JSC::TimeoutChecker::TimeoutChecker): + (JSC::TimeoutChecker::reset): + (JSC::TimeoutChecker::didTimeOut): + * runtime/TimeoutChecker.h: Copied from interpreter/Interpreter.h. + (JSC::TimeoutChecker::setTimeoutInterval): + (JSC::TimeoutChecker::ticksUntilNextCheck): + (JSC::TimeoutChecker::start): + (JSC::TimeoutChecker::stop): + +2009-02-20 Gustavo Noronha Silva + + Unreviewed build fix after r41100. + + * GNUmakefile.am: + +2009-02-20 Oliver Hunt + + Reviewed by Mark Rowe. + + 2==null returns true in 64bit jit + + Code for op_eq_null and op_neq_null was incorrectly performing + a 32bit compare, which truncated the type tag from an integer + immediate, leading to incorrect behaviour. + + * assembler/MacroAssembler.h: + (JSC::MacroAssembler::setPtr): + * assembler/MacroAssemblerX86_64.h: + (JSC::MacroAssemblerX86_64::setPtr): + * jit/JIT.cpp: + (JSC::JIT::privateCompileMainPass): + +2009-02-19 Geoffrey Garen + + Reviewed by Gavin Barraclough. + + First step in splitting JIT functionality out of the Interpreter class: + Created JITStubs.h/.cpp, and moved Interpreter::cti_* into JITStubs.cpp. + + Functions that the Interpreter and JITStubs share moved to Operations.h/.cpp. + + * GNUmakefile.am: + * JavaScriptCore.pri: + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: + * JavaScriptCore.xcodeproj/project.pbxproj: + * interpreter/Interpreter.cpp: + (JSC::Interpreter::resolveBase): + (JSC::Interpreter::checkTimeout): + (JSC::Interpreter::privateExecute): + * interpreter/Interpreter.h: + * jit/JITStubs.cpp: Copied from interpreter/Interpreter.cpp. + (JSC::Interpreter::cti_op_resolve_base): + * jit/JITStubs.h: Copied from interpreter/Interpreter.h. + * runtime/Operations.cpp: + (JSC::jsAddSlowCase): + (JSC::jsTypeStringForValue): + (JSC::jsIsObjectType): + (JSC::jsIsFunctionType): + * runtime/Operations.h: + (JSC::jsLess): + (JSC::jsLessEq): + (JSC::jsAdd): + (JSC::cachePrototypeChain): + (JSC::countPrototypeChainEntriesAndCheckForProxies): + (JSC::resolveBase): + +2009-02-19 Gavin Barraclough + + Reviewed by Oliver Hunt. + + Fix for x86-64. Where the JavaScriptCore text segment lies outside + a 2gb range of the heap containing JIT generated code, callbacks + from JIT code to the stub functions in Interpreter will be incorrectly + linked. + + No performance impact on Sunspider, 1% regression on v8-tests, + due to a 3% regression on richards. + + * assembler/AbstractMacroAssembler.h: + (JSC::AbstractMacroAssembler::Call::Call): + (JSC::AbstractMacroAssembler::Jump::link): + (JSC::AbstractMacroAssembler::Jump::linkTo): + (JSC::AbstractMacroAssembler::CodeLocationJump::relink): + (JSC::AbstractMacroAssembler::CodeLocationCall::relink): + (JSC::AbstractMacroAssembler::ProcessorReturnAddress::relinkCallerToFunction): + (JSC::AbstractMacroAssembler::PatchBuffer::link): + (JSC::AbstractMacroAssembler::PatchBuffer::linkTailRecursive): + (JSC::AbstractMacroAssembler::differenceBetween): + * assembler/MacroAssembler.h: + (JSC::MacroAssembler::tailRecursiveCall): + (JSC::MacroAssembler::makeTailRecursiveCall): + * assembler/MacroAssemblerX86.h: + (JSC::MacroAssemblerX86::call): + * assembler/MacroAssemblerX86Common.h: + * assembler/MacroAssemblerX86_64.h: + (JSC::MacroAssemblerX86_64::call): + (JSC::MacroAssemblerX86_64::moveWithPatch): + (JSC::MacroAssemblerX86_64::branchPtrWithPatch): + (JSC::MacroAssemblerX86_64::storePtrWithPatch): + * assembler/X86Assembler.h: + (JSC::X86Assembler::jmp_r): + (JSC::X86Assembler::linkJump): + (JSC::X86Assembler::patchJump): + (JSC::X86Assembler::patchCall): + (JSC::X86Assembler::linkCall): + (JSC::X86Assembler::patchAddress): + * interpreter/Interpreter.cpp: + (JSC::Interpreter::tryCTICachePutByID): + * jit/JIT.cpp: + (JSC::JIT::privateCompile): + (JSC::JIT::privateCompileCTIMachineTrampolines): + * jit/JIT.h: + * jit/JITArithmetic.cpp: + (JSC::JIT::putDoubleResultToJSNumberCellOrJSImmediate): + (JSC::JIT::compileBinaryArithOp): + * jit/JITPropertyAccess.cpp: + (JSC::JIT::privateCompilePutByIdTransition): + (JSC::JIT::privateCompileGetByIdSelf): + (JSC::JIT::privateCompilePutByIdReplace): + +2009-02-18 Geoffrey Garen + + Reviewed by Oliver Hunt. + + Simplified .call and .apply in preparation for optimizing them. Also, + a little cleanup. + + * runtime/FunctionPrototype.cpp: + (JSC::functionProtoFuncApply): + (JSC::functionProtoFuncCall): No need to do any specific conversion on + 'this' -- op_convert_this will do it if necessary. + + * runtime/JSImmediate.cpp: + (JSC::JSImmediate::toThisObject): Slightly relaxed the rules on + toThisObject to allow for 'undefined', which can be passed through + .call and .apply. + +2009-02-19 David Levin + + Reviewed by Alexey Proskuryakov. + + Bug 23976: MessageQueue needs a way to wait for a message that satisfies an arbitrary criteria. + + + * wtf/Deque.h: + (WTF::Deque::findIf): + * wtf/MessageQueue.h: + (WTF::MessageQueue::waitForMessageFiltered): + +2009-02-18 David Levin + + Reviewed by Alexey Proskuryakov. + + Bug 23974: Deque::Remove would be a useful method. + + + Add Deque::remove and DequeIteratorBase::operator=. + + Why was operator= added? Every concrete iterator (DequeIterator..DequeConstReverseIterator) + was calling DequeIteratorBase::assign(), which called Base::operator=(). Base::operator=() + was not implemented. This went unnoticed because the iterator copy code has been unused. + + * wtf/Deque.h: + (WTF::Deque::remove): + (WTF::DequeIteratorBase::removeFromIteratorsList): + (WTF::DequeIteratorBase::operator=): + (WTF::DequeIteratorBase::~DequeIteratorBase): + +2009-02-18 Gustavo Noronha Silva + + Reviewed by Holger Freyther. + + Fix symbols.filter location, and add other missing files to the + autotools build, so that make dist works. + + * GNUmakefile.am: + +2009-02-17 Geoffrey Garen + + Reviewed by Sam Weinig. + + Fixed failure in js1_5/Regress/regress-168347.js, as seen on the Oliver + bot. + + Technically, both behaviors are OK, but we might as well keep this test + passing. + + * runtime/FunctionPrototype.cpp: + (JSC::insertSemicolonIfNeeded): No need to add a trailing semicolon + after a trailing '}', since '}' ends a block, indicating the end of a + statement. + +2009-02-17 Geoffrey Garen + + Build fix. + + * runtime/FunctionPrototype.cpp: + +2009-02-17 Oliver Hunt + + Reviewed by Geoff Garen. + + Add assertion to guard against oversized pc relative calls. + + * assembler/X86Assembler.h: + (JSC::X86Assembler::link): + +2009-02-17 Geoffrey Garen + + Reviewed by Sam Weinig. + + Fixed REGRESSION: http://www.amnestyusa.org/ + fails to load. + + amnestyusa.org uses the Optimist JavaScript library, which adds event + listeners by concatenating string-ified functions. This is only sure to + be syntactically valid if the string-ified functions end in semicolons. + + * parser/Lexer.cpp: + (JSC::Lexer::isWhiteSpace): + * parser/Lexer.h: + (JSC::Lexer::isWhiteSpace): + (JSC::Lexer::isLineTerminator): Added some helper functions for examining + whitespace. + + * runtime/FunctionPrototype.cpp: + (JSC::appendSemicolonIfNeeded): + (JSC::functionProtoFuncToString): When string-ifying a function, insert + a semicolon in the last non-whitespace position, if one doesn't already exist. + +2009-02-16 Oliver Hunt + + Reviewed by NOBODY (Build fix). + + Roll out r41022 as it breaks qt and gtk builds + + * jit/JITArithmetic.cpp: + (JSC::isSSE2Present): + +2009-02-16 Sam Weinig + + Reviewed by Geoffrey Garen. + + Fix for + REGRESSION (r36779): Adding link, images, flash in TinyMCE blocks entire page (21382) + + No performance regression. + + * runtime/Arguments.cpp: + (JSC::Arguments::fillArgList): Add codepath for when the "length" property has been + overridden. + +2009-02-16 Mark Rowe + + Build fix. + + * wtf/FastMalloc.cpp: + (WTF::TCMallocStats::): + (WTF::TCMallocStats::FastMallocZone::FastMallocZone): + +2009-02-16 Csaba Osztrogonac + + Reviewed by Oliver Hunt. + + Bug 23787: Allow JIT to generate SSE2 code if using GCC + + + GCC version of the cpuid check. + + * jit/JITArithmetic.cpp: + (JSC::isSSE2Present): GCC assembly code added. + 6.6% progression on x86 Linux with JIT and WREC on SunSpider if using SSE2 capable machine. + +2009-02-13 Adam Treat + + Reviewed by George Staikos. + + https://bugs.webkit.org/show_bug.cgi?id=23960 + Crash Fix. + + Don't depend on 'initializeThreading()' to come before a call to 'isMainThread()' + as QtWebKit only calls 'initializeThreading()' during QWebPage construction. + + A client app may well make a call to QWebSettings::iconForUrl() for instance + before creating a QWebPage and that call to QWebSettings triggers an + ASSERT(isMainThread()) deep within WebCore. + + * wtf/ThreadingQt.cpp: + (WTF::isMainThread): + +2009-02-13 Gavin Barraclough + + Reviewed by Darin Adler. + + Some data in the instruction stream is potentially uninitialized - fix this. + + Change the OperandTypes constructor so that uninitialized memory in the int + is zeroed, and modify the Instruction constructor taking an Opcode so that + if !HAVE(COMPUTED_GOTO) (i.e. when Opcode is an enum, and is potentially only + a byte) it zeros the Instruction first before writing the opcode. + + * bytecode/Instruction.h: + (JSC::Instruction::Instruction): + * parser/ResultType.h: + (JSC::OperandTypes::OperandTypes): + +2009-02-13 Geoffrey Garen + + Build fix for non_JIT platforms. + + * bytecode/CodeBlock.h: + (JSC::CodeBlock::setIsNumericCompareFunction): + (JSC::CodeBlock::isNumericCompareFunction): + +2009-02-13 Geoffrey Garen + + Reviewed by Darin Adler. + + Fixed Optimize sort by JS numeric comparison + function not to run the comparison function + + * bytecode/CodeBlock.cpp: + (JSC::CodeBlock::CodeBlock): + * bytecode/CodeBlock.h: + (JSC::CodeBlock::setIsNumericCompareFunction): + (JSC::CodeBlock::isNumericCompareFunction): Added the ability to track + whether a CodeBlock performs a sort-like numeric comparison. + + * bytecompiler/BytecodeGenerator.cpp: + (JSC::BytecodeGenerator::generate): Set the isNumericCompareFunction bit + after compiling. + + * parser/Nodes.cpp: + (JSC::FunctionBodyNode::emitBytecode): Fixed a bug that caused us to + codegen an extra return at the end of all functions (eek!), since this + made it harder / weirder to detect the numeric comparison pattern in + bytecode. + + * runtime/ArrayPrototype.cpp: + (JSC::arrayProtoFuncSort): Use the isNumericCompareFunction bit to do + a faster sort if we can. + + * runtime/FunctionConstructor.cpp: + (JSC::extractFunctionBody): + (JSC::constructFunction): + * runtime/FunctionConstructor.h: Renamed and exported extractFunctionBody for + use in initializing lazyNumericCompareFunction. + + * runtime/JSArray.cpp: + (JSC::compareNumbersForQSort): + (JSC::compareByStringPairForQSort): + (JSC::JSArray::sortNumeric): + (JSC::JSArray::sort): + * runtime/JSArray.h: Added a fast numeric sort. Renamed ArrayQSortPair + to be more specific since we do different kinds of qsort now. + + * runtime/JSGlobalData.cpp: + (JSC::JSGlobalData::JSGlobalData): + (JSC::JSGlobalData::numericCompareFunction): + (JSC::JSGlobalData::ClientData::~ClientData): + * runtime/JSGlobalData.h: Added helper data for computing the + isNumericCompareFunction bit. + +2009-02-13 Darin Adler + + * Configurations/JavaScriptCore.xcconfig: Undo accidental commit of this file. + +2009-02-12 Darin Adler + + Reviewed by Oliver Hunt and Alexey Proskuryakov. + + Speed up a couple string functions. + + * runtime/StringPrototype.cpp: + (JSC::stringProtoFuncIndexOf): Added a fast path for cases where the second + argument is either missing or an integer. + (JSC::stringProtoFuncBig): Use jsNontrivialString since the string is guaranteed + to be 2 or more characters long. + (JSC::stringProtoFuncSmall): Ditto. + (JSC::stringProtoFuncBlink): Ditto. + (JSC::stringProtoFuncBold): Ditto. + (JSC::stringProtoFuncItalics): Ditto. + (JSC::stringProtoFuncStrike): Ditto. + (JSC::stringProtoFuncSub): Ditto. + (JSC::stringProtoFuncSup): Ditto. + (JSC::stringProtoFuncFontcolor): Ditto. + (JSC::stringProtoFuncFontsize): Make the fast path Sam recently added even faster + by avoiding all but the minimum memory allocation. + (JSC::stringProtoFuncAnchor): Use jsNontrivialString. + (JSC::stringProtoFuncLink): Added a fast path. + + * runtime/UString.cpp: + (JSC::UString::find): Added a fast path for single-character search strings. + +2009-02-13 David Levin + + Reviewed by Darin Adler. + + Bug 23926: Race condition in callOnMainThreadAndWait + + + * wtf/MainThread.cpp: + Removed callOnMainThreadAndWait since it isn't used. + +2009-02-13 Oliver Hunt + + Reviewed by Jon Honeycutt. + + Math.random is really slow on windows. + + Math.random calls WTF::randomNumber which is implemented as + the secure rand_s on windows. Unfortunately rand_s is an order + of magnitude slower than arc4random. For this reason I've + added "weakRandomNumber" for use by JavaScript's Math Object. + In the long term we should look at using our own secure PRNG + in place of the system, but this will do for now. + + 30% win on SunSpider on Windows, resolving most of the remaining + disparity vs. Mac. + + * runtime/MathObject.cpp: + (JSC::MathObject::MathObject): + (JSC::mathProtoFuncRandom): + * wtf/RandomNumber.cpp: + (WTF::weakRandomNumber): + (WTF::randomNumber): + * wtf/RandomNumber.h: + * wtf/RandomNumberSeed.h: + (WTF::initializeWeakRandomNumberGenerator): + +2009-02-12 Mark Rowe + + Fix the build for other platforms. + + * wtf/RandomNumber.cpp: + (WTF::randomNumber): + +2009-02-12 Gavin Barraclough + + Reviewed by Sam Weinig. + + Remove (/reduce) use of hard-wired register names from the JIT. + Currently there is no abstraction of registers used in the JIT, + which has a number of negative consequences. Hard-wiring x86 + register names makes the JIT less portable to other platforms, + and prevents us from performing dynamic register allocation to + attempt to maintain more temporary values in machine registers. + (The latter will be more important on x86-64, where we have more + registers to make use of). + + Also, remove MacroAssembler::mod32. This was not providing a + useful abstraction, and was not in keeping with the rest of the + MacroAssembler interface, in having specific register requirements. + + * assembler/MacroAssemblerX86Common.h: + * jit/JIT.cpp: + (JSC::JIT::compileOpStrictEq): + (JSC::JIT::emitSlowScriptCheck): + (JSC::JIT::privateCompileMainPass): + (JSC::JIT::privateCompileSlowCases): + (JSC::JIT::privateCompile): + (JSC::JIT::privateCompileCTIMachineTrampolines): + * jit/JIT.h: + * jit/JITArithmetic.cpp: + (JSC::JIT::compileFastArith_op_lshift): + (JSC::JIT::compileFastArithSlow_op_lshift): + (JSC::JIT::compileFastArith_op_rshift): + (JSC::JIT::compileFastArithSlow_op_rshift): + (JSC::JIT::compileFastArith_op_bitand): + (JSC::JIT::compileFastArithSlow_op_bitand): + (JSC::JIT::compileFastArith_op_mod): + (JSC::JIT::compileFastArithSlow_op_mod): + (JSC::JIT::compileFastArith_op_post_inc): + (JSC::JIT::compileFastArithSlow_op_post_inc): + (JSC::JIT::compileFastArith_op_post_dec): + (JSC::JIT::compileFastArithSlow_op_post_dec): + (JSC::JIT::compileFastArith_op_pre_inc): + (JSC::JIT::compileFastArithSlow_op_pre_inc): + (JSC::JIT::compileFastArith_op_pre_dec): + (JSC::JIT::compileFastArithSlow_op_pre_dec): + (JSC::JIT::compileFastArith_op_add): + (JSC::JIT::compileFastArith_op_mul): + (JSC::JIT::compileFastArith_op_sub): + (JSC::JIT::compileBinaryArithOp): + * jit/JITCall.cpp: + (JSC::JIT::compileOpCallInitializeCallFrame): + (JSC::JIT::compileOpCallSetupArgs): + (JSC::JIT::compileOpCallEvalSetupArgs): + (JSC::JIT::compileOpConstructSetupArgs): + (JSC::JIT::compileOpCall): + (JSC::JIT::compileOpCallSlowCase): + * jit/JITInlineMethods.h: + (JSC::JIT::emitGetVirtualRegister): + (JSC::JIT::emitPutVirtualRegister): + (JSC::JIT::emitNakedCall): + (JSC::JIT::restoreArgumentReference): + (JSC::JIT::restoreArgumentReferenceForTrampoline): + * jit/JITPropertyAccess.cpp: + (JSC::JIT::compileGetByIdHotPath): + (JSC::JIT::compilePutByIdHotPath): + (JSC::JIT::compileGetByIdSlowCase): + (JSC::JIT::compilePutByIdSlowCase): + (JSC::JIT::privateCompilePutByIdTransition): + (JSC::JIT::privateCompilePatchGetArrayLength): + (JSC::JIT::privateCompileGetByIdSelf): + (JSC::JIT::privateCompileGetByIdProto): + (JSC::JIT::privateCompileGetByIdSelfList): + (JSC::JIT::privateCompileGetByIdProtoList): + (JSC::JIT::privateCompileGetByIdChainList): + (JSC::JIT::privateCompileGetByIdChain): + (JSC::JIT::privateCompilePutByIdReplace): + +2009-02-12 Horia Olaru + + Reviewed by Oliver Hunt. + + https://bugs.webkit.org/show_bug.cgi?id=23400 + + When throwing an exception within an eval argument string, the dst parameter was + modified in the functions below and the return value for eval was altered. Changed + the emitNode call in JSC::ThrowNode::emitBytecode to use a temporary register + to store its results instead of dst. The JSC::FunctionCallResolveNode::emitBytecode + would load the function within the dst registry, also altering the result returned + by eval. Replaced it with another temporary. + + * parser/Nodes.cpp: + (JSC::FunctionCallResolveNode::emitBytecode): + (JSC::ThrowNode::emitBytecode): + +2009-02-12 Sam Weinig + + Reviewed by Geoffrey Garen. + + Speed up String.prototype.fontsize. + + * runtime/StringPrototype.cpp: + (JSC::stringProtoFuncFontsize): Specialize for defined/commonly used values. + +2009-02-12 Geoffrey Garen + + Reviewed by Sam Weinig. + + Correctness fix. + + * wtf/RandomNumber.cpp: + (WTF::randomNumber): Divide by the maximum representable value, which + is different on each platform now, to get values between 0 and 1. + +2009-02-12 Geoffrey Garen + + Build fix. + + * wtf/RandomNumber.cpp: + (WTF::randomNumber): + +2009-02-12 Geoffrey Garen + + Reviewed by Sam Weinig. + + Fixed . + + * wtf/RandomNumber.cpp: + (WTF::randomNumber): Make only one call to the random number generator + on platforms where the generator is cryptographically secure. The value + of randomness over and above cryptographically secure randomness is not + clear, and it caused some performance problems. + +2009-02-12 Adam Roben + + Fix lots of Perl warnings when building JavaScriptCoreGenerated on + Windows + + Reviewed by John Sullivan. + + * JavaScriptCore.vcproj/JavaScriptCore/build-generated-files.sh: + Create the docs/ directory so that we can write bytecode.html into it. + This matches what JavaScriptCore.xcodeproj does. + +2009-02-12 Simon Hausmann + + Rubber-stamped by Lars. + + Re-enable the JIT in the Qt build with -fno-stack-protector on Linux. + + * JavaScriptCore.pri: + +2009-02-11 Dmitry Titov + + Reviewed by Alexey Proskuryakov. + + https://bugs.webkit.org/show_bug.cgi?id=23705 + Fix the UI freeze caused by Worker generating a flood of messages. + Measure time we spend in executing posted work items. If too much time is spent + without returning to the run loop, exit and reschedule. + + * wtf/MainThread.h: + Added initializeMainThreadPlatform() to initialize low-level mechanism for posting + work items from thread to thread. This removes #ifdefs for WIN and CHROMIUM from platform-independent code. + + * wtf/MainThread.cpp: + (WTF::initializeMainThread): + (WTF::dispatchFunctionsFromMainThread): + Instead of dispatching all work items in the queue, dispatch them one by one + and measure elapsed time. After a threshold, reschedule and quit. + + (WTF::callOnMainThread): + (WTF::callOnMainThreadAndWait): + Only schedule dispatch if the queue was empty - to avoid many posted messages in the run loop queue. + + * wtf/mac/MainThreadMac.mm: + (WTF::scheduleDispatchFunctionsOnMainThread): + Use static instance of the mainThreadCaller instead of allocating and releasing it each time. + (WTF::initializeMainThreadPlatform): + * wtf/gtk/MainThreadChromium.cpp: + (WTF::initializeMainThreadPlatform): + * wtf/gtk/MainThreadGtk.cpp: + (WTF::initializeMainThreadPlatform): + * wtf/qt/MainThreadQt.cpp: + (WTF::initializeMainThreadPlatform): + * wtf/win/MainThreadWin.cpp: + (WTF::initializeMainThreadPlatform): + * wtf/wx/MainThreadWx.cpp: + (WTF::initializeMainThreadPlatform): + +2009-02-11 Sam Weinig + + Reviewed by Gavin Barraclough. + + Style cleanup. + + * assembler/AbstractMacroAssembler.h: + (JSC::AbstractMacroAssembler::CodeLocationCommon::CodeLocationCommon): + (JSC::AbstractMacroAssembler::CodeLocationCommon::operator bool): + (JSC::AbstractMacroAssembler::CodeLocationCommon::reset): + (JSC::AbstractMacroAssembler::CodeLocationLabel::addressForSwitch): + (JSC::AbstractMacroAssembler::CodeLocationLabel::addressForExceptionHandler): + (JSC::AbstractMacroAssembler::CodeLocationLabel::addressForJSR): + (JSC::AbstractMacroAssembler::CodeLocationLabel::getJumpDestination): + (JSC::AbstractMacroAssembler::CodeLocationJump::relink): + (JSC::AbstractMacroAssembler::CodeLocationJump::CodeLocationJump): + (JSC::AbstractMacroAssembler::CodeLocationCall::relink): + (JSC::AbstractMacroAssembler::CodeLocationCall::calleeReturnAddressValue): + (JSC::AbstractMacroAssembler::CodeLocationCall::CodeLocationCall): + (JSC::AbstractMacroAssembler::CodeLocationDataLabel32::repatch): + (JSC::AbstractMacroAssembler::CodeLocationDataLabel32::CodeLocationDataLabel32): + (JSC::AbstractMacroAssembler::CodeLocationDataLabelPtr::repatch): + (JSC::AbstractMacroAssembler::CodeLocationDataLabelPtr::CodeLocationDataLabelPtr): + (JSC::AbstractMacroAssembler::ProcessorReturnAddress::ProcessorReturnAddress): + (JSC::AbstractMacroAssembler::ProcessorReturnAddress::relinkCallerToFunction): + (JSC::AbstractMacroAssembler::ProcessorReturnAddress::operator void*): + (JSC::AbstractMacroAssembler::PatchBuffer::link): + (JSC::::CodeLocationCommon::labelAtOffset): + (JSC::::CodeLocationCommon::jumpAtOffset): + (JSC::::CodeLocationCommon::callAtOffset): + (JSC::::CodeLocationCommon::dataLabelPtrAtOffset): + (JSC::::CodeLocationCommon::dataLabel32AtOffset): + +2009-02-11 Sam Weinig + + Reviewed by Gavin Barraclough. + + * assembler/AbstractMacroAssembler.h: Fix comments. + +2009-02-11 Alexey Proskuryakov + + Trying to fix wx build. + + * bytecode/JumpTable.h: Include "MacroAssembler.h", not . + * jscore.bkl: Added assembler directory to search paths. + +2009-02-10 Gavin Barraclough + + Build + fix. + (Narrow + changelog + for + dhyatt). + + * bytecode/Instruction.h: + (JSC::PolymorphicAccessStructureList::PolymorphicStubInfo::set): + (JSC::PolymorphicAccessStructureList::PolymorphicAccessStructureList): + +2009-02-10 Gavin Barraclough + + Reviewed by Oliver Hunt. + + Reduce use of void* / reinterpret_cast in JIT repatching code, + add strong types for Calls and for the various types of pointers + we retain into the JIT generated instruction stream. + + No performance impact. + + * assembler/AbstractMacroAssembler.h: + (JSC::AbstractMacroAssembler::ImmPtr::ImmPtr): + (JSC::AbstractMacroAssembler::ImmPtr::asIntptr): + (JSC::AbstractMacroAssembler::Imm32::Imm32): + (JSC::AbstractMacroAssembler::Label::Label): + (JSC::AbstractMacroAssembler::DataLabelPtr::DataLabelPtr): + (JSC::AbstractMacroAssembler::Call::Call): + (JSC::AbstractMacroAssembler::Call::link): + (JSC::AbstractMacroAssembler::Call::linkTo): + (JSC::AbstractMacroAssembler::Jump::Jump): + (JSC::AbstractMacroAssembler::Jump::linkTo): + (JSC::AbstractMacroAssembler::CodeLocationCommon::CodeLocationCommon): + (JSC::AbstractMacroAssembler::CodeLocationCommon::operator bool): + (JSC::AbstractMacroAssembler::CodeLocationCommon::reset): + (JSC::AbstractMacroAssembler::CodeLocationLabel::CodeLocationLabel): + (JSC::AbstractMacroAssembler::CodeLocationLabel::addressForSwitch): + (JSC::AbstractMacroAssembler::CodeLocationLabel::addressForExceptionHandler): + (JSC::AbstractMacroAssembler::CodeLocationLabel::addressForJSR): + (JSC::AbstractMacroAssembler::CodeLocationLabel::getJumpDestination): + (JSC::AbstractMacroAssembler::CodeLocationJump::CodeLocationJump): + (JSC::AbstractMacroAssembler::CodeLocationJump::relink): + (JSC::AbstractMacroAssembler::CodeLocationCall::CodeLocationCall): + (JSC::AbstractMacroAssembler::CodeLocationCall::relink): + (JSC::AbstractMacroAssembler::CodeLocationCall::calleeReturnAddressValue): + (JSC::AbstractMacroAssembler::CodeLocationDataLabel32::CodeLocationDataLabel32): + (JSC::AbstractMacroAssembler::CodeLocationDataLabel32::repatch): + (JSC::AbstractMacroAssembler::CodeLocationDataLabelPtr::CodeLocationDataLabelPtr): + (JSC::AbstractMacroAssembler::CodeLocationDataLabelPtr::repatch): + (JSC::AbstractMacroAssembler::ProcessorReturnAddress::ProcessorReturnAddress): + (JSC::AbstractMacroAssembler::ProcessorReturnAddress::relinkCallerToFunction): + (JSC::AbstractMacroAssembler::ProcessorReturnAddress::operator void*): + (JSC::AbstractMacroAssembler::PatchBuffer::entry): + (JSC::AbstractMacroAssembler::PatchBuffer::trampolineAt): + (JSC::AbstractMacroAssembler::PatchBuffer::link): + (JSC::AbstractMacroAssembler::PatchBuffer::linkTailRecursive): + (JSC::AbstractMacroAssembler::PatchBuffer::patch): + (JSC::AbstractMacroAssembler::PatchBuffer::locationOf): + (JSC::AbstractMacroAssembler::PatchBuffer::returnAddressOffset): + (JSC::AbstractMacroAssembler::differenceBetween): + (JSC::::CodeLocationCommon::labelAtOffset): + (JSC::::CodeLocationCommon::jumpAtOffset): + (JSC::::CodeLocationCommon::callAtOffset): + (JSC::::CodeLocationCommon::dataLabelPtrAtOffset): + (JSC::::CodeLocationCommon::dataLabel32AtOffset): + * assembler/MacroAssemblerX86Common.h: + (JSC::MacroAssemblerX86Common::call): + * assembler/X86Assembler.h: + (JSC::X86Assembler::getCallReturnOffset): + * bytecode/CodeBlock.h: + (JSC::CallLinkInfo::CallLinkInfo): + (JSC::getStructureStubInfoReturnLocation): + (JSC::getCallLinkInfoReturnLocation): + * bytecode/Instruction.h: + (JSC::PolymorphicAccessStructureList::PolymorphicStubInfo::set): + (JSC::PolymorphicAccessStructureList::PolymorphicAccessStructureList): + * bytecode/JumpTable.h: + (JSC::StringJumpTable::ctiForValue): + (JSC::SimpleJumpTable::ctiForValue): + * bytecode/StructureStubInfo.h: + (JSC::StructureStubInfo::StructureStubInfo): + * bytecompiler/BytecodeGenerator.cpp: + (JSC::BytecodeGenerator::emitCatch): + (JSC::prepareJumpTableForStringSwitch): + * interpreter/Interpreter.cpp: + (JSC::Interpreter::cti_op_get_by_id_self_fail): + (JSC::getPolymorphicAccessStructureListSlot): + (JSC::Interpreter::cti_op_throw): + (JSC::Interpreter::cti_op_switch_imm): + (JSC::Interpreter::cti_op_switch_char): + (JSC::Interpreter::cti_op_switch_string): + (JSC::Interpreter::cti_vm_throw): + * jit/JIT.cpp: + (JSC::ctiSetReturnAddress): + (JSC::ctiPatchCallByReturnAddress): + (JSC::JIT::privateCompile): + (JSC::JIT::privateCompileCTIMachineTrampolines): + * jit/JIT.h: + (JSC::CallRecord::CallRecord): + (JSC::JIT::compileGetByIdSelf): + (JSC::JIT::compileGetByIdProto): + (JSC::JIT::compileGetByIdChain): + (JSC::JIT::compilePutByIdReplace): + (JSC::JIT::compilePutByIdTransition): + (JSC::JIT::compilePatchGetArrayLength): + (JSC::JIT::emitCTICall): + * jit/JITCall.cpp: + (JSC::JIT::unlinkCall): + (JSC::JIT::linkCall): + * jit/JITInlineMethods.h: + (JSC::JIT::emitNakedCall): + (JSC::JIT::emitCTICall_internal): + * jit/JITPropertyAccess.cpp: + (JSC::JIT::compileGetByIdSlowCase): + (JSC::JIT::compilePutByIdSlowCase): + (JSC::JIT::privateCompilePutByIdTransition): + (JSC::JIT::patchGetByIdSelf): + (JSC::JIT::patchPutByIdReplace): + (JSC::JIT::privateCompilePatchGetArrayLength): + (JSC::JIT::privateCompileGetByIdSelf): + (JSC::JIT::privateCompileGetByIdProto): + (JSC::JIT::privateCompileGetByIdSelfList): + (JSC::JIT::privateCompileGetByIdProtoList): + (JSC::JIT::privateCompileGetByIdChainList): + (JSC::JIT::privateCompileGetByIdChain): + (JSC::JIT::privateCompilePutByIdReplace): + +2009-02-10 Adam Roben + + Windows build fix after r40813 + + * JavaScriptCore.vcproj/jsc/jsc.vcproj: Added profiler/ to the include + path so that Profiler.h can be found. + +2009-02-09 Gavin Barraclough + + Reviewed by Oliver Hunt. + + Provide a class type for a generated block of JIT code. + Also changes the return address -> bytecode index map to + track the return addess as an unsigned offset into the code + instead of a ptrdiff_t in terms of void**s - the latter is + equal to the actual offset / sizeof(void*), making it a + potentially lossy representation. + + * JavaScriptCore.xcodeproj/project.pbxproj: + * assembler/AbstractMacroAssembler.h: + (JSC::AbstractMacroAssembler::PatchBuffer::returnAddressOffset): + * assembler/X86Assembler.h: + (JSC::X86Assembler::getCallReturnOffset): + * bytecode/CodeBlock.h: + (JSC::CallReturnOffsetToBytecodeIndex::CallReturnOffsetToBytecodeIndex): + (JSC::getCallReturnOffset): + (JSC::CodeBlock::getBytecodeIndex): + (JSC::CodeBlock::jitCode): + (JSC::CodeBlock::callReturnIndexVector): + * interpreter/Interpreter.cpp: + (JSC::Interpreter::execute): + (JSC::Interpreter::cti_vm_dontLazyLinkCall): + (JSC::Interpreter::cti_vm_lazyLinkCall): + * jit/JIT.cpp: + (JSC::JIT::privateCompile): + * jit/JIT.h: + (JSC::): + * jit/JITCall.cpp: + (JSC::JIT::linkCall): + * jit/JITCode.h: Added. + (JSC::): + (JSC::JITCode::JITCode): + (JSC::JITCode::operator bool): + (JSC::JITCode::addressForCall): + (JSC::JITCode::offsetOf): + (JSC::JITCode::execute): + +2009-02-09 John Grabowski + + Reviewed by Darin Adler. + + https://bugs.webkit.org/show_bug.cgi?id=23856 + Change the definition of "main thread" for Chromium on OSX. + It does not match the DARWIN definition. + + * wtf/ThreadingPthreads.cpp: + (WTF::initializeThreading): + (WTF::isMainThread): + +2009-02-09 Gavin Barraclough + + Reviewed by Oliver Hunt. + + Minor bugfix, incorrect check meant that subtraction causing integer overflow + would be missed on x86-64 JIT. + + * jit/JITArithmetic.cpp: + (JSC::JIT::compileBinaryArithOp): + +2009-02-09 Gavin Barraclough + + Reviewed by Oliver Hunt. + + A more sensible register allocation for x86-64. + + When WREC was ported to x86-64 it stuck with the same register allocation as x86. + This requires registers to be reordered on entry into WREC generated code, since + argument passing is different on x86-64 and x86 (regparm(3)). This patch switches + x86-64 to use a native register allocation, that does not require argument registers + to be reordered. + + * wrec/WRECGenerator.cpp: + (JSC::WREC::Generator::generateEnter): + (JSC::WREC::Generator::generateReturnSuccess): + (JSC::WREC::Generator::generateReturnFailure): + * wrec/WRECGenerator.h: + +2009-02-05 Adam Roben + + Build fix + + Rubberstamped by Sam Weinig. + + * wtf/TypeTraits.h: Include Platform.h, since this header uses macros + defined there. + +2009-02-05 Dimitri Glazkov + + Reviewed by Eric Seidel. + + https://bugs.webkit.org/show_bug.cgi?id=23747 + Add Chromium threading-related files. + + * wtf/MainThread.cpp: Added platform guard to initializeMainThread. + * wtf/chromium/ChromiumThreading.h: Added. + * wtf/chromium/MainThreadChromium.cpp: Added. + (WTF::initializeMainThread): + (WTF::scheduleDispatchFunctionsOnMainThread): + +2009-02-05 David Levin + + Reviewed by Darin Adler. + + Bug 23713: COMPILE_ASSERTS should be moved out of TypeTraits.h and into .cpp file + + + * GNUmakefile.am: + * JavaScriptCore.pri: + * JavaScriptCore.scons: + * JavaScriptCore.vcproj/WTF/WTF.vcproj: + * JavaScriptCore.xcodeproj/project.pbxproj: + * JavaScriptCoreSources.bkl: + + * wtf/HashTraits.h: + Remove unnecessary header file that I missed when moving out the type traits form this file. + + * wtf/TypeTraits.cpp: Added. + (WTF::): + * wtf/TypeTraits.h: + Moved the compile asserts into TypeTraits.cpp file. + +2009-02-04 Gavin Barraclough + + Reviewed by Oliver 'the nun' Hunt. + + Add -e switch to jsc to enable evaluation of scripts passed on the command line. + + * jsc.cpp: + (Script::Script): + (runWithScripts): + (printUsageStatement): + (parseArguments): + (jscmain): + +2009-02-04 Gavin Barraclough + + Rubber stamped by Sam 'Big Mac' Weinig. + + * assembler/AbstractMacroAssembler.h: Copied from assembler/MacroAssembler.h. + * assembler/MacroAssemblerX86.h: Copied from assembler/MacroAssembler.h. + * assembler/MacroAssemblerX86Common.h: Copied from assembler/MacroAssembler.h. + * assembler/MacroAssemblerX86_64.h: Copied from assembler/MacroAssembler.h. + +2009-02-04 Gavin Barraclough + + Reviewed by Sam Weinig. + + This patch tidies up the MacroAssembler, cleaning up the code and refactoring out the + platform-specific parts. The MacroAssembler gets split up like a beef burger, with the + platform-agnostic data types being the lower bun (in the form of the class AbstractMacroAssembler), + the plaform-specific code generation forming a big meaty patty of methods like 'add32', + 'branch32', etc (MacroAssemblerX86), and finally topped off with the bun-lid of the + MacroAssembler class itself, providing covenience methods such as the stack peek & poke, + and backwards branch methods, all of which can be described in a platform independent + way using methods from the base class. The AbstractMacroAssembler is templated on the + type of the assembler class that will be used for code generation, and the three layers + are held together with the cocktail stick of inheritance. + + The above description is a slight simplification since the MacroAssemblerX86 is actually + formed from two layers (in effect giving us a kind on bacon double cheeseburger) - with the + bulk of methods that are common between x86 & x86-64 implemented in MacroAssemblerX86Common, + which forms a base class for MacroAssemblerX86 and MacroAssemblerX86_64 (which add the methods + specific to the given platform). + + I'm landing these changes first without splitting the classes across multiple files, + I will follow up with a second patch to split up the file MacroAssembler.h. + + * assembler/MacroAssembler.h: + (JSC::AbstractMacroAssembler::): + (JSC::AbstractMacroAssembler::DataLabelPtr::DataLabelPtr): + (JSC::AbstractMacroAssembler::DataLabelPtr::patch): + (JSC::AbstractMacroAssembler::DataLabel32::DataLabel32): + (JSC::AbstractMacroAssembler::DataLabel32::patch): + (JSC::AbstractMacroAssembler::Label::Label): + (JSC::AbstractMacroAssembler::Jump::Jump): + (JSC::AbstractMacroAssembler::Jump::link): + (JSC::AbstractMacroAssembler::Jump::linkTo): + (JSC::AbstractMacroAssembler::Jump::patch): + (JSC::AbstractMacroAssembler::JumpList::link): + (JSC::AbstractMacroAssembler::JumpList::linkTo): + (JSC::AbstractMacroAssembler::PatchBuffer::link): + (JSC::AbstractMacroAssembler::PatchBuffer::addressOf): + (JSC::AbstractMacroAssembler::PatchBuffer::setPtr): + (JSC::AbstractMacroAssembler::size): + (JSC::AbstractMacroAssembler::copyCode): + (JSC::AbstractMacroAssembler::label): + (JSC::AbstractMacroAssembler::align): + (JSC::AbstractMacroAssembler::differenceBetween): + (JSC::MacroAssemblerX86Common::xor32): + (JSC::MacroAssemblerX86Common::load32WithAddressOffsetPatch): + (JSC::MacroAssemblerX86Common::store32WithAddressOffsetPatch): + (JSC::MacroAssemblerX86Common::move): + (JSC::MacroAssemblerX86Common::swap): + (JSC::MacroAssemblerX86Common::signExtend32ToPtr): + (JSC::MacroAssemblerX86Common::zeroExtend32ToPtr): + (JSC::MacroAssemblerX86Common::branch32): + (JSC::MacroAssemblerX86Common::jump): + (JSC::MacroAssemblerX86_64::add32): + (JSC::MacroAssemblerX86_64::sub32): + (JSC::MacroAssemblerX86_64::load32): + (JSC::MacroAssemblerX86_64::store32): + (JSC::MacroAssemblerX86_64::addPtr): + (JSC::MacroAssemblerX86_64::andPtr): + (JSC::MacroAssemblerX86_64::orPtr): + (JSC::MacroAssemblerX86_64::rshiftPtr): + (JSC::MacroAssemblerX86_64::subPtr): + (JSC::MacroAssemblerX86_64::xorPtr): + (JSC::MacroAssemblerX86_64::loadPtr): + (JSC::MacroAssemblerX86_64::loadPtrWithAddressOffsetPatch): + (JSC::MacroAssemblerX86_64::storePtr): + (JSC::MacroAssemblerX86_64::storePtrWithAddressOffsetPatch): + (JSC::MacroAssemblerX86_64::branchPtr): + (JSC::MacroAssemblerX86_64::branchTestPtr): + (JSC::MacroAssemblerX86_64::branchAddPtr): + (JSC::MacroAssemblerX86_64::branchSubPtr): + (JSC::MacroAssemblerX86_64::branchPtrWithPatch): + (JSC::MacroAssemblerX86_64::storePtrWithPatch): + (JSC::MacroAssemblerX86::add32): + (JSC::MacroAssemblerX86::sub32): + (JSC::MacroAssemblerX86::load32): + (JSC::MacroAssemblerX86::store32): + (JSC::MacroAssemblerX86::branch32): + (JSC::MacroAssemblerX86::branchPtrWithPatch): + (JSC::MacroAssemblerX86::storePtrWithPatch): + (JSC::MacroAssembler::pop): + (JSC::MacroAssembler::peek): + (JSC::MacroAssembler::poke): + (JSC::MacroAssembler::branchPtr): + (JSC::MacroAssembler::branch32): + (JSC::MacroAssembler::branch16): + (JSC::MacroAssembler::branchTestPtr): + (JSC::MacroAssembler::addPtr): + (JSC::MacroAssembler::andPtr): + (JSC::MacroAssembler::orPtr): + (JSC::MacroAssembler::rshiftPtr): + (JSC::MacroAssembler::subPtr): + (JSC::MacroAssembler::xorPtr): + (JSC::MacroAssembler::loadPtr): + (JSC::MacroAssembler::loadPtrWithAddressOffsetPatch): + (JSC::MacroAssembler::storePtr): + (JSC::MacroAssembler::storePtrWithAddressOffsetPatch): + (JSC::MacroAssembler::branchAddPtr): + (JSC::MacroAssembler::branchSubPtr): + * jit/JITArithmetic.cpp: + (JSC::JIT::compileBinaryArithOp): + +2009-02-04 Alexey Proskuryakov + + Reviewed by Sam Weinig. + + https://bugs.webkit.org/show_bug.cgi?id=23681 + Worker tests crash in debug builds if run --singly + + The crash happened because worker threads continued running while debug-only static objects + were already being destroyed on main thread. + + * runtime/Structure.cpp: Create static debug-only sets in heap, so that they don't get + destroyed. + + * wtf/ThreadingPthreads.cpp: Changed assertions to conventional form. + +2009-02-03 Gavin Barraclough + + Reviewed by Geoff Garen. + + https://bugs.webkit.org/show_bug.cgi?id=23715 + + Simplify MacroAssembler interface, by combining comparison methods. + Seprate operations are combined as follows: + jz32/jnz32/jzPtr/jnzPtr -> branchTest32/branchTestPtr, + j*(Add|Mul|Sub)32/j*(Add|Mul|Sub)Ptr -> branch(Add|Mul|Sub)32/branch(Add|Mul|Sub)Ptr + j*32/j*Ptr (all other two op combparisons) -> branch32/brnachPtr + set*32 -> set32 + + Also, represent the Scale of BaseIndex addresses as a plain enum (0,1,2,3), + instead of as multiplicands (1,2,4,8). + + This patch singificantly reduces replication of code, and increases functionality supported + by the MacroAssembler. No performance impact. + + * assembler/MacroAssembler.h: + (JSC::MacroAssembler::): + (JSC::MacroAssembler::branchPtr): + (JSC::MacroAssembler::branchPtrWithPatch): + (JSC::MacroAssembler::branch32): + (JSC::MacroAssembler::branch16): + (JSC::MacroAssembler::branchTestPtr): + (JSC::MacroAssembler::branchTest32): + (JSC::MacroAssembler::branchAddPtr): + (JSC::MacroAssembler::branchAdd32): + (JSC::MacroAssembler::branchMul32): + (JSC::MacroAssembler::branchSubPtr): + (JSC::MacroAssembler::branchSub32): + (JSC::MacroAssembler::set32): + (JSC::MacroAssembler::setTest32): + * assembler/X86Assembler.h: + (JSC::X86Assembler::): + (JSC::X86Assembler::jccRel32): + (JSC::X86Assembler::setccOpcode): + (JSC::X86Assembler::cmpq_mr): + (JSC::X86Assembler::setcc_r): + (JSC::X86Assembler::sete_r): + (JSC::X86Assembler::setne_r): + (JSC::X86Assembler::jne): + (JSC::X86Assembler::je): + (JSC::X86Assembler::jl): + (JSC::X86Assembler::jb): + (JSC::X86Assembler::jle): + (JSC::X86Assembler::jbe): + (JSC::X86Assembler::jge): + (JSC::X86Assembler::jg): + (JSC::X86Assembler::ja): + (JSC::X86Assembler::jae): + (JSC::X86Assembler::jo): + (JSC::X86Assembler::jp): + (JSC::X86Assembler::js): + (JSC::X86Assembler::jcc): + (JSC::X86Assembler::X86InstructionFormatter::putModRmSib): + * jit/JIT.cpp: + (JSC::JIT::compileOpStrictEq): + (JSC::JIT::emitSlowScriptCheck): + (JSC::JIT::privateCompileMainPass): + (JSC::JIT::privateCompileSlowCases): + (JSC::JIT::privateCompile): + (JSC::JIT::privateCompileCTIMachineTrampolines): + * jit/JITArithmetic.cpp: + (JSC::JIT::compileFastArith_op_lshift): + (JSC::JIT::compileFastArith_op_mod): + (JSC::JIT::compileFastArith_op_post_inc): + (JSC::JIT::compileFastArith_op_post_dec): + (JSC::JIT::compileFastArith_op_pre_inc): + (JSC::JIT::compileFastArith_op_pre_dec): + (JSC::JIT::compileBinaryArithOp): + (JSC::JIT::compileFastArith_op_add): + (JSC::JIT::compileFastArith_op_mul): + * jit/JITCall.cpp: + (JSC::JIT::compileOpCall): + (JSC::JIT::compileOpCallSlowCase): + * jit/JITInlineMethods.h: + (JSC::JIT::checkStructure): + (JSC::JIT::emitJumpIfJSCell): + (JSC::JIT::emitJumpIfNotJSCell): + (JSC::JIT::emitJumpIfImmediateNumber): + (JSC::JIT::emitJumpIfNotImmediateNumber): + (JSC::JIT::emitJumpIfImmediateInteger): + (JSC::JIT::emitJumpIfNotImmediateInteger): + (JSC::JIT::emitFastArithDeTagImmediateJumpIfZero): + * jit/JITPropertyAccess.cpp: + (JSC::JIT::compileGetByIdHotPath): + (JSC::JIT::compilePutByIdHotPath): + (JSC::JIT::privateCompilePutByIdTransition): + (JSC::JIT::privateCompilePatchGetArrayLength): + (JSC::JIT::privateCompileGetByIdProto): + (JSC::JIT::privateCompileGetByIdProtoList): + (JSC::JIT::privateCompileGetByIdChainList): + (JSC::JIT::privateCompileGetByIdChain): + * runtime/RegExp.cpp: + (JSC::RegExp::match): + * wrec/WRECGenerator.cpp: + (JSC::WREC::Generator::generateEnter): + (JSC::WREC::Generator::generateIncrementIndex): + (JSC::WREC::Generator::generateLoadCharacter): + (JSC::WREC::Generator::generateJumpIfNotEndOfInput): + (JSC::WREC::Generator::generateBackreferenceQuantifier): + (JSC::WREC::Generator::generateNonGreedyQuantifier): + (JSC::WREC::Generator::generateGreedyQuantifier): + (JSC::WREC::Generator::generatePatternCharacterPair): + (JSC::WREC::Generator::generatePatternCharacter): + (JSC::WREC::Generator::generateCharacterClassInvertedRange): + (JSC::WREC::Generator::generateCharacterClassInverted): + (JSC::WREC::Generator::generateAssertionBOL): + (JSC::WREC::Generator::generateAssertionEOL): + (JSC::WREC::Generator::generateAssertionWordBoundary): + (JSC::WREC::Generator::generateBackreference): + +2009-02-03 David Hyatt + + Fix a bug in Vector's shrinkCapacity method. It did not properly copy elements into the inline buffer + when shrinking down from a size that was greater than the inline capacity. + + Reviewed by Maciej + + * wtf/Vector.h: + (WTF::VectorBuffer::VectorBuffer): + (WTF::VectorBuffer::allocateBuffer): + +2009-02-03 Simon Hausmann + + Reviewed by Tor Arne Vestbø. + + Added accessor for JSByteArray storage. + + * runtime/JSByteArray.h: + (JSC::JSByteArray::storage): + +2009-02-03 Dmitry Titov + + Reviewed by Alexey Proskuryakov. + + https://bugs.webkit.org/show_bug.cgi?id=23560 + Implement SharedTimer on WorkerRunLoop + + * JavaScriptCore.exp: + Forgot to expose ThreadCondition::timedWait() in one of previous patches. + +2009-02-02 Oliver Hunt + + Reviewed by Gavin Barraclough. + + REGRESSION: Regular Expressions and character classes, shorthands and ranges + + + In certain circumstances when WREC::Generator::generateCharacterClassInvertedRange invokes + itself recursively, it will incorrectly emit (and thus consume) the next single character + match in the current character class. As WREC uses a binary search this out of sequence + codegen could result in a character match being missed and so cause the regex to produce + incorrect results. + + * wrec/WRECGenerator.cpp: + (JSC::WREC::Generator::generateCharacterClassInvertedRange): + +2009-02-02 Darin Adler + + Reviewed by Dave Hyatt. + + Bug 23676: Speed up uses of reserveCapacity on new vectors by adding a new reserveInitialCapacity + https://bugs.webkit.org/show_bug.cgi?id=23676 + + * API/JSObjectRef.cpp: + (JSObjectCopyPropertyNames): Use reserveInitialCapacity. + * parser/Lexer.cpp: + (JSC::Lexer::Lexer): Ditto. + (JSC::Lexer::clear): Ditto. + + * wtf/Vector.h: Added reserveInitialCapacity, a more efficient version of + reserveCapacity for use when the vector is brand new (still size 0 with no + capacity other than the inline capacity). + +2009-01-30 Mark Rowe + + Rubber-stamped by Oliver Hunt. + + Enable the JIT on Mac OS X x86_64 as it passes all tests. + + * wtf/Platform.h: + +2009-01-30 Oliver Hunt + + Reviewed by Mark Rowe and Sam Weinig. + + Finally fix load() to propagate exceptions correctly. + + * jsc.cpp: + (functionLoad): + +2009-01-30 David Levin + + Reviewed by Darin Adler. + + https://bugs.webkit.org/show_bug.cgi?id=23618 + Templated worker tasks should be more error proof to use. + Fix Chromium build. + + * wtf/TypeTraits.h: + (WTF::IsConvertibleToInteger::IsConvertibleToDouble): + Avoid "possible loss of data" warning when using Microsoft's C++ compiler + by avoiding an implicit conversion of int types to doubles. + +2009-01-30 Laszlo Gombos + + Reviewed by Simon Hausmann. + + Bug 23580: GNU mode RVCT compilation support + + + * pcre/pcre_exec.cpp: Use COMPILER(GCC) instead of __GNUC__. + * wtf/FastMalloc.cpp: Ditto. + (WTF::TCMallocStats::): + * wtf/Platform.h: Don't define COMPILER(GCC) with RVCT --gnu. + +2009-01-30 David Levin + + Reviewed by Alexey Proskuryakov. + + Bug 23618: Templated worker tasks should be more error proof to use + + + Add the type traits needed for the generic worker tasks + and compile asserts for them. + + Add a summary header to the TypeTraits.h file to explain what is in there. + + Add a note to explain IsPod's deficiencies. + + * wtf/TypeTraits.h: + +2009-01-30 David Levin + + Reviewed by Alexey Proskuryakov. + + Bug 23616: Various "template helpers" should be consolidated from isolated files in JavaScriptCore. + + + * wtf/TypeTraits.h: Moved RemovePointer, IsPod, IsInteger to this file. + + * wtf/OwnPtr.h: Use RemovePointer from TypeTraits.h. + * wtf/RetainPtr.h: Ditto. + + * wtf/HashTraits.h: Use IsInteger from TypeTraits.h. + + * wtf/VectorTraits.h: Use IsPod from TypeTraits.h. + + * GNUmakefile.am: + * JavaScriptCore.vcproj/WTF/WTF.vcproj: + * JavaScriptCore.xcodeproj/project.pbxproj: + Added TypeTraits.h. + +2009-01-29 Stephanie Lewis + + RS by Oliver Hunt. + + Update the order files. + + * JavaScriptCore.order: + +2009-01-29 Cameron Zwarich + + Reviewed by Oliver Hunt. + + Bug 23551: Crash on page load with profiler enabled and running + + + + Interpreter::execute(FunctionBodyNode*, ...) calls Profiler::didExecute() + with a stale CallFrame. If some part of the scope chain has already been + freed, Profiler::didExecute() will crash when attempting to get the lexical + global object. The fix is to make the didExecute() call use the caller's + CallFrame, not the one made for the function call. In this case, the + willExecute() call should also be changed to match. + + Since this occurs in the actual inspector JS, it is difficult to reduce. + I couldn't make a layout test. + + * interpreter/Interpreter.cpp: + (JSC::Interpreter::execute): + +2009-01-28 Sam Weinig + + Reviewed by Gavin Barraclough. + + Fix for + Hang occurs when closing Installer window (iTunes, Aperture) + + * JavaScriptCore.exp: Export JSGlobalData::sharedInstance. + +2009-01-28 Sam Weinig + + Reviewed by Geoff Garen. + + Initial patch by Mark Rowe. + + + REGRESSION (r36006): "out of memory" alert running dromaeo on Windows + + Report the cost of the ArrayStorage vector more accurately/often. + + * runtime/JSArray.cpp: + (JSC::JSArray::JSArray): Report the extra cost even for a filled array + because JSString using the single character optimization and immediates + wont increase the cost themselves. + (JSC::JSArray::putSlowCase): Update the cost when increasing the size of + the array. + (JSC::JSArray::increaseVectorLength): Ditto. + +2009-01-28 Sam Weinig + + Reviewed by Geoff Garen. + + Fix for + REGRESSION (Safari 3-4): Local variable not accessible from Dashcode console or variables view + + Iterating the properties of activation objects accessed through the WebKit debugging + APIs was broken by forced conversion of JSActivation to the global object. To fix this, + we use a proxy activation object that acts more like a normal JSObject. + + * debugger/DebuggerActivation.cpp: Added. + (JSC::DebuggerActivation::DebuggerActivation): + (JSC::DebuggerActivation::mark): + (JSC::DebuggerActivation::className): + (JSC::DebuggerActivation::getOwnPropertySlot): + (JSC::DebuggerActivation::put): + (JSC::DebuggerActivation::putWithAttributes): + (JSC::DebuggerActivation::deleteProperty): + (JSC::DebuggerActivation::getPropertyNames): + (JSC::DebuggerActivation::getPropertyAttributes): + (JSC::DebuggerActivation::defineGetter): + (JSC::DebuggerActivation::defineSetter): + (JSC::DebuggerActivation::lookupGetter): + (JSC::DebuggerActivation::lookupSetter): + * debugger/DebuggerActivation.h: Added. + Proxy JSActivation object for Debugging. + + * runtime/JSActivation.h: + (JSC::JSActivation::isActivationObject): Added. + * runtime/JSObject.h: + (JSC::JSObject::isActivationObject): Added. + +2009-01-28 David Kilzer + + Bug 23490: Remove initialRefCount argument from RefCounted class + + + + Reviewed by Darin Adler. + + RefCountedBase now always starts with a ref count of 1, so there + is no need to pass the initialRefCount into the class anymore. + + * wtf/ByteArray.h: + (WTF::ByteArray::ByteArray): Removed call to RefCounted(1). + * wtf/RefCounted.h: + (WTF::RefCountedBase::RefCountedBase): Changed to start with a + ref count of 1. + (WTF::RefCounted::RefCounted): Removed initialRefCount argument + and removed call to RefCounted(1). + +2009-01-26 Adele Peterson + + Build fix. + + * debugger/Debugger.cpp: + +2009-01-26 Gavin Barraclough + + Reviewed by Darin Adler. + + Fixes for eq null & neq null, on 64-bit JIT. + https://bugs.webkit.org/show_bug.cgi?id=23559 + + This patch degrades 64-bit JIT performance on some benchmarks, + due to the whole not-being-incorrect thing. + + * jit/JIT.cpp: + (JSC::JIT::privateCompileMainPass): + +2009-01-26 Cameron Zwarich + + Reviewed by Gavin Barraclough. + + Bug 23552: Dashcode evaluator no longer works after making ExecStates actual call frames + + + + * JavaScriptCore.exp: + * debugger/Debugger.cpp: + (JSC::evaluateInGlobalCallFrame): Added so that WebScriptCallFrame can + evaluate JS starting from a global call frame. + * debugger/Debugger.h: + +2009-01-25 Mark Rowe + + Rubber-stamped by Dan Bernstein. + + Improve the consistency of settings in our .xcconfig files. + + * Configurations/Base.xcconfig: Enable GCC_OBJC_CALL_CXX_CDTORS to match other projects. + +2009-01-25 Darin Adler + + Reviewed by Mark Rowe. + + Bug 23352: Turn on more compiler warnings in the Mac build + https://bugs.webkit.org/show_bug.cgi?id=23352 + + Turn on the following warnings: + + -Wcast-qual + -Wextra-tokens + -Wformat=2 + -Winit-self + -Wmissing-noreturn + -Wpacked + -Wrendundant-decls + + * Configurations/Base.xcconfig: Added the new warnings. Switched to -Wextra instead of + -W for clarity since we don't have to support the older versions of gcc that require the + old -W syntax. Since we now use -Wformat=2, removed -Wformat-security. Also removed + -Wno-format-y2k since we can have that one on now. + +2009-01-25 Judit Jasz + + Reviewed by Darin Adler. + + Compilation problem fixing + http://bugs.webkit.org/show_bug.cgi?id=23497 + + * jit/JITCall.cpp: + (JSC::JIT::compileOpCall): Use JSValuePtr::encode. + +2009-01-25 Darin Adler + + Reviewed by Sam Weinig. + + Bug 23352: Turn on more compiler warnings in the Mac build + https://bugs.webkit.org/show_bug.cgi?id=23352 + + Fourth patch: Deal with the last few stray warnings. + + * parser/Parser.cpp: Only declare jscyyparse if it's not already declared. + This makes both separate compilation and all-in-one compilation work with the + -Wredundant-decls warning. + +2009-01-25 Darin Adler + + Reviewed by Sam Weinig. + + Bug 23352: Turn on more compiler warnings in the Mac build + https://bugs.webkit.org/show_bug.cgi?id=23352 + + Third patch: Use the noreturn attribute on functions that don't + return to prepare for the use of the -Wmissing-noreturn warning. + + * jit/JITCall.cpp: + (JSC::unreachable): Added NO_RETURN. + * jsc.cpp: + (functionQuit): Ditto. + (printUsageStatement): Ditto. + * wtf/AlwaysInline.h: Added definition of NO_RETURN. + +2009-01-24 Oliver Hunt + + Reviewed by Maciej Stachowiak. + + Force inlining of Lexer::matchPunctuator + + 2.2% win when parsing jQuery, Mootools, Prototype, etc + + * parser/Lexer.h: + +2009-01-23 Gavin Barraclough + + Reviewed by Geoff Garen. + + Fix for + Ensure that callbacks out from the JSC interface are only allowed + to return in reverse-chronological order to that in which they were + made. If we allow earlier callbacks to return first, then this may + result in setions of the RegisterFile in use by another thread + being trampled. + + See uber-comment in JSLock.h for details. + + * runtime/JSLock.cpp: + (JSC::JSLock::DropAllLocks::DropAllLocks): + (JSC::JSLock::DropAllLocks::~DropAllLocks): + +2009-01-23 Darin Adler + + Try to fix WX build. + + * runtime/JSGlobalObjectFunctions.h: Include + for the definition of UChar. + +2009-01-23 Anders Carlsson + + * Configurations/Base.xcconfig: + GCC 4.0 build fix. + + * runtime/JSNumberCell.h: + 64-bit build fix. + +2009-01-23 Anders Carlsson + + Reviewed by Sam Weinig. + + Turn on -Wmissing-prototypes and fix the warnings. + + * API/JSClassRef.cpp: + (clearReferenceToPrototype): + * Configurations/Base.xcconfig: + * runtime/Collector.cpp: + (JSC::getPlatformThreadRegisters): + * runtime/ExceptionHelpers.cpp: + (JSC::createError): + * runtime/JSGlobalObjectFunctions.h: + * runtime/JSNumberCell.h: + * runtime/UString.cpp: + (JSC::initializeStaticBaseString): + (JSC::createRep): + * wtf/FastMalloc.cpp: + * wtf/Threading.cpp: + +2009-01-22 Mark Rowe + + Rubber-stamped by Anders Carlsson. + + Disable GCC_WARN_ABOUT_MISSING_PROTOTYPES temporarily. + + Current versions of Xcode only respect it for C and Objective-C files, + and our code doesn't currently compile if it is applied to C++ and + Objective-C++ files. + + * Configurations/Base.xcconfig: + +2009-01-22 Steve Falkenburg + + https://bugs.webkit.org/show_bug.cgi?id=23489 + + Return currentTime() in correct units for the two early return cases. + + Reviewed by Mark Rowe. + + * wtf/CurrentTime.cpp: + (WTF::currentTime): + +2009-01-22 Sam Weinig + + Reviewed by Mark Rowe. + + Fix for + FastMalloc allocating an extra 4MB of meta-data on 64-bit + + Rely on the fact that on all known x86-64 platforms only use 48 bits of + address space to shrink the initial size of the PageMap from ~4MB to 120K. + For 64-bit we still use a 3-level radix tree, but now each level is only 12 + bits wide. + + No performance change. + + * wtf/FastMalloc.cpp: + (WTF::MapSelector): Add specialization for 64 bit that takes into account the + 16 bits of unused address space on x86-64. + +2009-01-22 Beth Dakin + + Reviewed by Sam Weinig. + + Fix for https://bugs.webkit.org/show_bug.cgi?id=23461 LayoutTests/ + fast/js/numeric-conversion.html is broken, and corresponding + + + The basic problem here is that parseInt(Infinity) should be NaN, + but we were returning 0. NaN matches Safari 3.2.1 and Firefox. + + * runtime/JSGlobalObjectFunctions.cpp: + (JSC::globalFuncParseInt): + 2009-01-22 Oliver Hunt - Reviewed by Geoff Garen. + Reviewed by Geoff Garen. + + (r39682-r39736) JSFunFuzz: crash on "(function(){({ x2: x }), })()" + + + Automatic semicolon insertion was resulting in this being accepted in the initial + nodeless parsing, but subsequent reparsing for code generation would fail, leading + to a crash. The solution is to ensure that reparsing a function performs parsing + in the same state as the initial parse. We do this by modifying the saved source + ranges to include rather than exclude the opening and closing braces. + + * bytecode/CodeBlock.cpp: + (JSC::CodeBlock::reparseForExceptionInfoIfNecessary): add an assertion for successful recompile + * parser/Lexer.h: + (JSC::Lexer::sourceCode): include rather than exclude braces. + * parser/Nodes.h: + (JSC::FunctionBodyNode::toSourceString): No need to append braces anymore. + +2009-01-22 Dmitry Titov + + Reviewed by Alexey Proskuryakov. + + https://bugs.webkit.org/show_bug.cgi?id=23373 + + Implement ThreadCondition::timedWait(). + Since we borrow the code for condition variables from other sources, + I did the same for timedWait(). See comments in ThreadingWin.cpp for + rationale and more info. + + * wtf/CONTRIBUTORS.pthreads-win32: + Added. A list of Pthreads-win32 contributors mentioned in their license. The license itself + is included into wtf/ThreadingWin32.cpp. + + * wtf/Threading.h: + * wtf/ThreadingWin.cpp: + Additional info and Pthreads-win32 license at the beginning. + (WTF::PlatformCondition::timedWait): new method, derived from Pthreads-win32. + (WTF::PlatformCondition::signal): same + (WTF::ThreadCondition::ThreadCondition): + (WTF::ThreadCondition::~ThreadCondition): + (WTF::ThreadCondition::wait): this now calls PlatformCondition::timedWait. + (WTF::ThreadCondition::timedWait): same + (WTF::ThreadCondition::signal): this now calls PlatformCondition::signal. + (WTF::ThreadCondition::broadcast): same + +2009-01-21 Gavin Barraclough + + Reviewed by Oliver Hunt. + + Fix for https://bugs.webkit.org/show_bug.cgi?id=23469. + + We need to check all numbers in integer switches, not just those + represented as integer JSImmediates. + + * interpreter/Interpreter.cpp: + (JSC::Interpreter::privateExecute): + (JSC::Interpreter::cti_op_switch_imm): + +2009-01-21 Gavin Barraclough + + Reviewed by Geoff Garen. + + Fix for https://bugs.webkit.org/show_bug.cgi?id=23468. + + * interpreter/Interpreter.cpp: + (JSC::Interpreter::privateExecute): + +2009-01-21 Alexey Proskuryakov + + Suggested by Oliver Hunt. Reviewed by Oliver Hunt. + + https://bugs.webkit.org/show_bug.cgi?id=23456 + Function argument names leak + + * parser/Nodes.cpp: (JSC::FunctionBodyNode::~FunctionBodyNode): Destruct parameter names. + +2009-01-20 Oliver Hunt + + Reviewed by NOBODY (Build fix). + + Windows build fix + + * JavaScriptCore.vcproj/WTF/WTF.vcproj: + +2009-01-20 Gavin Barraclough + + Reviewed by Mark Rowe. + + Structure property table deleted offset maps are being leaked. + Probably shouldn't be doing that. + + https://bugs.webkit.org/show_bug.cgi?id=23442 + + * runtime/Structure.cpp: + (JSC::Structure::~Structure): + +2009-01-20 Oliver Hunt + + Reviewed by NOBODY (build fix). + + Attempt to fix gtk build + + * GNUmakefile.am: + +2009-01-20 Darin Adler + + * runtime/StringPrototype.cpp: + (JSC::substituteBackreferences): Add back the initialization to fix the build. + +2009-01-20 Darin Adler + + Reviewed by Mark Rowe. + + Bug 23352: Turn on more compiler warnings in the Mac build + https://bugs.webkit.org/show_bug.cgi?id=23352 + + First patch: Fix some simple cases of various warnings. + + * pcre/pcre_compile.cpp: + (jsRegExpCompile): Use const_cast to change const-ness. + + * runtime/StringPrototype.cpp: + (JSC::substituteBackreferences): Remove unneeded initialization and + use UChar instead of unsigned short for UTF-16 values. + + * wtf/dtoa.cpp: + (WTF::strtod): Use const_cast to change const-ness. + +2009-01-20 Oliver Hunt + + Reviewed by NOBODY (build fix). + + Whoops, remove runtime/ByteArray references from .pri and .scons builds, update .bkl + + * JavaScriptCore.pri: + * JavaScriptCore.scons: + * JavaScriptCoreSources.bkl: + +2009-01-20 Oliver Hunt + + RS=Dan Bernstein. + + Move runtime/ByteArray to wtf/ByteArray + + * GNUmakefile.am: + * JavaScriptCore.exp: + * JavaScriptCore.pri: + * JavaScriptCore.scons: + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: + * JavaScriptCore.vcproj/WTF/WTF.vcproj: + * JavaScriptCore.xcodeproj/project.pbxproj: + * runtime/JSByteArray.cpp: + * runtime/JSByteArray.h: + * wtf/ByteArray.cpp: Renamed from JavaScriptCore/runtime/ByteArray.cpp. + (WTF::ByteArray::create): + * wtf/ByteArray.h: Renamed from JavaScriptCore/runtime/ByteArray.h. + (WTF::ByteArray::length): + (WTF::ByteArray::set): + (WTF::ByteArray::get): + (WTF::ByteArray::data): + (WTF::ByteArray::deref): + (WTF::ByteArray::ByteArray): + +2009-01-19 Sam Weinig + + Rubber-stamped by Gavin Barraclough. + + Remove temporary operator-> from JSValuePtr. + + * API/JSCallbackFunction.cpp: + (JSC::JSCallbackFunction::call): + * API/JSCallbackObjectFunctions.h: + (JSC::::call): + (JSC::::toNumber): + (JSC::::toString): + * API/JSObjectRef.cpp: + (JSObjectSetPrototype): + * API/JSValueRef.cpp: + (JSValueGetType): + (JSValueIsUndefined): + (JSValueIsNull): + (JSValueIsBoolean): + (JSValueIsNumber): + (JSValueIsString): + (JSValueIsObject): + (JSValueIsObjectOfClass): + (JSValueToBoolean): + (JSValueToNumber): + (JSValueToStringCopy): + (JSValueToObject): + * bytecode/CodeBlock.cpp: + (JSC::valueToSourceString): + (JSC::CodeBlock::mark): + * bytecode/CodeBlock.h: + (JSC::CodeBlock::isKnownNotImmediate): + * bytecompiler/BytecodeGenerator.cpp: + (JSC::BytecodeGenerator::emitEqualityOp): + (JSC::keyForImmediateSwitch): + * interpreter/Interpreter.cpp: + (JSC::jsLess): + (JSC::jsLessEq): + (JSC::jsAddSlowCase): + (JSC::jsAdd): + (JSC::jsTypeStringForValue): + (JSC::jsIsObjectType): + (JSC::jsIsFunctionType): + (JSC::isNotObject): + (JSC::Interpreter::callEval): + (JSC::Interpreter::throwException): + (JSC::cachePrototypeChain): + (JSC::Interpreter::tryCachePutByID): + (JSC::countPrototypeChainEntriesAndCheckForProxies): + (JSC::Interpreter::tryCacheGetByID): + (JSC::Interpreter::privateExecute): + (JSC::Interpreter::tryCTICachePutByID): + (JSC::Interpreter::tryCTICacheGetByID): + (JSC::Interpreter::cti_op_convert_this): + (JSC::Interpreter::cti_op_add): + (JSC::Interpreter::cti_op_pre_inc): + (JSC::Interpreter::cti_op_put_by_id_generic): + (JSC::Interpreter::cti_op_get_by_id_generic): + (JSC::Interpreter::cti_op_put_by_id): + (JSC::Interpreter::cti_op_put_by_id_second): + (JSC::Interpreter::cti_op_put_by_id_fail): + (JSC::Interpreter::cti_op_get_by_id): + (JSC::Interpreter::cti_op_get_by_id_second): + (JSC::Interpreter::cti_op_get_by_id_self_fail): + (JSC::Interpreter::cti_op_get_by_id_proto_list): + (JSC::Interpreter::cti_op_get_by_id_proto_list_full): + (JSC::Interpreter::cti_op_get_by_id_proto_fail): + (JSC::Interpreter::cti_op_get_by_id_array_fail): + (JSC::Interpreter::cti_op_get_by_id_string_fail): + (JSC::Interpreter::cti_op_instanceof): + (JSC::Interpreter::cti_op_del_by_id): + (JSC::Interpreter::cti_op_mul): + (JSC::Interpreter::cti_op_call_JSFunction): + (JSC::Interpreter::cti_op_call_NotJSFunction): + (JSC::Interpreter::cti_op_construct_JSConstruct): + (JSC::Interpreter::cti_op_construct_NotJSConstruct): + (JSC::Interpreter::cti_op_get_by_val): + (JSC::Interpreter::cti_op_get_by_val_byte_array): + (JSC::Interpreter::cti_op_sub): + (JSC::Interpreter::cti_op_put_by_val): + (JSC::Interpreter::cti_op_put_by_val_array): + (JSC::Interpreter::cti_op_put_by_val_byte_array): + (JSC::Interpreter::cti_op_loop_if_true): + (JSC::Interpreter::cti_op_negate): + (JSC::Interpreter::cti_op_div): + (JSC::Interpreter::cti_op_pre_dec): + (JSC::Interpreter::cti_op_not): + (JSC::Interpreter::cti_op_jtrue): + (JSC::Interpreter::cti_op_post_inc): + (JSC::Interpreter::cti_op_lshift): + (JSC::Interpreter::cti_op_bitand): + (JSC::Interpreter::cti_op_rshift): + (JSC::Interpreter::cti_op_bitnot): + (JSC::Interpreter::cti_op_mod): + (JSC::Interpreter::cti_op_post_dec): + (JSC::Interpreter::cti_op_urshift): + (JSC::Interpreter::cti_op_bitxor): + (JSC::Interpreter::cti_op_bitor): + (JSC::Interpreter::cti_op_push_scope): + (JSC::Interpreter::cti_op_is_undefined): + (JSC::Interpreter::cti_op_is_boolean): + (JSC::Interpreter::cti_op_is_number): + (JSC::Interpreter::cti_op_to_jsnumber): + (JSC::Interpreter::cti_op_in): + (JSC::Interpreter::cti_op_put_by_index): + (JSC::Interpreter::cti_op_switch_imm): + (JSC::Interpreter::cti_op_switch_char): + (JSC::Interpreter::cti_op_switch_string): + (JSC::Interpreter::cti_op_del_by_val): + (JSC::Interpreter::cti_op_put_getter): + (JSC::Interpreter::cti_op_put_setter): + (JSC::Interpreter::cti_op_new_error): + * interpreter/Interpreter.h: + (JSC::Interpreter::isJSArray): + (JSC::Interpreter::isJSString): + (JSC::Interpreter::isJSByteArray): + * interpreter/Register.h: + (JSC::Register::marked): + (JSC::Register::mark): + * jit/JITInlineMethods.h: + (JSC::JIT::getConstantOperandImmediateInt): + (JSC::JIT::isOperandConstantImmediateInt): + * jsc.cpp: + (functionPrint): + (functionDebug): + (functionRun): + (functionLoad): + (runWithScripts): + (runInteractive): + * parser/Nodes.cpp: + (JSC::processClauseList): + * profiler/ProfileGenerator.cpp: + (JSC::ProfileGenerator::addParentForConsoleStart): + * profiler/Profiler.cpp: + (JSC::Profiler::createCallIdentifier): + * runtime/ArrayConstructor.cpp: + (JSC::constructArrayWithSizeQuirk): + * runtime/ArrayPrototype.cpp: + (JSC::arrayProtoFuncToString): + (JSC::arrayProtoFuncToLocaleString): + (JSC::arrayProtoFuncJoin): + (JSC::arrayProtoFuncConcat): + (JSC::arrayProtoFuncPop): + (JSC::arrayProtoFuncPush): + (JSC::arrayProtoFuncReverse): + (JSC::arrayProtoFuncShift): + (JSC::arrayProtoFuncSlice): + (JSC::arrayProtoFuncSort): + (JSC::arrayProtoFuncSplice): + (JSC::arrayProtoFuncUnShift): + (JSC::arrayProtoFuncFilter): + (JSC::arrayProtoFuncMap): + (JSC::arrayProtoFuncEvery): + (JSC::arrayProtoFuncForEach): + (JSC::arrayProtoFuncSome): + (JSC::arrayProtoFuncIndexOf): + (JSC::arrayProtoFuncLastIndexOf): + * runtime/BooleanConstructor.cpp: + (JSC::constructBoolean): + (JSC::callBooleanConstructor): + * runtime/BooleanPrototype.cpp: + (JSC::booleanProtoFuncToString): + (JSC::booleanProtoFuncValueOf): + * runtime/Collector.cpp: + (JSC::Heap::protect): + (JSC::Heap::unprotect): + (JSC::Heap::heap): + (JSC::Heap::collect): + (JSC::typeName): + * runtime/Completion.cpp: + (JSC::evaluate): + * runtime/DateConstructor.cpp: + (JSC::constructDate): + (JSC::dateParse): + (JSC::dateUTC): + * runtime/DateInstance.h: + (JSC::DateInstance::internalNumber): + * runtime/DatePrototype.cpp: + (JSC::formatLocaleDate): + (JSC::fillStructuresUsingTimeArgs): + (JSC::fillStructuresUsingDateArgs): + (JSC::dateProtoFuncToString): + (JSC::dateProtoFuncToUTCString): + (JSC::dateProtoFuncToDateString): + (JSC::dateProtoFuncToTimeString): + (JSC::dateProtoFuncToLocaleString): + (JSC::dateProtoFuncToLocaleDateString): + (JSC::dateProtoFuncToLocaleTimeString): + (JSC::dateProtoFuncGetTime): + (JSC::dateProtoFuncGetFullYear): + (JSC::dateProtoFuncGetUTCFullYear): + (JSC::dateProtoFuncToGMTString): + (JSC::dateProtoFuncGetMonth): + (JSC::dateProtoFuncGetUTCMonth): + (JSC::dateProtoFuncGetDate): + (JSC::dateProtoFuncGetUTCDate): + (JSC::dateProtoFuncGetDay): + (JSC::dateProtoFuncGetUTCDay): + (JSC::dateProtoFuncGetHours): + (JSC::dateProtoFuncGetUTCHours): + (JSC::dateProtoFuncGetMinutes): + (JSC::dateProtoFuncGetUTCMinutes): + (JSC::dateProtoFuncGetSeconds): + (JSC::dateProtoFuncGetUTCSeconds): + (JSC::dateProtoFuncGetMilliSeconds): + (JSC::dateProtoFuncGetUTCMilliseconds): + (JSC::dateProtoFuncGetTimezoneOffset): + (JSC::dateProtoFuncSetTime): + (JSC::setNewValueFromTimeArgs): + (JSC::setNewValueFromDateArgs): + (JSC::dateProtoFuncSetYear): + (JSC::dateProtoFuncGetYear): + * runtime/ErrorConstructor.cpp: + (JSC::constructError): + * runtime/ErrorPrototype.cpp: + (JSC::errorProtoFuncToString): + * runtime/ExceptionHelpers.cpp: + (JSC::createError): + (JSC::createErrorMessage): + * runtime/FunctionConstructor.cpp: + (JSC::constructFunction): + * runtime/FunctionPrototype.cpp: + (JSC::functionProtoFuncToString): + (JSC::functionProtoFuncApply): + (JSC::functionProtoFuncCall): + * runtime/GetterSetter.cpp: + (JSC::GetterSetter::toObject): + * runtime/JSActivation.cpp: + (JSC::JSActivation::getOwnPropertySlot): + * runtime/JSArray.cpp: + (JSC::JSArray::put): + (JSC::JSArray::mark): + (JSC::JSArray::sort): + (JSC::AVLTreeAbstractorForArrayCompare::compare_key_key): + (JSC::JSArray::compactForSorting): + * runtime/JSByteArray.h: + (JSC::JSByteArray::setIndex): + * runtime/JSCell.h: + (JSC::asCell): + * runtime/JSFunction.cpp: + (JSC::JSFunction::call): + (JSC::JSFunction::construct): + * runtime/JSGlobalObject.cpp: + (JSC::markIfNeeded): + (JSC::lastInPrototypeChain): + * runtime/JSGlobalObjectFunctions.cpp: + (JSC::encode): + (JSC::decode): + (JSC::globalFuncEval): + (JSC::globalFuncParseInt): + (JSC::globalFuncParseFloat): + (JSC::globalFuncIsNaN): + (JSC::globalFuncIsFinite): + (JSC::globalFuncEscape): + (JSC::globalFuncUnescape): + (JSC::globalFuncJSCPrint): + * runtime/JSImmediate.cpp: + (JSC::JSImmediate::toThisObject): + (JSC::JSImmediate::toObject): + (JSC::JSImmediate::prototype): + (JSC::JSImmediate::toString): + * runtime/JSImmediate.h: + * runtime/JSObject.cpp: + (JSC::JSObject::mark): + (JSC::JSObject::put): + (JSC::callDefaultValueFunction): + (JSC::JSObject::getPrimitiveNumber): + (JSC::JSObject::defineGetter): + (JSC::JSObject::defineSetter): + (JSC::JSObject::lookupGetter): + (JSC::JSObject::lookupSetter): + (JSC::JSObject::hasInstance): + (JSC::JSObject::toNumber): + (JSC::JSObject::toString): + * runtime/JSObject.h: + (JSC::JSObject::JSObject): + (JSC::JSObject::inlineGetOwnPropertySlot): + (JSC::JSObject::getOwnPropertySlotForWrite): + (JSC::JSObject::getPropertySlot): + (JSC::JSValuePtr::get): + * runtime/JSPropertyNameIterator.h: + (JSC::JSPropertyNameIterator::create): + * runtime/JSString.cpp: + (JSC::JSString::getOwnPropertySlot): + * runtime/JSValue.h: + * runtime/JSWrapperObject.cpp: + (JSC::JSWrapperObject::mark): + * runtime/JSWrapperObject.h: + (JSC::JSWrapperObject::setInternalValue): + * runtime/MathObject.cpp: + (JSC::mathProtoFuncAbs): + (JSC::mathProtoFuncACos): + (JSC::mathProtoFuncASin): + (JSC::mathProtoFuncATan): + (JSC::mathProtoFuncATan2): + (JSC::mathProtoFuncCeil): + (JSC::mathProtoFuncCos): + (JSC::mathProtoFuncExp): + (JSC::mathProtoFuncFloor): + (JSC::mathProtoFuncLog): + (JSC::mathProtoFuncMax): + (JSC::mathProtoFuncMin): + (JSC::mathProtoFuncPow): + (JSC::mathProtoFuncRound): + (JSC::mathProtoFuncSin): + (JSC::mathProtoFuncSqrt): + (JSC::mathProtoFuncTan): + * runtime/NativeErrorConstructor.cpp: + (JSC::NativeErrorConstructor::NativeErrorConstructor): + (JSC::NativeErrorConstructor::construct): + * runtime/NumberConstructor.cpp: + (JSC::constructWithNumberConstructor): + (JSC::callNumberConstructor): + * runtime/NumberPrototype.cpp: + (JSC::numberProtoFuncToString): + (JSC::numberProtoFuncToLocaleString): + (JSC::numberProtoFuncValueOf): + (JSC::numberProtoFuncToFixed): + (JSC::numberProtoFuncToExponential): + (JSC::numberProtoFuncToPrecision): + * runtime/ObjectConstructor.cpp: + (JSC::constructObject): + * runtime/ObjectPrototype.cpp: + (JSC::objectProtoFuncValueOf): + (JSC::objectProtoFuncHasOwnProperty): + (JSC::objectProtoFuncIsPrototypeOf): + (JSC::objectProtoFuncDefineGetter): + (JSC::objectProtoFuncDefineSetter): + (JSC::objectProtoFuncLookupGetter): + (JSC::objectProtoFuncLookupSetter): + (JSC::objectProtoFuncPropertyIsEnumerable): + (JSC::objectProtoFuncToLocaleString): + (JSC::objectProtoFuncToString): + * runtime/Operations.h: + (JSC::JSValuePtr::equalSlowCaseInline): + (JSC::JSValuePtr::strictEqual): + (JSC::JSValuePtr::strictEqualSlowCaseInline): + * runtime/Protect.h: + (JSC::gcProtect): + (JSC::gcUnprotect): + * runtime/RegExpConstructor.cpp: + (JSC::setRegExpConstructorInput): + (JSC::setRegExpConstructorMultiline): + (JSC::constructRegExp): + * runtime/RegExpObject.cpp: + (JSC::setRegExpObjectLastIndex): + (JSC::RegExpObject::match): + * runtime/RegExpPrototype.cpp: + (JSC::regExpProtoFuncTest): + (JSC::regExpProtoFuncExec): + (JSC::regExpProtoFuncCompile): + (JSC::regExpProtoFuncToString): + * runtime/StringConstructor.cpp: + (JSC::stringFromCharCodeSlowCase): + (JSC::stringFromCharCode): + (JSC::constructWithStringConstructor): + (JSC::callStringConstructor): + * runtime/StringPrototype.cpp: + (JSC::stringProtoFuncReplace): + (JSC::stringProtoFuncToString): + (JSC::stringProtoFuncCharAt): + (JSC::stringProtoFuncCharCodeAt): + (JSC::stringProtoFuncConcat): + (JSC::stringProtoFuncIndexOf): + (JSC::stringProtoFuncLastIndexOf): + (JSC::stringProtoFuncMatch): + (JSC::stringProtoFuncSearch): + (JSC::stringProtoFuncSlice): + (JSC::stringProtoFuncSplit): + (JSC::stringProtoFuncSubstr): + (JSC::stringProtoFuncSubstring): + (JSC::stringProtoFuncToLowerCase): + (JSC::stringProtoFuncToUpperCase): + (JSC::stringProtoFuncLocaleCompare): + (JSC::stringProtoFuncBig): + (JSC::stringProtoFuncSmall): + (JSC::stringProtoFuncBlink): + (JSC::stringProtoFuncBold): + (JSC::stringProtoFuncFixed): + (JSC::stringProtoFuncItalics): + (JSC::stringProtoFuncStrike): + (JSC::stringProtoFuncSub): + (JSC::stringProtoFuncSup): + (JSC::stringProtoFuncFontcolor): + (JSC::stringProtoFuncFontsize): + (JSC::stringProtoFuncAnchor): + (JSC::stringProtoFuncLink): + * runtime/Structure.cpp: + (JSC::Structure::Structure): + (JSC::Structure::getEnumerablePropertyNames): + (JSC::Structure::createCachedPrototypeChain): + * runtime/Structure.h: + (JSC::Structure::mark): + * runtime/StructureChain.cpp: + (JSC::StructureChain::StructureChain): + +2009-01-19 Darin Adler + + Reviewed by Sam Weinig. + + Bug 23409: REGRESSION: RegExp 'replace()' function improperly processes '$$' + + + + Test: fast/js/string-replace-3.html + + * runtime/StringPrototype.cpp: + (JSC::substituteBackreferences): Remove code that adds an extra $ -- not sure + how this ever worked. + +2009-01-16 Gavin Barraclough + + Reviewed by Oliver Hunt. + + On x86-64 jit, cache JSImmedate::TagMask & JSImmedate::TagTypeNumber in + registers, save reloading them every time they're used. + + Draws x86-64 jit performance close to that of i386 jit. + + * assembler/MacroAssembler.h: + (JSC::MacroAssembler::subPtr): + (JSC::MacroAssembler::jnzPtr): + (JSC::MacroAssembler::jzPtr): + * jit/JIT.cpp: + (JSC::JIT::privateCompileMainPass): + * jit/JIT.h: + * jit/JITArithmetic.cpp: + (JSC::JIT::compileBinaryArithOpSlowCase): + * jit/JITInlineMethods.h: + (JSC::JIT::emitJumpIfJSCell): + (JSC::JIT::emitJumpIfNotJSCell): + (JSC::JIT::emitJumpIfImmediateNumber): + (JSC::JIT::emitJumpIfNotImmediateNumber): + (JSC::JIT::emitJumpIfImmediateInteger): + (JSC::JIT::emitJumpIfNotImmediateInteger): + (JSC::JIT::emitFastArithIntToImmNoCheck): + +2009-01-16 Gavin Barraclough + + Reviewed by Oliver Hunt. + + Add support to x86-64 JIT for inline double precision arithmetic ops. + +5/6% on x86-64, JIT enabled, sunspider. + + * assembler/MacroAssembler.h: + (JSC::MacroAssembler::addPtr): + * assembler/X86Assembler.h: + (JSC::X86Assembler::movq_rr): + * jit/JIT.h: + * jit/JITArithmetic.cpp: + (JSC::JIT::compileFastArith_op_pre_inc): + (JSC::JIT::compileBinaryArithOp): + (JSC::JIT::compileBinaryArithOpSlowCase): + (JSC::JIT::compileFastArith_op_add): + (JSC::JIT::compileFastArithSlow_op_add): + (JSC::JIT::compileFastArith_op_mul): + (JSC::JIT::compileFastArithSlow_op_mul): + (JSC::JIT::compileFastArith_op_sub): + (JSC::JIT::compileFastArithSlow_op_sub): + * parser/ResultType.h: + (JSC::ResultType::isReusable): + (JSC::ResultType::isInt32): + (JSC::ResultType::definitelyIsNumber): + (JSC::ResultType::mightBeNumber): + (JSC::ResultType::isNotNumber): + (JSC::ResultType::unknownType): + +2009-01-16 Gavin Barraclough + + Reviewed by Geoff Garen. + + Fixes for SamplingTool. + + https://bugs.webkit.org/show_bug.cgi?id=23390 + + * assembler/MacroAssembler.h: + (JSC::MacroAssembler::storePtr): + * bytecode/SamplingTool.cpp: + (JSC::SamplingTool::run): + (JSC::SamplingTool::dump): + * bytecode/SamplingTool.h: + (JSC::SamplingTool::encodeSample): + * jit/JIT.cpp: + (JSC::JIT::privateCompileMainPass): + (JSC::JIT::privateCompile): + * jit/JIT.h: + (JSC::JIT::samplingToolTrackCodeBlock): + * jit/JITCall.cpp: + (JSC::JIT::compileOpCall): + (JSC::JIT::compileOpCallSlowCase): + * jit/JITInlineMethods.h: + (JSC::JIT::emitCTICall_internal): + +2009-01-16 Geoffrey Garen + + Reviewed by Darin Adler. + + Fixed REGRESSION: Latest WebKit nightlies + turn "c" into "" when stripping \\c_ character + + * wrec/WRECParser.cpp: + (JSC::WREC::Parser::consumeEscape): Mimic a Firefox quirk when parsing + control escapes inside character classes. + +2009-01-16 Adam Roben + + Windows build fix + + * wrec/WRECParser.cpp: + (JSC::WREC::Parser::parseParentheses): Removed unreachable code. + +2009-01-15 Geoffrey Garen + + Reviewed by Cameron Zwarich. + + Fixed REGRESSION (r39164): Discarding quantifier + on assertion gives incorrect result (23075) + + https://bugs.webkit.org/show_bug.cgi?id=23075 + + * pcre/pcre_compile.cpp: + (compileBranch): Throw away an assertion if it's followed by a quantifier + with a 0 minimum, to match SpiderMonkey, v8, and the ECMA spec. + + * wrec/WRECParser.cpp: + (JSC::WREC::Parser::parseParentheses): Fall back on PCRE for the rare + case of an assertion with a quantifier with a 0 minimum, since we + don't handle quantified subexpressions yet, and in this special case, + we can't just throw away the quantifier. + +2009-01-15 Gavin Barraclough + + Reviewed by Oliver Hunt. + + Add support in ResultType to track that the results of bitops + are always of type int32_t. + + * parser/Nodes.cpp: + (JSC::ReadModifyResolveNode::emitBytecode): + (JSC::ReadModifyDotNode::emitBytecode): + (JSC::ReadModifyBracketNode::emitBytecode): + * parser/Nodes.h: + (JSC::ExpressionNode::): + (JSC::BooleanNode::): + (JSC::NumberNode::): + (JSC::StringNode::): + (JSC::PrePostResolveNode::): + (JSC::TypeOfResolveNode::): + (JSC::TypeOfValueNode::): + (JSC::UnaryPlusNode::): + (JSC::NegateNode::): + (JSC::BitwiseNotNode::): + (JSC::LogicalNotNode::): + (JSC::MultNode::): + (JSC::DivNode::): + (JSC::ModNode::): + (JSC::SubNode::): + (JSC::LeftShiftNode::): + (JSC::RightShiftNode::): + (JSC::UnsignedRightShiftNode::): + (JSC::LessNode::): + (JSC::GreaterNode::): + (JSC::LessEqNode::): + (JSC::GreaterEqNode::): + (JSC::InstanceOfNode::): + (JSC::EqualNode::): + (JSC::NotEqualNode::): + (JSC::StrictEqualNode::): + (JSC::NotStrictEqualNode::): + (JSC::BitAndNode::): + (JSC::BitOrNode::): + (JSC::BitXOrNode::): + (JSC::LogicalOpNode::): + * parser/ResultType.h: + (JSC::ResultType::isInt32): + (JSC::ResultType::isNotNumber): + (JSC::ResultType::booleanType): + (JSC::ResultType::numberType): + (JSC::ResultType::numberTypeCanReuse): + (JSC::ResultType::numberTypeCanReuseIsInt32): + (JSC::ResultType::stringOrNumberTypeCanReuse): + (JSC::ResultType::stringType): + (JSC::ResultType::unknownType): + (JSC::ResultType::forAdd): + (JSC::ResultType::forBitOp): + (JSC::OperandTypes::OperandTypes): + +2009-01-15 Gavin Barraclough + + Reviewed by Oliver Hunt. + + Add support for integer addition, subtraction and multiplication + in JIT code on x86-64. + + * assembler/MacroAssembler.h: + (JSC::MacroAssembler::mul32): + (JSC::MacroAssembler::sub32): + (JSC::MacroAssembler::joMul32): + (JSC::MacroAssembler::joSub32): + * jit/JIT.cpp: + (JSC::JIT::privateCompileMainPass): + (JSC::JIT::privateCompileSlowCases): + * jit/JIT.h: + * jit/JITArithmetic.cpp: + (JSC::JIT::compileFastArith_op_add): + (JSC::JIT::compileFastArithSlow_op_add): + (JSC::JIT::compileFastArith_op_mul): + (JSC::JIT::compileFastArithSlow_op_mul): + (JSC::JIT::compileFastArith_op_sub): + (JSC::JIT::compileFastArithSlow_op_sub): + +2009-01-15 Gavin Barraclough + + Reviewed by Geoff Garen. + + On x86-64 allow JSImmediate to encode 64-bit double precision values. + This patch only affects builds that set USE(ALTERNATE_JSIMMEDIATE). + Updates the implementation of JSValuePtr:: and JSImmediate:: methods + that operate on neumeric values to be be aware of the new representation. + When this representation is in use, the class JSNumberCell is redundant + and is compiled out. + + The format of the new immediate representation is documented in JSImmediate.h. + + * JavaScriptCore.exp: + * assembler/MacroAssembler.h: + (JSC::MacroAssembler::subPtr): + * assembler/X86Assembler.h: + (JSC::X86Assembler::): + (JSC::X86Assembler::subq_rr): + (JSC::X86Assembler::movq_rr): + (JSC::X86Assembler::ucomisd_rr): + (JSC::X86Assembler::X86InstructionFormatter::twoByteOp64): + * interpreter/Interpreter.cpp: + (JSC::Interpreter::cti_op_stricteq): + (JSC::Interpreter::cti_op_nstricteq): + * jit/JIT.cpp: + (JSC::JIT::compileOpStrictEq): + (JSC::JIT::privateCompileMainPass): + (JSC::JIT::privateCompileSlowCases): + * jit/JIT.h: + * jit/JITArithmetic.cpp: + (JSC::JIT::compileFastArith_op_lshift): + (JSC::JIT::compileFastArith_op_rshift): + (JSC::JIT::compileFastArith_op_bitand): + (JSC::JIT::compileFastArith_op_mod): + (JSC::JIT::compileFastArith_op_add): + (JSC::JIT::compileFastArith_op_mul): + (JSC::JIT::compileFastArith_op_post_inc): + (JSC::JIT::compileFastArith_op_post_dec): + (JSC::JIT::compileFastArith_op_pre_inc): + (JSC::JIT::compileFastArith_op_pre_dec): + (JSC::JIT::putDoubleResultToJSNumberCellOrJSImmediate): + (JSC::JIT::compileBinaryArithOp): + * jit/JITInlineMethods.h: + (JSC::JIT::emitJumpIfBothJSCells): + (JSC::JIT::emitJumpIfEitherNumber): + (JSC::JIT::emitJumpIfNotEitherNumber): + (JSC::JIT::emitJumpIfImmediateIntegerNumber): + (JSC::JIT::emitJumpIfNotImmediateIntegerNumber): + (JSC::JIT::emitJumpIfNotImmediateIntegerNumbers): + (JSC::JIT::emitJumpSlowCaseIfNotImmediateIntegerNumber): + (JSC::JIT::emitJumpSlowCaseIfNotImmediateIntegerNumbers): + (JSC::JIT::emitFastArithDeTagImmediate): + (JSC::JIT::emitFastArithDeTagImmediateJumpIfZero): + (JSC::JIT::emitFastArithReTagImmediate): + (JSC::JIT::emitFastArithIntToImmNoCheck): + * runtime/JSCell.h: + * runtime/JSGlobalData.cpp: + (JSC::JSGlobalData::JSGlobalData): + * runtime/JSImmediate.cpp: + (JSC::JSImmediate::toThisObject): + (JSC::JSImmediate::toObject): + (JSC::JSImmediate::toString): + * runtime/JSImmediate.h: + (JSC::wtf_reinterpret_cast): + (JSC::JSImmediate::isNumber): + (JSC::JSImmediate::isIntegerNumber): + (JSC::JSImmediate::isDoubleNumber): + (JSC::JSImmediate::isPositiveIntegerNumber): + (JSC::JSImmediate::areBothImmediateIntegerNumbers): + (JSC::JSImmediate::makeInt): + (JSC::JSImmediate::makeDouble): + (JSC::JSImmediate::doubleValue): + (JSC::doubleToBoolean): + (JSC::JSImmediate::toBoolean): + (JSC::JSImmediate::getTruncatedUInt32): + (JSC::JSImmediate::makeOutOfIntegerRange): + (JSC::JSImmediate::from): + (JSC::JSImmediate::getTruncatedInt32): + (JSC::JSImmediate::toDouble): + (JSC::JSImmediate::getUInt32): + (JSC::JSValuePtr::isInt32Fast): + (JSC::JSValuePtr::isUInt32Fast): + (JSC::JSValuePtr::areBothInt32Fast): + (JSC::JSFastMath::canDoFastBitwiseOperations): + (JSC::JSFastMath::xorImmediateNumbers): + (JSC::JSFastMath::canDoFastRshift): + (JSC::JSFastMath::canDoFastUrshift): + (JSC::JSFastMath::rightShiftImmediateNumbers): + (JSC::JSFastMath::canDoFastAdditiveOperations): + (JSC::JSFastMath::addImmediateNumbers): + (JSC::JSFastMath::subImmediateNumbers): + * runtime/JSNumberCell.cpp: + (JSC::jsNumberCell): + * runtime/JSNumberCell.h: + (JSC::createNumberStructure): + (JSC::isNumberCell): + (JSC::asNumberCell): + (JSC::jsNumber): + (JSC::JSValuePtr::isDoubleNumber): + (JSC::JSValuePtr::getDoubleNumber): + (JSC::JSValuePtr::isNumber): + (JSC::JSValuePtr::uncheckedGetNumber): + (JSC::jsNaN): + (JSC::JSValuePtr::getNumber): + (JSC::JSValuePtr::numberToInt32): + (JSC::JSValuePtr::numberToUInt32): + * runtime/JSValue.h: + * runtime/NumberConstructor.cpp: + (JSC::numberConstructorNegInfinity): + (JSC::numberConstructorPosInfinity): + (JSC::numberConstructorMaxValue): + (JSC::numberConstructorMinValue): + * runtime/NumberObject.cpp: + (JSC::constructNumber): + * runtime/NumberObject.h: + * runtime/Operations.h: + (JSC::JSValuePtr::equal): + (JSC::JSValuePtr::equalSlowCaseInline): + (JSC::JSValuePtr::strictEqual): + (JSC::JSValuePtr::strictEqualSlowCaseInline): + * wtf/Platform.h: + +2009-01-15 Sam Weinig + + Reviewed by Geoffrey Garen. + + + REGRESSION (r34838): JavaScript objects appear to be leaked after loading google.com + + Subtract the number of JSStrings cached in SmallStrings when calculating the + number of live JSObjects. + + * runtime/Collector.cpp: + (JSC::Heap::objectCount): + * runtime/SmallStrings.cpp: + (JSC::SmallStrings::count): + * runtime/SmallStrings.h: + +2009-01-15 Sam Weinig + + Fix Qt build. + + * runtime/Collector.cpp: + +2009-01-15 Sam Weinig + + Reviewed by Gavin Barraclough. + + Fix crash seen running fast/canvas. + + Make sure to mark the ScopeNode and CodeBlock being created + in the re-parse for exception information. + + * bytecode/CodeBlock.cpp: + (JSC::CodeBlock::reparseForExceptionInfoIfNecessary): + * parser/Nodes.h: + (JSC::ScopeNode::mark): + * runtime/Collector.cpp: + (JSC::Heap::collect): + * runtime/JSGlobalData.cpp: + (JSC::JSGlobalData::JSGlobalData): + * runtime/JSGlobalData.h: + +2009-01-15 Craig Schlenter + + Reviewed by Darin Adler. + + https://bugs.webkit.org/show_bug.cgi?id=23347 + Compilation of JavaScriptCore/wtf/ThreadingPthreads.cpp fails on Linux + + * wtf/ThreadingPthreads.cpp: included limits.h as INT_MAX is defined there. + +2009-01-15 Oliver Hunt + + Reviewed by Geoff Garen. + + Bug 23225: REGRESSION: Assertion failure in reparseInPlace() (m_sourceElements) at sfgate.com + + + Character position for open and closing brace was incorrectly referencing m_position to + record their position in a source document, however this is unsafe as BOMs may lead to + m_position being an arbitrary position from the real position of the current character. + + * parser/Lexer.cpp: + (JSC::Lexer::matchPunctuator): + +2009-01-14 David Kilzer + + Bug 23153: JSC build always touches JavaScriptCore/docs/bytecode.html + + + + Reviewed by Darin Adler. + + Instead of building bytecode.html into ${SRCROOT}/docs/bytecode.html, build it + into ${BUILT_PRODUCTS_DIR}/DerivedSources/JavaScriptCore/docs/bytecode.html. + + Also fixes make-bytecode-docs.pl to actually generate documentation. + + * DerivedSources.make: Changed bytecode.html to be built into local docs + directory in ${BUILT_PRODUCTS_DIR}/DerivedSources/JavaScriptCore. + * JavaScriptCore.xcodeproj/project.pbxproj: Added "/docs" to the end of the + "mkdir -p" command so that the docs subdirectory is automatically created. + * docs/make-bytecode-docs.pl: Changed BEGIN_OPCODE to DEFINE_OPCODE so that + documentation is actually generated. + +2009-01-14 Adam Treat + + Build fix for Qt from Dmitry Titov. + + * wtf/ThreadingQt.cpp: + (WTF::ThreadCondition::timedWait): + +2009-01-14 Oliver Hunt + + Reviewed by Cameron Zwarich. + + Bug 22903: REGRESSION (r36267): visiting this site reliably crashes WebKit nightly + + EvalCodeBlock's do not reference the functions that are declared inside the eval + code, this means that simply marking the EvalCodeBlock through the global object + is insufficient to mark the declared functions. This patch corrects this by + explicitly marking the CodeBlocks of all the functions declared in the cached + EvalNode. + + * bytecode/CodeBlock.cpp: + (JSC::CodeBlock::mark): + * bytecode/CodeBlock.h: + (JSC::CodeBlock::hasFunctions): + * bytecode/EvalCodeCache.h: + (JSC::EvalCodeCache::mark): + * parser/Nodes.cpp: + (JSC::ScopeNodeData::mark): + (JSC::EvalNode::mark): + * parser/Nodes.h: + +2009-01-14 Dmitry Titov + + Reviewed by Alexey Proskuryakov. + + https://bugs.webkit.org/show_bug.cgi?id=23312 + Implement MessageQueue::waitForMessageTimed() + Also fixed ThreadCondition::timedWait() to take absolute time, as discussed on webkit-dev. + Win32 version of timedWait still has to be implemented. + + * wtf/MessageQueue.h: + (WTF::MessageQueueWaitResult: new enum for the result of MessageQueue::waitForMessageTimed. + (WTF::MessageQueue::waitForMessage): + (WTF::MessageQueue::waitForMessageTimed): New method. + * wtf/Threading.h: + * wtf/ThreadingGtk.cpp: + (WTF::ThreadCondition::timedWait): changed to use absolute time instead of interval. + * wtf/ThreadingNone.cpp: + (WTF::ThreadCondition::timedWait): ditto. + * wtf/ThreadingPthreads.cpp: + (WTF::ThreadCondition::timedWait): ditto. + * wtf/ThreadingQt.cpp: + (WTF::ThreadCondition::timedWait): ditto. + * wtf/ThreadingWin.cpp: + (WTF::ThreadCondition::timedWait): ditto. The actual Win32 code is still to be implemented. + +2009-01-14 Dean McNamee + + Reviewed by Darin Adler and Oliver hunt. + + Correctly match allocation functions by implementing a custom deref(). + + https://bugs.webkit.org/show_bug.cgi?id=23315 + + * runtime/ByteArray.h: + (JSC::ByteArray::deref): + (JSC::ByteArray::ByteArray): + +2009-01-14 Dan Bernstein + + Reviewed by John Sullivan. + + - update copyright + + * Info.plist: + +2009-01-13 Beth Dakin + + Reviewed by Darin Adler and Oliver Hunt. + + REGRESSION: Business widget's front side + fails to render correctly when flipping widget + + The problem here is that parseInt was parsing NaN as 0. This patch + corrects that by parsing NaN as NaN. This matches our old behavior + and Firefox. + + * runtime/JSGlobalObjectFunctions.cpp: + (JSC::globalFuncParseInt): + +2009-01-13 Gavin Barraclough + + Reviewed by Oliver Hunt. + + Fix for: https://bugs.webkit.org/show_bug.cgi?id=23292 + + Implementation of two argument canDoFastAdditiveOperations does not correlate well with reality. + + * runtime/JSImmediate.h: + (JSC::JSFastMath::canDoFastAdditiveOperations): + +2009-01-13 Zalan Bujtas + + Reviewed by Darin Adler. + + https://bugs.webkit.org/show_bug.cgi?id=23290 + Fix JSImmediate::isImmediate(src) to !src->isCell() + + * interpreter/Interpreter.cpp: + (JSC::Interpreter::privateExecute): + +2009-01-13 Dmitry Titov + + Reviewed by Darin Adler. + + https://bugs.webkit.org/show_bug.cgi?id=23281 + Fix the Chromium Win build. + Need to use PLATFORM(WIN_OS) instead of PLATFORM(WIN). + Moved GTK and WX up in #if sequence because they could come with WIN_OS too, + while they have their own implementation even on Windows. + + * wtf/CurrentTime.cpp: + (WTF::currentTime): + +2009-01-12 Gavin Barraclough + + Reviewed by Oliver Hunt. + + Make the JSImmediate interface private. + + All manipulation of JS values should be through the JSValuePtr class, not by using JSImmediate + directly. The key missing methods on JSValuePtr are: + + * isCell() - check for values that are JSCell*s, and as such where asCell() may be used. + * isInt32Fast() getInt32Fast() - fast check/access for integer immediates. + * isUInt32Fast() getUInt32Fast() - ditto for unsigned integer immediates. + + The JIT is allowed full access to JSImmediate, since it needs to be able to directly + manipulate JSValuePtrs. The Interpreter is provided access to perform operations directly + on JSValuePtrs through the new JSFastMath interface. + + No performance impact. + + * API/JSCallbackObjectFunctions.h: + (JSC::::toNumber): + * API/JSValueRef.cpp: + (JSValueIsEqual): + (JSValueIsStrictEqual): + * JavaScriptCore.exp: + * bytecode/CodeBlock.h: + (JSC::CodeBlock::isKnownNotImmediate): + * bytecompiler/BytecodeGenerator.cpp: + (JSC::keyForImmediateSwitch): + * bytecompiler/BytecodeGenerator.h: + (JSC::BytecodeGenerator::JSValueHashTraits::constructDeletedValue): + (JSC::BytecodeGenerator::JSValueHashTraits::isDeletedValue): + * interpreter/Interpreter.cpp: + (JSC::jsLess): + (JSC::jsLessEq): + (JSC::jsAdd): + (JSC::jsIsObjectType): + (JSC::cachePrototypeChain): + (JSC::Interpreter::tryCachePutByID): + (JSC::Interpreter::tryCacheGetByID): + (JSC::Interpreter::privateExecute): + (JSC::Interpreter::tryCTICachePutByID): + (JSC::Interpreter::tryCTICacheGetByID): + (JSC::Interpreter::cti_op_add): + (JSC::Interpreter::cti_op_get_by_id_self_fail): + (JSC::Interpreter::cti_op_get_by_id_proto_list): + (JSC::Interpreter::cti_op_instanceof): + (JSC::Interpreter::cti_op_mul): + (JSC::Interpreter::cti_op_get_by_val): + (JSC::Interpreter::cti_op_get_by_val_byte_array): + (JSC::Interpreter::cti_op_sub): + (JSC::Interpreter::cti_op_put_by_val): + (JSC::Interpreter::cti_op_put_by_val_array): + (JSC::Interpreter::cti_op_put_by_val_byte_array): + (JSC::Interpreter::cti_op_negate): + (JSC::Interpreter::cti_op_div): + (JSC::Interpreter::cti_op_eq): + (JSC::Interpreter::cti_op_lshift): + (JSC::Interpreter::cti_op_bitand): + (JSC::Interpreter::cti_op_rshift): + (JSC::Interpreter::cti_op_bitnot): + (JSC::Interpreter::cti_op_neq): + (JSC::Interpreter::cti_op_urshift): + (JSC::Interpreter::cti_op_call_eval): + (JSC::Interpreter::cti_op_throw): + (JSC::Interpreter::cti_op_is_undefined): + (JSC::Interpreter::cti_op_stricteq): + (JSC::Interpreter::cti_op_nstricteq): + (JSC::Interpreter::cti_op_switch_imm): + (JSC::Interpreter::cti_vm_throw): + * interpreter/Interpreter.h: + (JSC::Interpreter::isJSArray): + (JSC::Interpreter::isJSString): + (JSC::Interpreter::isJSByteArray): + * jit/JIT.cpp: + (JSC::JIT::compileOpStrictEq): + (JSC::JIT::privateCompileMainPass): + * jit/JIT.h: + (JSC::JIT::isStrictEqCaseHandledInJITCode): + * jit/JITArithmetic.cpp: + (JSC::JIT::compileFastArith_op_rshift): + (JSC::JIT::compileFastArith_op_bitand): + (JSC::JIT::compileFastArith_op_mod): + * jit/JITCall.cpp: + (JSC::JIT::unlinkCall): + (JSC::JIT::compileOpCall): + * jit/JITInlineMethods.h: + (JSC::JIT::getConstantOperandImmediateInt): + (JSC::JIT::isOperandConstantImmediateInt): + * parser/Nodes.cpp: + (JSC::processClauseList): + * runtime/ArrayPrototype.cpp: + (JSC::arrayProtoFuncIndexOf): + (JSC::arrayProtoFuncLastIndexOf): + * runtime/BooleanPrototype.cpp: + (JSC::booleanProtoFuncValueOf): + * runtime/Collector.cpp: + (JSC::Heap::protect): + (JSC::Heap::unprotect): + (JSC::Heap::heap): + * runtime/JSByteArray.cpp: + (JSC::JSByteArray::getOwnPropertySlot): + * runtime/JSByteArray.h: + (JSC::JSByteArray::getIndex): + * runtime/JSCell.cpp: + * runtime/JSCell.h: + (JSC::JSValuePtr::isNumberCell): + (JSC::JSValuePtr::asCell): + (JSC::JSValuePtr::isNumber): + * runtime/JSGlobalObjectFunctions.cpp: + (JSC::globalFuncParseInt): + * runtime/JSImmediate.h: + (JSC::js0): + (JSC::jsImpossibleValue): + (JSC::JSValuePtr::toInt32): + (JSC::JSValuePtr::toUInt32): + (JSC::JSValuePtr::isCell): + (JSC::JSValuePtr::isInt32Fast): + (JSC::JSValuePtr::getInt32Fast): + (JSC::JSValuePtr::isUInt32Fast): + (JSC::JSValuePtr::getUInt32Fast): + (JSC::JSValuePtr::makeInt32Fast): + (JSC::JSValuePtr::areBothInt32Fast): + (JSC::JSFastMath::canDoFastBitwiseOperations): + (JSC::JSFastMath::equal): + (JSC::JSFastMath::notEqual): + (JSC::JSFastMath::andImmediateNumbers): + (JSC::JSFastMath::xorImmediateNumbers): + (JSC::JSFastMath::orImmediateNumbers): + (JSC::JSFastMath::canDoFastRshift): + (JSC::JSFastMath::canDoFastUrshift): + (JSC::JSFastMath::rightShiftImmediateNumbers): + (JSC::JSFastMath::canDoFastAdditiveOperations): + (JSC::JSFastMath::addImmediateNumbers): + (JSC::JSFastMath::subImmediateNumbers): + (JSC::JSFastMath::incImmediateNumber): + (JSC::JSFastMath::decImmediateNumber): + * runtime/JSNumberCell.h: + (JSC::JSValuePtr::asNumberCell): + (JSC::jsNumber): + (JSC::JSValuePtr::uncheckedGetNumber): + (JSC::JSNumberCell::toInt32): + (JSC::JSNumberCell::toUInt32): + (JSC::JSValuePtr::toJSNumber): + (JSC::JSValuePtr::getNumber): + (JSC::JSValuePtr::numberToInt32): + (JSC::JSValuePtr::numberToUInt32): + * runtime/JSObject.h: + (JSC::JSValuePtr::isObject): + (JSC::JSValuePtr::get): + (JSC::JSValuePtr::put): + * runtime/JSValue.cpp: + (JSC::JSValuePtr::toInteger): + (JSC::JSValuePtr::toIntegerPreserveNaN): + * runtime/JSValue.h: + * runtime/Operations.cpp: + (JSC::JSValuePtr::equalSlowCase): + (JSC::JSValuePtr::strictEqualSlowCase): + * runtime/Operations.h: + (JSC::JSValuePtr::equal): + (JSC::JSValuePtr::equalSlowCaseInline): + (JSC::JSValuePtr::strictEqual): + (JSC::JSValuePtr::strictEqualSlowCaseInline): + * runtime/Protect.h: + (JSC::gcProtect): + (JSC::gcUnprotect): + * runtime/StringPrototype.cpp: + (JSC::stringProtoFuncCharAt): + (JSC::stringProtoFuncCharCodeAt): + * runtime/Structure.cpp: + (JSC::Structure::createCachedPrototypeChain): + +2009-01-12 Kevin Ollivier - (r39682-r39736) JSFunFuzz: crash on "(function(){({ x2: x }), })()" - + Since date time functions have moved here, now the wx port JSC + needs to depend on wx. - Automatic semicolon insertion was resulting in this being accepted in the initial - nodeless parsing, but subsequent reparsing for code generation would fail, leading - to a crash. The solution is to ensure that reparsing a function performs parsing - in the same state as the initial parse. We do this by modifying the saved source - ranges to include rather than exclude the opening and closing braces. + * jscore.bkl: - * bytecode/CodeBlock.cpp: - (JSC::CodeBlock::reparseForExceptionInfoIfNecessary): add an assertion for successful recompile - * parser/Lexer.h: - (JSC::Lexer::sourceCode): include rather than exclude braces. - * parser/Nodes.h: - (JSC::FunctionBodyNode::toSourceString): No need to append braces anymore. +2009-01-11 David Levin -2009-01-21 Alexey Proskuryakov + Reviewed by Darin Adler. - Suggested by Oliver Hunt. Reviewed by Oliver Hunt. + https://bugs.webkit.org/show_bug.cgi?id=23245 - https://bugs.webkit.org/show_bug.cgi?id=23456 - Function argument names leak + Add initializeThreading to key places in JS API to ensure that + UString is properly initialized. - * parser/Nodes.cpp: (JSC::FunctionBodyNode::~FunctionBodyNode): Destruct parameter names. + * API/JSContextRef.cpp: + (JSContextGroupCreate): + (JSGlobalContextCreate): + * API/JSObjectRef.cpp: + (JSClassCreate): + * API/JSStringRef.cpp: + (JSStringCreateWithCharacters): + (JSStringCreateWithUTF8CString): + * API/JSStringRefCF.cpp: + (JSStringCreateWithCFString): -2009-01-22 Beth Dakin +2009-01-11 David Levin - Reviewed by Sam Weinig. + Reviewed by Darin Adler. - Fix for https://bugs.webkit.org/show_bug.cgi?id=23461 LayoutTests/ - fast/js/numeric-conversion.html is broken, and corresponding - + https://bugs.webkit.org/show_bug.cgi?id=23175 - The basic problem here is that parseInt(Infinity) should be NaN, - but we were returning 0. NaN matches Safari 3.2.1 and Firefox. + Separate out BaseString information from UString::Rep and make all baseString access go through + a member function, so that it may be used for something else (in the future) in the BaseString + case. - * runtime/JSGlobalObjectFunctions.cpp: - (JSC::globalFuncParseInt): + * runtime/SmallStrings.cpp: + (JSC::SmallStringsStorage::rep): + (JSC::SmallStringsStorage::SmallStringsStorage): + (JSC::SmallStrings::SmallStrings): + (JSC::SmallStrings::mark): + Adjust to account for the changes in UString and put the UString in place in + SmallStringsStorage to aid in locality of reference among the UChar[] and UString::Rep's. -2009-01-13 Beth Dakin + * runtime/SmallStrings.h: + * runtime/UString.cpp: + (JSC::initializeStaticBaseString): + (JSC::initializeUString): + (JSC::UString::Rep::create): + (JSC::UString::Rep::destroy): + (JSC::UString::Rep::checkConsistency): + (JSC::expandCapacity): + (JSC::UString::expandPreCapacity): + (JSC::concatenate): + (JSC::UString::append): + (JSC::UString::operator=): + * runtime/UString.h: + (JSC::UString::Rep::baseIsSelf): + (JSC::UString::Rep::setBaseString): + (JSC::UString::Rep::baseString): + (JSC::UString::Rep::): + (JSC::UString::Rep::null): + (JSC::UString::Rep::empty): + (JSC::UString::Rep::data): + (JSC::UString::cost): + Separate out the items out used by base strings from those used in Rep's that only + point to base strings. (This potentially saves 24 bytes per Rep.) + +2009-01-11 Darin Adler - Reviewed by Darin Adler and Oliver Hunt. + Reviewed by Dan Bernstein. - REGRESSION: Business widget's front side - fails to render correctly when flipping widget + Bug 23239: improve handling of unused arguments in JavaScriptCore + https://bugs.webkit.org/show_bug.cgi?id=23239 + + * runtime/DatePrototype.cpp: Moved LocaleDateTimeFormat enum outside #if + so we can use this on all platforms. Changed valueOf to share the same + function with getTime, since the contents of the two are identical. Removed + a FIXME since the idea isn't really specific enough or helpful enough to + need to sit here in the source code. + (JSC::formatLocaleDate): Changed the Mac version of this function to take + the same arguments as the non-Mac version so the caller doesn't have to + special-case the two platforms. Also made the formatString array be const; + before the characters were, but the array was a modifiable global variable. + (JSC::dateProtoFuncToLocaleString): Changed to call the new unified + version of formatLocaleDate and remove the ifdef. + (JSC::dateProtoFuncToLocaleDateString): Ditto. + (JSC::dateProtoFuncToLocaleTimeString): Ditto. - The problem here is that parseInt was parsing NaN as 0. This patch - corrects that by parsing NaN as NaN. This matches our old behavior - and Firefox. + * runtime/JSNotAnObject.cpp: + (JSC::JSNotAnObject::toObject): Use the new ASSERT_UNUSED instead of the + old UNUSED_PARAM. - * runtime/JSGlobalObjectFunctions.cpp: - (JSC::globalFuncParseInt): + * runtime/RegExp.cpp: + (JSC::RegExp::RegExp): Changed to only use UNUSED_PARAM when the parameter + is actually unused. -2009-02-13 Adam Treat + * wtf/TCSystemAlloc.cpp: + (TCMalloc_SystemRelease): Changed to only use UNUSED_PARAM when the parameter + is actually unused. + (TCMalloc_SystemCommit): Changed to omit the argument names instead of using + UNUSED_PARAM. - Reviewed by George Staikos. +2009-01-11 Oliver Hunt - https://bugs.webkit.org/show_bug.cgi?id=23960 - Crash Fix. + Reviewed by NOBODY (Build fix). - Don't depend on 'initializeThreading()' to come before a call to 'isMainThread()' - as QtWebKit only calls 'initializeThreading()' during QWebPage construction. + Fix the build (whoops) - A client app may well make a call to QWebSettings::iconForUrl() for instance - before creating a QWebPage and that call to QWebSettings triggers an - ASSERT(isMainThread()) deep within WebCore. + * interpreter/Interpreter.cpp: + (JSC::Interpreter::cti_op_get_by_val): - * wtf/ThreadingQt.cpp: - (WTF::isMainThread): +2009-01-11 Oliver Hunt -2009-02-12 Simon Hausmann + Reviewed by Darin Adler and Anders Carlsson - Rubber-stamped by Lars. + Bug 23128: get/put_by_val need to respecialise in the face of ByteArray - Re-enable the JIT in the Qt build with -fno-stack-protector on Linux. + Restructure the code slightly, and add comments per Darin's suggestions + + * interpreter/Interpreter.cpp: + (JSC::Interpreter::cti_op_get_by_val): + (JSC::Interpreter::cti_op_get_by_val_byte_array): + (JSC::Interpreter::cti_op_put_by_val): + (JSC::Interpreter::cti_op_put_by_val_byte_array): +2009-01-11 Oliver Hunt + + Reviewed by Anders Carlsson. + + Whoops, I accidentally removed an exception check from fast the + fast path for string indexing when i originally landed the + byte array logic. + + * interpreter/Interpreter.cpp: + (JSC::Interpreter::cti_op_get_by_val): + +2009-01-11 Oliver Hunt + + Reviewed by Anders Carlsson. + + Bug 23128: get/put_by_val need to respecialise in the face of ByteArray + + + Fairly simple patch, add specialised versions of cti_op_get/put_by_val + that assume ByteArray, thus avoiding a few branches in the case of bytearray + manipulation. + + No effect on SunSpider. 15% win on the original testcase. + + * interpreter/Interpreter.cpp: + (JSC::Interpreter::cti_op_get_by_val): + (JSC::Interpreter::cti_op_get_by_val_byte_array): + (JSC::Interpreter::cti_op_put_by_val): + (JSC::Interpreter::cti_op_put_by_val_byte_array): + * interpreter/Interpreter.h: + +2009-01-11 Alexey Proskuryakov + + Try to fix Windows build. + + * wtf/CurrentTime.cpp: Added a definition of msPerSecond (previously, this code was in + DateMath.cpp, with constant definition in DateTime.h) + +2009-01-11 Alexey Proskuryakov + + Try to fix Windows build. + + * wtf/CurrentTime.cpp: Include and , as MSDN says to. + +2009-01-11 Dmitry Titov + + Reviewed by Darin Adler. + + https://bugs.webkit.org/show_bug.cgi?id=23207 + Moved currentTime() to from WebCore to WTF. + + * GNUmakefile.am: + * JavaScriptCore.exp: added export for WTF::currentTime() * JavaScriptCore.pri: + * JavaScriptCore.scons: + * JavaScriptCore.vcproj/WTF/WTF.vcproj: + * JavaScriptCore.xcodeproj/project.pbxproj: + * JavaScriptCoreSources.bkl: + * runtime/DateMath.cpp: + (JSC::getCurrentUTCTimeWithMicroseconds): This function had another implementation of currentTime(), essentially. Now uses WTF version. + * wtf/CurrentTime.cpp: Added. + (WTF::currentTime): + (WTF::highResUpTime): + (WTF::lowResUTCTime): + (WTF::qpcAvailable): + * wtf/CurrentTime.h: Added. -2009-02-03 Simon Hausmann +2009-01-09 Gavin Barraclough - Reviewed by Tor Arne Vestbø. + Reviewed by Oliver Hunt. - Added accessor for JSByteArray storage. + Stage two of converting JSValue from a pointer to a class type. + Remove the class JSValue. The functionallity has been transitioned + into the wrapper class type JSValuePtr. - * runtime/JSByteArray.h: - (JSC::JSByteArray::storage): + The last stage will be to rename JSValuePtr to JSValue, remove the + overloaded -> operator, and switch operations on JSValuePtrs from + using '->' to use '.' instead. -2009-01-30 Laszlo Gombos + * API/APICast.h: + * JavaScriptCore.exp: + * runtime/JSCell.h: + (JSC::asCell): + (JSC::JSValuePtr::asCell): + (JSC::JSValuePtr::isNumber): + (JSC::JSValuePtr::isString): + (JSC::JSValuePtr::isGetterSetter): + (JSC::JSValuePtr::isObject): + (JSC::JSValuePtr::getNumber): + (JSC::JSValuePtr::getString): + (JSC::JSValuePtr::getObject): + (JSC::JSValuePtr::getCallData): + (JSC::JSValuePtr::getConstructData): + (JSC::JSValuePtr::getUInt32): + (JSC::JSValuePtr::getTruncatedInt32): + (JSC::JSValuePtr::getTruncatedUInt32): + (JSC::JSValuePtr::mark): + (JSC::JSValuePtr::marked): + (JSC::JSValuePtr::toPrimitive): + (JSC::JSValuePtr::getPrimitiveNumber): + (JSC::JSValuePtr::toBoolean): + (JSC::JSValuePtr::toNumber): + (JSC::JSValuePtr::toString): + (JSC::JSValuePtr::toObject): + (JSC::JSValuePtr::toThisObject): + (JSC::JSValuePtr::needsThisConversion): + (JSC::JSValuePtr::toThisString): + (JSC::JSValuePtr::getJSNumber): + * runtime/JSImmediate.h: + (JSC::JSValuePtr::isUndefined): + (JSC::JSValuePtr::isNull): + (JSC::JSValuePtr::isUndefinedOrNull): + (JSC::JSValuePtr::isBoolean): + (JSC::JSValuePtr::getBoolean): + (JSC::JSValuePtr::toInt32): + (JSC::JSValuePtr::toUInt32): + * runtime/JSNumberCell.h: + (JSC::JSValuePtr::uncheckedGetNumber): + (JSC::JSValuePtr::toJSNumber): + * runtime/JSObject.h: + (JSC::JSValuePtr::isObject): + (JSC::JSValuePtr::get): + (JSC::JSValuePtr::put): + * runtime/JSString.h: + (JSC::JSValuePtr::toThisJSString): + * runtime/JSValue.cpp: + (JSC::JSValuePtr::toInteger): + (JSC::JSValuePtr::toIntegerPreserveNaN): + (JSC::JSValuePtr::toInt32SlowCase): + (JSC::JSValuePtr::toUInt32SlowCase): + * runtime/JSValue.h: + (JSC::JSValuePtr::makeImmediate): + (JSC::JSValuePtr::immediateValue): + (JSC::JSValuePtr::JSValuePtr): + (JSC::JSValuePtr::operator->): + (JSC::JSValuePtr::operator bool): + (JSC::JSValuePtr::operator==): + (JSC::JSValuePtr::operator!=): + (JSC::JSValuePtr::encode): + (JSC::JSValuePtr::decode): + (JSC::JSValuePtr::toFloat): + (JSC::JSValuePtr::asValue): + (JSC::operator==): + (JSC::operator!=): - Reviewed by Simon Hausmann. +2009-01-09 David Levin - Bug 23580: GNU mode RVCT compilation support - + Reviewed by Oliver Hunt. - * pcre/pcre_exec.cpp: Use COMPILER(GCC) instead of __GNUC__. - * wtf/FastMalloc.cpp: Ditto. - (WTF::TCMallocStats::): - * wtf/Platform.h: Don't define COMPILER(GCC) with RVCT --gnu. + https://bugs.webkit.org/show_bug.cgi?id=23175 + + Adjustment to previous patch. Remove call to initilizeThreading from JSGlobalCreate + and fix jsc.cpp instead. + + * jsc.cpp: + (main): + (jscmain): + * runtime/JSGlobalData.cpp: + (JSC::JSGlobalData::create): -2008-11-28 George Staikos +2009-01-09 Sam Weinig - Reviewed by NOBODY (OOPS!). + Roll r39720 back in with a working interpreted mode. - Implement currentThreadStackBase() on Windows CE. +2009-01-09 David Levin - Coding style fixes by Joerg Bornemann . + Reviewed by Oliver Hunt. - * runtime/Collector.cpp: - (JSC::numberOfWritableBytes): - (JSC::systemPageSize): - (JSC::currentThreadStackBaseWinCE): - (JSC::currentThreadStackBase): + https://bugs.webkit.org/show_bug.cgi?id=23175 + + Added a template to make the pointer and flags combination + in UString more readable and less error prone. + + * GNUmakefile.am: + * JavaScriptCore.exp: + * JavaScriptCore.vcproj/WTF/WTF.vcproj: + * JavaScriptCore.xcodeproj/project.pbxproj: + Added PtrAndFlags.h (and sorted the xcode project file). + + * runtime/Identifier.cpp: + (JSC::Identifier::add): + (JSC::Identifier::addSlowCase): + * runtime/InitializeThreading.cpp: + (JSC::initializeThreadingOnce): + Made the init threading initialize the UString globals. Before + these were initilized using {} but that became harder due to the + addition of this tempalte class. + + * runtime/JSGlobalData.cpp: + (JSC::JSGlobalData::create): + * runtime/PropertyNameArray.cpp: + (JSC::PropertyNameArray::add): + * runtime/UString.cpp: + (JSC::initializeStaticBaseString): + (JSC::initializeUString): + (JSC::UString::Rep::create): + (JSC::UString::Rep::createFromUTF8): + (JSC::createRep): + (JSC::UString::UString): + (JSC::concatenate): + (JSC::UString::operator=): + (JSC::UString::makeNull): + (JSC::UString::nullRep): + * runtime/UString.h: + (JSC::UString::Rep::identifierTable): + (JSC::UString::Rep::setIdentifierTable): + (JSC::UString::Rep::isStatic): + (JSC::UString::Rep::setStatic): + (JSC::UString::Rep::): + (JSC::UString::Rep::null): + (JSC::UString::Rep::empty): + (JSC::UString::isNull): + (JSC::UString::null): + (JSC::UString::UString): + + * wtf/PtrAndFlags.h: Added. + (WTF::PtrAndFlags::PtrAndFlags): + (WTF::PtrAndFlags::isFlagSet): + (WTF::PtrAndFlags::setFlag): + (WTF::PtrAndFlags::clearFlag): + (WTF::PtrAndFlags::get): + (WTF::PtrAndFlags::set): + A simple way to layer together a pointer and 2 flags. It relies on the pointer being 4 byte aligned, + which should happen for all allocators (due to aligning pointers, int's, etc. on 4 byte boundaries). 2009-01-08 Gavin Barraclough - Reviewed by Oliver Hunt. + Reviewed by -O-l-i-v-e-r- -H-u-n-t- Sam Weinig (sorry, Sam!). Encode immediates in the low word of JSValuePtrs, on x86-64. diff --git a/src/3rdparty/webkit/JavaScriptCore/DerivedSources.make b/src/3rdparty/webkit/JavaScriptCore/DerivedSources.make index 865ba7c..4b33682 100644 --- a/src/3rdparty/webkit/JavaScriptCore/DerivedSources.make +++ b/src/3rdparty/webkit/JavaScriptCore/DerivedSources.make @@ -1,4 +1,4 @@ -# Copyright (C) 2006, 2007, 2008 2009 Apple Inc. All rights reserved. +# Copyright (C) 2006, 2007, 2008, 2009 Apple Inc. All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions @@ -46,7 +46,7 @@ all : \ RegExpConstructor.lut.h \ RegExpObject.lut.h \ StringPrototype.lut.h \ - $(JavaScriptCore)/docs/bytecode.html \ + docs/bytecode.html \ # # lookup tables for classes @@ -71,5 +71,5 @@ Grammar.cpp: Grammar.y chartables.c : dftables $^ $@ -$(JavaScriptCore)/docs/bytecode.html: make-bytecode-docs.pl Interpreter.cpp +docs/bytecode.html: make-bytecode-docs.pl Interpreter.cpp perl $^ $@ diff --git a/src/3rdparty/webkit/JavaScriptCore/Info.plist b/src/3rdparty/webkit/JavaScriptCore/Info.plist index 55537af..17949b0 100644 --- a/src/3rdparty/webkit/JavaScriptCore/Info.plist +++ b/src/3rdparty/webkit/JavaScriptCore/Info.plist @@ -7,7 +7,7 @@ CFBundleExecutable ${PRODUCT_NAME} CFBundleGetInfoString - ${BUNDLE_VERSION}, Copyright 2003-2007 Apple Inc.; Copyright 1999-2001 Harri Porten <porten@kde.org>; Copyright 2001 Peter Kelly <pmk@post.com>; Copyright 1997-2005 University of Cambridge; Copyright 1991, 2000, 2001 by Lucent Technologies. + ${BUNDLE_VERSION}, Copyright 2003-2009 Apple Inc.; Copyright 1999-2001 Harri Porten <porten@kde.org>; Copyright 2001 Peter Kelly <pmk@post.com>; Copyright 1997-2005 University of Cambridge; Copyright 1991, 2000, 2001 by Lucent Technologies. CFBundleIdentifier com.apple.${PRODUCT_NAME} CFBundleInfoDictionaryVersion diff --git a/src/3rdparty/webkit/JavaScriptCore/JavaScriptCore.order b/src/3rdparty/webkit/JavaScriptCore/JavaScriptCore.order index 9f7cb30..bb56e98 100644 --- a/src/3rdparty/webkit/JavaScriptCore/JavaScriptCore.order +++ b/src/3rdparty/webkit/JavaScriptCore/JavaScriptCore.order @@ -1,1526 +1,1965 @@ __ZN3WTF10fastMallocEm +__ZN3WTF10fastMallocILb1EEEPvm __ZN3WTF20TCMalloc_ThreadCache10InitModuleEv -__ZN3WTF15InitSizeClassesEv +__ZN3WTFL15InitSizeClassesEv __Z20TCMalloc_SystemAllocmPmm -__ZN3WTF17TCMalloc_PageHeap4initEv +__ZN3WTFL13MetaDataAllocEm __ZN3WTF20TCMalloc_ThreadCache22CreateCacheIfNecessaryEv __ZN3WTF25TCMalloc_Central_FreeList11RemoveRangeEPPvS2_Pi __ZN3WTF25TCMalloc_Central_FreeList18FetchFromSpansSafeEv __ZN3WTF17TCMalloc_PageHeap10AllocLargeEm __ZN3WTF17TCMalloc_PageHeap8GrowHeapEm -__ZN3WTF13MetaDataAllocEm -__ZN3WTF17TCMalloc_PageHeap19IncrementalScavengeEm +__ZN3WTF19initializeThreadingEv +__ZN3WTF20initializeMainThreadEv +__ZN3WTF5MutexC1Ev +__ZN3WTF28initializeMainThreadPlatformEv +__ZN3WTF36lockAtomicallyInitializedStaticMutexEv __ZN3WTF8fastFreeEPv +__ZN3WTF38unlockAtomicallyInitializedStaticMutexEv +__ZN3JSC19initializeThreadingEv +__ZN3JSCL23initializeThreadingOnceEv +__ZN3JSC17initializeUStringEv +__ZN3JSC12initDateMathEv +__ZN3WTF11currentTimeEv +__ZN3WTF15ThreadConditionC1Ev +__ZN3WTF5Mutex4lockEv +__ZN3WTF5Mutex6unlockEv +__ZN3WTF12createThreadEPFPvS0_ES0_PKc +__ZN3WTF20createThreadInternalEPFPvS0_ES0_PKc +__ZN3WTFL35establishIdentifierForPthreadHandleERP17_opaque_pthread_t +__ZN3WTF9HashTableIjSt4pairIjP17_opaque_pthread_tENS_18PairFirstExtractorIS4_EENS_7IntHashIjEENS_14PairHashTraitsINS_10HashTrai +__ZN3WTFL16threadEntryPointEPv __ZN3WTF16fastZeroedMallocEm +__ZN3WTF21setThreadNameInternalEPKc +__ZN3WTF5MutexD1Ev +__ZN3WTF25TCMalloc_Central_FreeList11InsertRangeEPvS1_i +__ZN3WTF25TCMalloc_Central_FreeList18ReleaseListToSpansEPv +__ZN3WTF12isMainThreadEv __ZN3WTF14FastMallocZone4sizeEP14_malloc_zone_tPKv -__ZN3KJS8Bindings10RootObject19setCreateRootObjectEPFN3WTF10PassRefPtrIS1_EEPvE -__ZN3KJS8Bindings8Instance21setDidExecuteFunctionEPFvPNS_9ExecStateEPNS_8JSObjectEE -_kjs_strtod -__Z15jsRegExpCompilePKti24JSRegExpIgnoreCaseOption23JSRegExpMultilineOptionPjPPKc -__Z30calculateCompiledPatternLengthPKti24JSRegExpIgnoreCaseOptionR11CompileDataR9ErrorCode -__Z11checkEscapePPKtS0_P9ErrorCodeib -__Z13compileBranchiPiPPhPPKtS3_P9ErrorCodeS_S_R11CompileData -__Z15jsRegExpExecutePK8JSRegExpPKtiiPii +__ZN3WTF13currentThreadEv +__ZN3WTF16callOnMainThreadEPFvPvES0_ +__ZN3WTF5DequeINS_19FunctionWithContextEE14expandCapacityEv +__ZN3WTF37scheduleDispatchFunctionsOnMainThreadEv +__ZN3WTF15ThreadCondition4waitERNS_5MutexE +__ZN3JSC8DebuggerC2Ev +__ZN3WTF6strtodEPKcPPc +__ZN3WTF15ThreadCondition6signalEv +__ZN3WTF15ThreadCondition9timedWaitERNS_5MutexEd +__ZN3WTF15ThreadCondition9broadcastEv +-[WTFMainThreadCaller call] +__ZN3WTF31dispatchFunctionsFromMainThreadEv +__ZN3WTF14FastMallocZone9forceLockEP14_malloc_zone_t __ZN3WTF11fastReallocEPvm -__ZN3KJS20createDidLockJSMutexEv -__ZN3KJS9Collector14registerThreadEv -__ZN3KJS29initializeRegisteredThreadKeyEv -__ZN3KJS15SavedPropertiesC1Ev -__ZN3KJS6JSCellnwEm -__ZN3KJS9Collector12heapAllocateILNS0_8HeapTypeE0EEEPvm -__ZN3KJS15GlobalExecStateC1EPNS_14JSGlobalObjectE -__ZN3KJS17CommonIdentifiers6sharedEv -__ZN3KJS17CommonIdentifiersC2Ev -__ZN3KJS10IdentifierC1EPKc -__ZN3KJS10Identifier3addEPKc -__ZN3WTF7HashSetIPN3KJS7UString3RepENS_7StrHashIS4_EENS_10HashTraitsIS4_EEE3addINS1_11UCharBufferENS1_21UCharBufferTranslatorEEESt4pairINS_24HashTableIteratorAdapterINS_9HashTableIS4_S4_NS_17IdentityExtractorIS4_EES6_S8_S8_EES4_EEbERKT_ -__ZN3WTF9HashTableIPN3KJS7UString3RepES4_NS_17IdentityExtractorIS4_EENS_7StrHashIS4_EENS_10HashTraitsIS4_EESA_E6rehashEi -__ZN3KJS14JSGlobalObject4initEv -__ZN3KJS14JSGlobalObject5resetEPNS_7JSValueE -__ZN3KJS11PropertyMap5clearEv -__ZN3KJS17FunctionPrototypeC2EPNS_9ExecStateE -__ZN3KJS11PropertyMap3putERKNS_10IdentifierEPNS_7JSValueEjb -__ZN3KJS17PrototypeFunctionC1EPNS_9ExecStateEPNS_17FunctionPrototypeEiRKNS_10IdentifierEPFPNS_7JSValueES2_PNS_8JSObjectERKNS_4ListEE -__ZN3KJS19InternalFunctionImpC2EPNS_17FunctionPrototypeERKNS_10IdentifierE -__ZN3KJS11PropertyMap11createTableEv -__ZN3KJS15ObjectPrototypeC2EPNS_9ExecStateEPNS_17FunctionPrototypeE -__ZN3KJS11PropertyMap6rehashEj -__ZN3KJS14ArrayPrototypeC1EPNS_9ExecStateEPNS_15ObjectPrototypeE -__ZN3KJS13ArrayInstanceC2EPNS_8JSObjectEj -__ZN3KJS15StringPrototypeC2EPNS_9ExecStateEPNS_15ObjectPrototypeE -__ZN3KJS8jsStringEPKc -__ZN3KJS16BooleanPrototypeC2EPNS_9ExecStateEPNS_15ObjectPrototypeEPNS_17FunctionPrototypeE -__ZN3KJS15NumberPrototypeC2EPNS_9ExecStateEPNS_15ObjectPrototypeEPNS_17FunctionPrototypeE -__ZN3KJS13DatePrototypeC1EPNS_9ExecStateEPNS_15ObjectPrototypeE -__ZN3KJS12jsNumberCellEd -__ZN3KJS9Collector12heapAllocateILNS0_8HeapTypeE1EEEPvm -__ZN3KJS15RegExpPrototypeC2EPNS_9ExecStateEPNS_15ObjectPrototypeEPNS_17FunctionPrototypeE -__ZN3WTF9HashTableIPN3KJS7UString3RepES4_NS_17IdentityExtractorIS4_EENS_7StrHashIS4_EENS_10HashTraitsIS4_EESA_E4findIS4_NS_22IdentityHashTranslatorIS4_S4_S8_EEEENS_17HashTableIteratorIS4_S4_S6_S8_SA_SA_EERKT_ -__ZN3KJS14ErrorPrototypeC2EPNS_9ExecStateEPNS_15ObjectPrototypeEPNS_17FunctionPrototypeE -__ZN3KJS7UStringC1EPKc -__ZN3KJS20NativeErrorPrototypeC1EPNS_9ExecStateEPNS_14ErrorPrototypeERKNS_7UStringES7_ -__ZN3KJS8jsStringERKNS_7UStringE -__ZN3KJS15ObjectObjectImpC2EPNS_9ExecStateEPNS_15ObjectPrototypeEPNS_17FunctionPrototypeE -__ZN3KJS17FunctionObjectImpC2EPNS_9ExecStateEPNS_17FunctionPrototypeE -__ZNK3KJS19InternalFunctionImp9classInfoEv -__ZN3KJS14ArrayObjectImpC2EPNS_9ExecStateEPNS_17FunctionPrototypeEPNS_14ArrayPrototypeE -__ZNK3KJS14ArrayPrototype9classInfoEv -__ZN3KJS15StringObjectImpC2EPNS_9ExecStateEPNS_17FunctionPrototypeEPNS_15StringPrototypeE -__ZNK3KJS15StringPrototype9classInfoEv -__ZN3KJS19StringObjectFuncImpC2EPNS_9ExecStateEPNS_17FunctionPrototypeERKNS_10IdentifierE -__ZN3KJS16BooleanObjectImpC2EPNS_9ExecStateEPNS_17FunctionPrototypeEPNS_16BooleanPrototypeE -__ZNK3KJS15BooleanInstance9classInfoEv -__ZN3KJS15NumberObjectImpC2EPNS_9ExecStateEPNS_17FunctionPrototypeEPNS_15NumberPrototypeE -__ZNK3KJS14NumberInstance9classInfoEv -__ZN3KJS13DateObjectImpC2EPNS_9ExecStateEPNS_17FunctionPrototypeEPNS_13DatePrototypeE -__ZNK3KJS13DatePrototype9classInfoEv -__ZN3KJS15RegExpObjectImpC2EPNS_9ExecStateEPNS_17FunctionPrototypeEPNS_15RegExpPrototypeE -__ZN3KJS14ErrorObjectImpC2EPNS_9ExecStateEPNS_17FunctionPrototypeEPNS_14ErrorPrototypeE -__ZNK3KJS13ErrorInstance9classInfoEv -__ZN3KJS14NativeErrorImpC1EPNS_9ExecStateEPNS_17FunctionPrototypeEPNS_20NativeErrorPrototypeE -__ZNK3KJS11PropertyMap3getERKNS_10IdentifierE -__ZNK3KJS9StringImp4typeEv -__ZN3KJS10Identifier11addSlowCaseEPNS_7UString3RepE -__ZN3WTF9HashTableIPN3KJS7UString3RepES4_NS_17IdentityExtractorIS4_EENS_7StrHashIS4_EENS_10HashTraitsIS4_EESA_E3addIS4_S4_NS_17HashSetTranslatorILb1ES4_SA_SA_S8_EEEESt4pairINS_17HashTableIteratorIS4_S4_S6_S8_SA_SA_EEbERKT_RKT0_ -__ZN3KJS8JSObject9putDirectERKNS_10IdentifierEPNS_7JSValueEi -__ZN3KJS13MathObjectImpC1EPNS_9ExecStateEPNS_15ObjectPrototypeE -__ZN3KJS8JSObject17putDirectFunctionEPNS_19InternalFunctionImpEi -__ZNK3KJS8JSObject4typeEv -__ZN3KJS9Collector23collectOnMainThreadOnlyEPNS_7JSValueE -__ZN3KJS9Collector7protectEPNS_7JSValueE -__ZN3WTF9HashTableIiSt4pairIiiENS_18PairFirstExtractorIS2_EENS_7IntHashIiEENS_14PairHashTraitsINS_10HashTraitsIiEES9_EES9_E3addIPN3KJS8JSObjectEjNS_17HashMapTranslatorILb1ES1_ISF_jENS_18PairBaseHashTraitsINS8_ISF_EENS8_IjEEEESA_NS_7PtrHashISF_EEEEEES1_INS_17HashTableIteratorIiS2_S4_S6_SA_S9_EEbERKT_RKT0_ -__ZN3WTF9HashTableIiSt4pairIiiENS_18PairFirstExtractorIS2_EENS_7IntHashIiEENS_14PairHashTraitsINS_10HashTraitsIiEES9_EES9_E6rehashEi -__ZN3KJS6JSCell9getObjectEv -__ZN3KJS8Bindings10RootObject6createEPKvPNS_14JSGlobalObjectE -__ZN3KJS8Bindings10RootObjectC2EPKvPNS_14JSGlobalObjectE -__ZN3WTF9HashTableIiiNS_17IdentityExtractorIiEENS_7IntHashIiEENS_10HashTraitsIiEES6_E6rehashEi -__ZN3KJS8Bindings10RootObject9gcProtectEPNS_8JSObjectE -__ZNK3KJS14JSGlobalObject12saveBuiltinsERNS_13SavedBuiltinsE -__ZN3KJS21SavedBuiltinsInternalC2Ev -__ZNK3KJS11PropertyMap4saveERNS_15SavedPropertiesE -__ZN3KJS30comparePropertyMapEntryIndicesEPKvS1_ -__ZN3WTF9HashTableIiSt4pairIiiENS_18PairFirstExtractorIS2_EENS_7IntHashIiEENS_14PairHashTraitsINS_10HashTraitsIiEES9_EES9_E4findIiNS_22IdentityHashTranslatorIiS2_S6_EEEENS_17HashTableIteratorIiS2_S4_S6_SA_S9_EERKT_ -__ZNK3KJS16JSVariableObject16saveLocalStorageERNS_15SavedPropertiesE -__ZN3KJS13ActivationImpD0Ev -__ZN3KJS8JSObject12removeDirectERKNS_10IdentifierE -__ZN3KJS11PropertyMap6removeERKNS_10IdentifierE -__ZN3KJS7UString3Rep7destroyEv -__ZN3KJS10Identifier6removeEPNS_7UString3RepE -__ZN3KJS8Bindings10RootObject10invalidateEv -__ZN3KJS9Collector9unprotectEPNS_7JSValueE -__ZN3WTF9HashTableIiiNS_17IdentityExtractorIiEENS_7IntHashIiEENS_10HashTraitsIiEES6_E4findIiNS_22IdentityHashTranslatorIiiS4_EEEENS_17HashTableIteratorIiiS2_S4_S6_S6_EERKT_ -__ZN3KJS8Bindings10RootObjectD1Ev -__ZN3KJS14JSGlobalObject10globalExecEv -__ZN3KJS14JSGlobalObject17startTimeoutCheckEv -__ZN3KJS7UStringC1EPKNS_5UCharEi -__ZN3KJS11Interpreter8evaluateEPNS_9ExecStateERKNS_7UStringEiPKNS_5UCharEiPNS_7JSValueE -__ZN3KJS6ParserC2Ev -__ZN3KJS6Parser5parseINS_11ProgramNodeEEEN3WTF10PassRefPtrIT_EERKNS_7UStringEiPKNS_5UCharEjPiSD_PS7_ -__ZN3KJS6Parser5parseEiPKNS_5UCharEjPiS4_PNS_7UStringE -__ZN3KJS7UStringaSEPKc -__ZN3KJS5LexerC2Ev -__ZN3WTF6VectorIcLm0EE15reserveCapacityEm -__ZN3WTF6VectorIN3KJS5UCharELm0EE15reserveCapacityEm -__ZN3WTF6VectorIPN3KJS7UStringELm0EE15reserveCapacityEm -__ZN3WTF6VectorIPN3KJS10IdentifierELm0EE15reserveCapacityEm -__Z10kjsyyparsev -__Z8kjsyylexv -__ZN3KJS5Lexer3lexEv -__ZN3KJS5Lexer14makeIdentifierERKN3WTF6VectorINS_5UCharELm0EEE -__ZN3KJS10Identifier3addEPKNS_5UCharEi -__ZN3KJS5Lexer15matchPunctuatorEiiii -__ZN3KJS7UStringC2ERKN3WTF6VectorINS_5UCharELm0EEE -__ZN3KJS14ExpressionNodeC2ENS_6JSTypeE -__ZN3KJS16ParserRefCountedC2Ev -__ZN3KJS7UStringC1ERKS0_ -__ZN3KJS4NodeC2Ev -__ZN3KJS10IdentifierC1ERKS0_ -__ZN3WTF6RefPtrIN3KJS14ExpressionNodeEEC1EPS2_ -__ZN3KJS16ParserRefCounted3refEv -__ZN3WTF6RefPtrIN3KJS12PropertyNodeEEC1EPS2_ -__ZN3WTF10ListRefPtrIN3KJS16PropertyListNodeEEC1Ev -__ZN3KJS11ResolveNodeC1ERKNS_10IdentifierE -__ZN3KJS14ExpressionNodeC2Ev -__ZN3WTF10ListRefPtrIN3KJS16ArgumentListNodeEEC1Ev -__Z20makeFunctionCallNodePN3KJS14ExpressionNodeEPNS_13ArgumentsNodeE -__ZNK3KJS15DotAccessorNode10isLocationEv -__ZNK3KJS14ExpressionNode13isResolveNodeEv -__ZNK3KJS14ExpressionNode21isBracketAccessorNodeEv -__Z14makeNumberNoded -__Z14makeNegateNodePN3KJS14ExpressionNodeE -__ZNK3KJS10NumberNode8isNumberEv -__ZN3KJS19ImmediateNumberNode8setValueEd -__ZN3KJS5lexerEv -__ZN3KJS5Lexer10scanRegExpEv -__ZN3KJS6RegExp6createERKNS_7UStringES3_ -__ZNK3KJS7UString4findENS_5UCharEi -__ZN3KJS17ObjectLiteralNodeC1EPNS_16PropertyListNodeE -__Z14compileBracketiPiPPhPPKtS3_P9ErrorCodeiS_S_R11CompileData -__ZN3KJS16FunctionBodyNode6createEPNS_14SourceElementsEPN3WTF6VectorISt4pairINS_10IdentifierEjELm16EEEPNS4_IPNS_12FuncDeclNodeELm16EEE -__ZN3KJS16FunctionBodyNodeC2EPNS_14SourceElementsEPN3WTF6VectorISt4pairINS_10IdentifierEjELm16EEEPNS4_IPNS_12FuncDeclNodeELm16EEE -__ZN3KJS9ScopeNodeC2EPNS_14SourceElementsEPN3WTF6VectorISt4pairINS_10IdentifierEjELm16EEEPNS4_IPNS_12FuncDeclNodeELm16EEE -__ZN3KJS9BlockNodeC1EPNS_14SourceElementsE -__ZN3KJS13StatementNodeC2Ev -__ZN3WTF6RefPtrIN3KJS13ParameterNodeEEC1EPS2_ -__ZN3WTF6RefPtrIN3KJS16FunctionBodyNodeEEC1EPS2_ -__ZN3KJS12FuncExprNode9addParamsEv -__ZN3WTF10ListRefPtrIN3KJS13ParameterNodeEEC1Ev -__ZN3KJS10ReturnNodeC1EPNS_14ExpressionNodeE -__Z23allowAutomaticSemicolonv -__ZN3KJS14SourceElementsC1Ev -__ZN3WTF10PassRefPtrIN3KJS13StatementNodeEEC1EPS2_ -__ZN3KJS14SourceElements6appendEN3WTF10PassRefPtrINS_13StatementNodeEEE -__ZNK3KJS13StatementNode16isEmptyStatementEv -__ZN3WTF6VectorINS_6RefPtrIN3KJS13StatementNodeEEELm0EE14expandCapacityEm -__ZN3WTF6VectorINS_6RefPtrIN3KJS13StatementNodeEEELm0EE15reserveCapacityEm -__ZN3WTF6VectorIN3KJS10IdentifierELm0EE14expandCapacityEmPKS2_ -__ZN3WTF6VectorIN3KJS10IdentifierELm0EE14expandCapacityEm -__ZN3WTF6VectorIN3KJS10IdentifierELm0EE15reserveCapacityEm -__ZN3KJS20ParserRefCountedDataIN3WTF6VectorISt4pairINS_10IdentifierEjELm16EEEEC1Ev -__Z26appendToVarDeclarationListRPN3KJS20ParserRefCountedDataIN3WTF6VectorISt4pairINS_10IdentifierEjELm16EEEEERKS4_j -__Z20makeVarStatementNodePN3KJS14ExpressionNodeE -__Z14makeAssignNodePN3KJS14ExpressionNodeENS_8OperatorES1_ -__ZN3KJS17ExprStatementNodeC1EPNS_14ExpressionNodeE -__ZN3KJS6IfNodeC2EPNS_14ExpressionNodeEPNS_13StatementNodeE -__Z21mergeDeclarationListsIPN3KJS20ParserRefCountedDataIN3WTF6VectorISt4pairINS0_10IdentifierEjELm16EEEEEET_SA_SA_ -__Z21mergeDeclarationListsIPN3KJS20ParserRefCountedDataIN3WTF6VectorIPNS0_12FuncDeclNodeELm16EEEEEET_S9_S9_ -__ZNK3KJS11ResolveNode10isLocationEv -__ZNK3KJS11ResolveNode13isResolveNodeEv -__Z22combineVarInitializersPN3KJS14ExpressionNodeEPNS_17AssignResolveNodeE -__ZN3KJS14ExpressionNode28optimizeForUnnecessaryResultEv -__ZN3WTF6VectorIPN3KJS10IdentifierELm0EE14expandCapacityEmPKS3_ -__ZN3WTF6VectorIPN3KJS10IdentifierELm0EE14expandCapacityEm -__ZN3KJS12FuncDeclNode9addParamsEv -__ZN3WTF6VectorIPN3KJS12FuncDeclNodeELm16EEC1Ev -__ZN3WTF6VectorISt4pairIN3KJS10IdentifierEjELm16EE6appendIS4_EEvPKT_m -__ZN3KJS16ParserRefCounted5derefEv -__ZN3KJS20ParserRefCountedDataIN3WTF6VectorISt4pairINS_10IdentifierEjELm16EEEED1Ev -__Z12makeLessNodePN3KJS14ExpressionNodeES1_ -__Z15makePostfixNodePN3KJS14ExpressionNodeENS_8OperatorE -__ZN3WTF6RefPtrIN3KJS13StatementNodeEEC1EPS2_ -__ZN3KJS18PostIncResolveNode28optimizeForUnnecessaryResultEv -__ZN3WTF6VectorISt4pairIN3KJS10IdentifierEjELm16EEaSERKS5_ -__ZN3WTF6VectorIPN3KJS12FuncDeclNodeELm16EEaSERKS4_ -__ZNK3KJS14ExpressionNode10isLocationEv -__ZNK3KJS19BracketAccessorNode10isLocationEv -__ZNK3KJS19BracketAccessorNode21isBracketAccessorNodeEv -__ZN3KJS9ForInNodeC1ERKNS_10IdentifierEPNS_14ExpressionNodeES5_PNS_13StatementNodeE -__ZN3KJS9ThrowNodeC1EPNS_14ExpressionNodeE -__Z14makeTypeOfNodePN3KJS14ExpressionNodeE -__ZN3WTF6VectorINS_6RefPtrIN3KJS13StatementNodeEEELm0EEC1Ev -__ZN3WTF6RefPtrIN3KJS14CaseClauseNodeEEC1EPS2_ -__ZN3WTF10ListRefPtrIN3KJS14ClauseListNodeEEC1Ev -__ZN3KJS13CaseBlockNodeC2EPNS_14ClauseListNodeEPNS_14CaseClauseNodeES2_ -__Z11makeAddNodePN3KJS14ExpressionNodeES1_ -__ZN3WTF10ListRefPtrIN3KJS11ElementNodeEEC1Ev -__ZN3WTF6RefPtrIN3KJS11ElementNodeEEC1EPS2_ -__ZNK3KJS18EmptyStatementNode16isEmptyStatementEv -__ZN3KJS9BreakNodeC1Ev -__Z32branchFindFirstAssertedCharacterPKhb -__Z20branchNeedsLineStartPKhjj -__ZN3KJS10IdentifierC1ERKNS_7UStringE -__ZN3WTF6RefPtrIN3KJS7UString3RepEED1Ev -__ZN3KJS9CommaNodeC2EPNS_14ExpressionNodeES2_ -__Z14makePrefixNodePN3KJS14ExpressionNodeENS_8OperatorE -__ZN3WTF6RefPtrIN3KJS13ArgumentsNodeEEC1EPS2_ -__ZN3WTF6VectorIPN3KJS7UStringELm0EE14expandCapacityEmPKS3_ -__ZN3WTF6VectorIPN3KJS7UStringELm0EE14expandCapacityEm -__ZN3WTF6VectorIN3KJS5UCharELm0EE14expandCapacityEmPKS2_ -__ZN3WTF6VectorIN3KJS5UCharELm0EE14expandCapacityEm -__ZNK3KJS14ExpressionNode8isNumberEv -__ZN3KJS19PlaceholderTrueNodeC1Ev -__ZN3KJS18EmptyStatementNodeC1Ev -__Z14makeDeleteNodePN3KJS14ExpressionNodeE -__Z15isCountedRepeatPKtS0_ -__ZN3KJS12ContinueNodeC1Ev -__ZN3KJS9ForInNodeC1EPNS_14ExpressionNodeES2_PNS_13StatementNodeE -__ZN3KJS18PostDecResolveNode28optimizeForUnnecessaryResultEv -__Z17bracketIsAnchoredPKh -__ZN3WTF6VectorISt4pairIN3KJS10IdentifierEjELm16EE14expandCapacityEmPKS4_ -__ZN3WTF6VectorISt4pairIN3KJS10IdentifierEjELm16EE14expandCapacityEm -__ZN3WTF6VectorISt4pairIN3KJS10IdentifierEjELm16EE15reserveCapacityEm -__ZN3KJS7UString4fromEd -_kjs_dtoa -_d2b -_Balloc -__ZN3KJS6parserEv -__ZN3KJS6Parser16didFinishParsingEPNS_14SourceElementsEPNS_20ParserRefCountedDataIN3WTF6VectorISt4pairINS_10IdentifierEjELm16EEEEEPNS3_INS5_IPNS_12FuncDeclNodeELm16EEEEEi -__ZN3KJS5Lexer5clearEv -__ZN3WTF25TCMalloc_Central_FreeList11InsertRangeEPvS1_i +__ZN3WTF11fastReallocILb1EEEPvS1_m +__ZN3JSC7UStringC1EPKti +__ZN3JSC7UStringC2EPKti +__ZN3JSC12JSGlobalData12createLeakedEv +__ZN3JSC9Structure18startIgnoringLeaksEv +__ZN3JSC7VPtrSetC2Ev +__ZN3JSC9StructureC1ENS_7JSValueERKNS_8TypeInfoE +__ZN3JSC7JSArrayC1EN3WTF10PassRefPtrINS_9StructureEEE +__ZN3JSC7JSArrayD1Ev +__ZN3JSC7JSArrayD2Ev +__ZN3WTF10RefCountedIN3JSC9StructureEE5derefEv +__ZN3JSC9StructureD1Ev +__ZN3JSC9StructureD2Ev +__ZN3JSC11JSByteArray15createStructureENS_7JSValueE +__ZN3JSC11JSByteArrayD1Ev +__ZN3JSC8JSStringD1Ev +__ZN3JSC10JSFunctionD1Ev +__ZN3JSC10JSFunctionD2Ev +__ZN3JSC8JSObjectD2Ev +__ZN3JSC12JSGlobalDataC2EbRKNS_7VPtrSetE +__ZN3JSC21createIdentifierTableEv +__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 +__ZN3JSC12SmallStringsC1Ev +__ZN3JSC19ExecutableAllocator17intializePageSizeEv +__ZN3JSC14ExecutablePool11systemAllocEm +__ZN3JSC5LexerC1EPNS_12JSGlobalDataE +__ZN3JSC5LexerC2EPNS_12JSGlobalDataE +__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 +__ZN3JSC3JITC1EPNS_12JSGlobalDataEPNS_9CodeBlockE +__ZN3JSC3JITC2EPNS_12JSGlobalDataEPNS_9CodeBlockE +__ZN3JSC3JIT35privateCompileCTIMachineTrampolinesEPN3WTF6RefPtrINS_14ExecutablePoolEEEPNS_12JSGlobalDataEPPvS9_S9_S9_S9_S9_ +__ZN3JSC12X86Assembler23X86InstructionFormatter11oneByteOp64ENS0_15OneByteOpcodeIDEiNS_3X8610RegisterIDE +__ZN3JSC12X86Assembler3jCCENS0_9ConditionE +__ZN3JSC23MacroAssemblerX86Common4moveENS_22AbstractMacroAssemblerINS_12X86AssemblerEE6ImmPtrENS_3X8610RegisterIDE +__ZN3JSC12X86Assembler23X86InstructionFormatter11oneByteOp64ENS0_15OneByteOpcodeIDEiNS_3X8610RegisterIDEi +__ZN3JSC12X86Assembler23X86InstructionFormatter9oneByteOpENS0_15OneByteOpcodeIDEiNS_3X8610RegisterIDE +__ZN3JSC15AssemblerBuffer11ensureSpaceEi +__ZN3JSC20MacroAssemblerX86_6413branchTestPtrENS_23MacroAssemblerX86Common9ConditionENS_3X8610RegisterIDENS_22AbstractMacroAsse +__ZN3JSC12X86Assembler23X86InstructionFormatter9oneByteOpENS0_15OneByteOpcodeIDENS_3X8610RegisterIDE +__ZN3JSC20MacroAssemblerX86_644callEv +__ZN3JSC12X86Assembler23X86InstructionFormatter9oneByteOpENS0_15OneByteOpcodeIDEiNS_3X8610RegisterIDEi +__ZN3JSC3JIT32compileOpCallInitializeCallFrameEv +__ZN3JSC12X86Assembler23X86InstructionFormatter11memoryModRMEiNS_3X8610RegisterIDEi +__ZN3JSC20MacroAssemblerX86_6421makeTailRecursiveCallENS_22AbstractMacroAssemblerINS_12X86AssemblerEE4JumpE +__ZN3JSC14TimeoutCheckerC1Ev +__ZN3JSC4HeapC1EPNS_12JSGlobalDataE +__ZN3JSC27startProfilerServerIfNeededEv ++[ProfilerServer sharedProfileServer] +-[ProfilerServer init] +__ZN3JSC9Structure17stopIgnoringLeaksEv +__ZN3JSC4Heap8allocateEm +__ZN3JSCL13allocateBlockILNS_8HeapTypeE0EEEPNS_14CollectorBlockEv +__ZN3JSC4Heap4heapENS_7JSValueE +__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 +__ZN3JSC7UStringC1EPKc +__ZN3JSCL9createRepEPKc +__ZN3JSC8JSObject9putDirectERKNS_10IdentifierENS_7JSValueEjbRNS_15PutPropertySlotE +__ZN3JSC9Structure40addPropertyTransitionToExistingStructureEPS0_RKNS_10IdentifierEjRm +__ZN3JSC9Structure3getERKNS_10IdentifierERj +__ZN3JSC9Structure21addPropertyTransitionEPS0_RKNS_10IdentifierEjRm +__ZN3JSC9Structure3putERKNS_10IdentifierEj +__ZN3JSC8JSObject26putDirectWithoutTransitionERKNS_10IdentifierENS_7JSValueEj +__ZN3JSC9Structure28addPropertyWithoutTransitionERKNS_10IdentifierEj +__ZN3JSC17FunctionPrototype21addFunctionPropertiesEPNS_9ExecStateEPNS_9StructureEPPNS_10JSFunctionES7_ +__ZN3JSC10JSFunctionC2EPNS_9ExecStateEN3WTF10PassRefPtrINS_9StructureEEEiRKNS_10IdentifierEPFNS_7JSValueES2_PNS_8JSObjectESA_RK +__ZN3JSC12JSGlobalData17createNativeThunkEv +__ZN3JSC16FunctionBodyNode17createNativeThunkEPNS_12JSGlobalDataE +__ZN3WTF6VectorINS_6RefPtrIN3JSC21ParserArenaRefCountedEEELm0EE15reserveCapacityEm +__ZN3JSC11ParserArena5resetEv +__ZN3JSC8JSObject34putDirectFunctionWithoutTransitionEPNS_9ExecStateEPNS_16InternalFunctionEj +__ZN3JSC15ObjectPrototypeC2EPNS_9ExecStateEN3WTF10PassRefPtrINS_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 +__ZNK3JSC16InternalFunction9classInfoEv +__ZN3JSC16ArrayConstructorC2EPNS_9ExecStateEN3WTF10PassRefPtrINS_9StructureEEEPNS_14ArrayPrototypeE +__ZNK3JSC14ArrayPrototype9classInfoEv +__ZN3JSC17StringConstructorC2EPNS_9ExecStateEN3WTF10PassRefPtrINS_9StructureEEEPS5_PNS_15StringPrototypeE +__ZNK3JSC15StringPrototype9classInfoEv +__ZN3JSC18BooleanConstructorC2EPNS_9ExecStateEN3WTF10PassRefPtrINS_9StructureEEEPNS_16BooleanPrototypeE +__ZNK3JSC13BooleanObject9classInfoEv +__ZN3JSC17NumberConstructorC2EPNS_9ExecStateEN3WTF10PassRefPtrINS_9StructureEEEPNS_15NumberPrototypeE +__ZN3JSC15DateConstructorC2EPNS_9ExecStateEN3WTF10PassRefPtrINS_9StructureEEEPS5_PNS_13DatePrototypeE +__ZNK3JSC13DatePrototype9classInfoEv +__ZN3JSC17RegExpConstructorC2EPNS_9ExecStateEN3WTF10PassRefPtrINS_9StructureEEEPNS_15RegExpPrototypeE +__ZN3JSC16ErrorConstructorC2EPNS_9ExecStateEN3WTF10PassRefPtrINS_9StructureEEEPNS_14ErrorPrototypeE +__ZNK3JSC13ErrorInstance9classInfoEv +__ZN3JSC22NativeErrorConstructorC2EPNS_9ExecStateEN3WTF10PassRefPtrINS_9StructureEEEPNS_20NativeErrorPrototypeE +__ZN3JSC10Identifier11addSlowCaseEPNS_12JSGlobalDataEPNS_7UString3RepE +__ZN3WTF7HashSetIPN3JSC7UString3RepENS_7StrHashIS4_EENS_10HashTraitsIS4_EEE3addERKS4_ +__ZN3JSC10MathObjectC2EPNS_9ExecStateEN3WTF10PassRefPtrINS_9StructureEEE +__ZN3JSC12SmallStrings24singleCharacterStringRepEh +__ZN3WTF7HashMapINS_6RefPtrIN3JSC7UString3RepEEENS2_16SymbolTableEntryENS2_17IdentifierRepHashENS_10HashTraitsIS5_EENS2_26Symbo +__ZN3WTF9HashTableINS_6RefPtrIN3JSC7UString3RepEEESt4pairIS5_NS2_16SymbolTableEntryEENS_18PairFirstExtractorIS8_EENS2_17Identif +__ZN3JSC17PrototypeFunctionC2EPNS_9ExecStateEN3WTF10PassRefPtrINS_9StructureEEEiRKNS_10IdentifierEPFNS_7JSValueES2_PNS_8JSObjec +__ZN3JSC9Structure25changePrototypeTransitionEPS0_NS_7JSValueE +__ZN3JSC9Structure17copyPropertyTableEv +__ZN3JSC14JSGlobalObject10globalExecEv +__ZN3JSC10Identifier3addEPNS_9ExecStateEPKc +__ZN3JSC4Heap9unprotectENS_7JSValueE +__ZN3JSC6JSCellnwEmPNS_9ExecStateE +__ZN3JSC14TimeoutChecker5resetEv +__ZN3JSC8evaluateEPNS_9ExecStateERNS_10ScopeChainERKNS_10SourceCodeENS_7JSValueE +__ZN3JSC6JSLock4lockEb +__ZN3JSC6Parser5parseINS_11ProgramNodeEEEN3WTF10PassRefPtrIT_EEPNS_9ExecStateEPNS_8DebuggerERKNS_10SourceCodeEPiPNS_7UStringE +__ZN3JSC6Parser5parseEPNS_12JSGlobalDataEPiPNS_7UStringE +__ZN3JSC7UStringaSEPKc +__Z10jscyyparsePv +__ZN3JSC5Lexer3lexEPvS1_ +__ZN3JSC10Identifier3addEPNS_12JSGlobalDataEPKti +__ZN3WTF7HashSetIPN3JSC7UString3RepENS_7StrHashIS4_EENS_10HashTraitsIS4_EEE3addINS1_11UCharBufferENS1_21UCharBufferTranslatorEE +__ZN3JSC15SegmentedVectorINS_10IdentifierELm64EE6appendIS1_EEvRKT_ +__ZNK3JSC9HashTable11createTableEPNS_12JSGlobalDataE +__ZN3JSC20ParserArenaDeletablenwEmPNS_12JSGlobalDataE +__ZN3WTF6VectorIPN3JSC20ParserArenaDeletableELm0EE15reserveCapacityEm +__ZN3JSC5Lexer10sourceCodeEiii +__ZN3JSC16FunctionBodyNode13finishParsingERKNS_10SourceCodeEPNS_13ParameterNodeE +__ZN3WTF6VectorIN3JSC10IdentifierELm0EE14expandCapacityEm +__ZN3WTF6VectorIPN3JSC12FuncDeclNodeELm0EE14expandCapacityEm +__ZN3JSC14SourceElements6appendEPNS_13StatementNodeE +__ZNK3JSC13StatementNode16isEmptyStatementEv +__ZN3WTF6VectorIPN3JSC13StatementNodeELm0EE14expandCapacityEm +__ZL20makeFunctionCallNodePvN3JSC8NodeInfoIPNS0_14ExpressionNodeEEENS1_IPNS0_13ArgumentsNodeEEEiii +__ZNK3JSC11ResolveNode10isLocationEv +__ZNK3JSC11ResolveNode13isResolveNodeEv +__ZN3JSC5Lexer7record8Ei +__ZN3JSC5Lexer10scanRegExpEv +__ZN3JSC7UStringC2ERKN3WTF6VectorItLm0EEE +__ZN3JSC7UString3Rep7destroyEv +__ZN3JSC5Lexer5clearEv +__ZN3JSC10Identifier6removeEPNS_7UString3RepE +__ZN3WTF6VectorIN3JSC10IdentifierELm64EE14shrinkCapacityEm +__ZN3JSC9ScopeNodeC2EPNS_12JSGlobalDataERKNS_10SourceCodeEPNS_14SourceElementsEPN3WTF6VectorISt4pairINS_10IdentifierEjELm0EEEPN +__ZN3WTF6VectorIPN3JSC13StatementNodeELm0EE14shrinkCapacityEm +__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_ +__ZN3JSC17BytecodeGenerator8generateEv +__ZN3JSC11ProgramNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE +__ZN3JSC17BytecodeGenerator13emitDebugHookENS_11DebugHookIDEii +__ZN3JSC17BytecodeGenerator11addConstantENS_7JSValueE +__ZN3WTF9HashTableIPvSt4pairIS1_jENS_18PairFirstExtractorIS3_EENS_7PtrHashIS1_EENS_14PairHashTraitsIN3JSC17JSValueHashTraitsENS +__ZN3WTF6VectorIN3JSC8RegisterELm0EE14expandCapacityEm +__ZN3JSC17BytecodeGenerator8emitMoveEPNS_10RegisterIDES2_ +__ZN3JSC17BytecodeGenerator8emitNodeEPNS_10RegisterIDEPNS_4NodeE +__ZN3WTF6VectorIN3JSC8LineInfoELm0EE14expandCapacityEm +__ZN3JSC12FuncDeclNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE +__ZN3JSC17ExprStatementNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE +__ZN3JSC23FunctionCallResolveNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE +__ZN3JSC17BytecodeGenerator11registerForERKNS_10IdentifierE +__ZN3JSC17BytecodeGenerator8emitCallENS_8OpcodeIDEPNS_10RegisterIDES3_S3_PNS_13ArgumentsNodeEjjj +__ZN3JSC16ArgumentListNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE +__ZN3JSC12FuncExprNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE +__ZN3JSC17BytecodeGenerator25emitNewFunctionExpressionEPNS_10RegisterIDEPNS_12FuncExprNodeE +__ZN3WTF6VectorIN3JSC19ExpressionRangeInfoELm0EE14expandCapacityEm +__ZN3WTF6VectorIN3JSC12CallLinkInfoELm0EE14expandCapacityEm +__ZN3JSC11ResolveNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE +__ZN3JSC12JSGlobalData22numericCompareFunctionEPNS_9ExecStateE +__ZNK3JSC21UStringSourceProvider6lengthEv +__ZNK3JSC21UStringSourceProvider4dataEv +__ZN3JSC19extractFunctionBodyEPNS_11ProgramNodeE +__ZNK3JSC17ExprStatementNode15isExprStatementEv +__ZNK3JSC12FuncExprNode14isFuncExprNodeEv +__ZN3JSC16FunctionBodyNode16generateBytecodeEPNS_14ScopeChainNodeE +__ZN3JSC6Parser14reparseInPlaceEPNS_12JSGlobalDataEPNS_16FunctionBodyNodeE +__ZL11makeSubNodePvPN3JSC14ExpressionNodeES2_b +__ZN3JSC14ExpressionNode14stripUnaryPlusEv +__ZNK3JSC14ExpressionNode8isNumberEv +__ZN3JSC9CodeBlockC1EPNS_9ScopeNodeENS_8CodeTypeEN3WTF10PassRefPtrINS_14SourceProviderEEEj +__ZN3JSC17BytecodeGeneratorC2EPNS_16FunctionBodyNodeEPKNS_8DebuggerERKNS_10ScopeChainEPN3WTF7HashMapINS9_6RefPtrINS_7UString3Re +__ZN3JSC17BytecodeGenerator12addParameterERKNS_10IdentifierE +__ZN3JSC16FunctionBodyNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE +__ZN3JSC9BlockNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE +__ZN3JSC10ReturnNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE +__ZN3JSC12BinaryOpNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE +__ZNK3JSC11ResolveNode6isPureERNS_17BytecodeGeneratorE +__ZN3JSC17BytecodeGenerator12newTemporaryEv +__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 +__ZN3JSC9CodeBlockD2Ev +__ZN3JSC21UStringSourceProviderD0Ev +__ZN3WTF6VectorIN3JSC19ExpressionRangeInfoELm0EE14shrinkCapacityEm +__ZN3WTF6VectorIN3JSC8LineInfoELm0EE14shrinkCapacityEm +__ZN3WTF6VectorINS_6RefPtrIN3JSC12FuncDeclNodeEEELm0EE14shrinkCapacityEm +__ZN3WTF6VectorIN3JSC15SimpleJumpTableELm0EE14shrinkCapacityEm +__ZN3WTF6VectorIN3JSC15StringJumpTableELm0EE14shrinkCapacityEm +__ZN3JSC15ParserArenaDataIN3WTF6VectorIPNS_12FuncDeclNodeELm0EEEED0Ev +__ZN3JSC16ArgumentListNodeD0Ev +__ZN3JSC13ArgumentsNodeD0Ev +__ZN3JSC23FunctionCallResolveNodeD0Ev +__ZN3JSC14JSGlobalObject13copyGlobalsToERNS_12RegisterFileE +__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 +__ZN3WTF6VectorIN3JSC13SlowCaseEntryELm0EE14expandCapacityEm +__ZN3JSC3JIT11emit_op_endEPNS_11InstructionE +__ZN3JSC11JITStubCall4callEv +__ZN3WTF6VectorIN3JSC9JumpTableELm0EE14shrinkCapacityEm +__ZN3JSC3JIT23privateCompileSlowCasesEv +__ZN3JSC3JIT16emitSlow_op_callEPNS_11InstructionERPNS_13SlowCaseEntryE +__ZN3JSC3JIT21compileOpCallSlowCaseEPNS_11InstructionERPNS_13SlowCaseEntryEjNS_8OpcodeIDE +__ZN3JSC3JIT22compileOpCallSetupArgsEPNS_11InstructionE +__ZN3JSC9CodeBlock10setJITCodeERNS_10JITCodeRefE +__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 +__ZN3JSC15DotAccessorNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE +__ZN3JSC17BytecodeGenerator11emitResolveEPNS_10RegisterIDERKNS_10IdentifierE +__ZN3JSC17BytecodeGenerator18findScopedPropertyERKNS_10IdentifierERiRmbRPNS_8JSObjectE +__ZNK3JSC16JSVariableObject16isVariableObjectEv +__ZN3JSC17BytecodeGenerator16emitGetScopedVarEPNS_10RegisterIDEmiNS_7JSValueE +__ZN3JSC17BytecodeGenerator11emitGetByIdEPNS_10RegisterIDES2_RKNS_10IdentifierE +__ZN3WTF6VectorIN3JSC17StructureStubInfoELm0EE14expandCapacityEm +__ZN3JSC17BytecodeGenerator11addConstantERKNS_10IdentifierE +__ZN3WTF7HashMapINS_6RefPtrIN3JSC7UString3RepEEEiNS2_17IdentifierRepHashENS_10HashTraitsIS5_EENS2_17BytecodeGenerator28Identifi +__ZN3WTF9HashTableINS_6RefPtrIN3JSC7UString3RepEEESt4pairIS5_iENS_18PairFirstExtractorIS7_EENS2_17IdentifierRepHashENS_14PairHa +__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 +__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_ +__ZN3JSC3JIT14emit_op_jfalseEPNS_11InstructionE +__ZN3JSC20MacroAssemblerX86_649branchPtrENS_23MacroAssemblerX86Common9ConditionENS_3X8610RegisterIDENS_22AbstractMacroAssembler +__ZN3JSC20MacroAssemblerX86_649branchPtrENS_23MacroAssemblerX86Common9ConditionENS_3X8610RegisterIDES4_ +__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 +__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 -__ZN3WTF25TCMalloc_Central_FreeList18ReleaseListToSpansEPv -__ZN3WTF15deleteAllValuesIPN3KJS16ParserRefCountedEKNS_9HashTableIiiNS_17IdentityExtractorIiEENS_7IntHashIiEENS_10HashTraitsIiEESA_EEEEvRT0_ -__ZN3KJS19BracketAccessorNodeD1Ev -__ZN3KJS11ProgramNodeC2EPNS_14SourceElementsEPN3WTF6VectorISt4pairINS_10IdentifierEjELm16EEEPNS4_IPNS_12FuncDeclNodeELm16EEE -__ZNK3KJS8JSObject8toObjectEPNS_9ExecStateE -__ZN3KJS11ProgramNode7executeEPNS_9ExecStateE -__ZN3KJS11ProgramNode21initializeSymbolTableEPNS_9ExecStateE -__ZN3WTF6VectorImLm0EE6resizeEm -__ZN3WTF6VectorImLm0EE14expandCapacityEm -__ZN3WTF6VectorImLm0EE15reserveCapacityEm -__ZN3WTF9HashTableINS_6RefPtrIN3KJS7UString3RepEEESt4pairIS5_mENS_18PairFirstExtractorIS7_EENS2_17IdentifierRepHashENS_14PairHashTraitsINS2_23IdentifierRepHashTraitsENS2_26SymbolTableIndexHashTraitsEEESC_E3addIS5_mNS_17HashMapTranslatorILb1ES7_NS_18PairBaseHashTraitsISC_SD_EESE_SA_EEEES6_INS_17HashTableIteratorIS5_S7_S9_SA_SE_SC_EEbERKT_RKT0_ -__ZN3WTF9HashTableINS_6RefPtrIN3KJS7UString3RepEEESt4pairIS5_mENS_18PairFirstExtractorIS7_EENS2_17IdentifierRepHashENS_14PairHashTraitsINS2_23IdentifierRepHashTraitsENS2_26SymbolTableIndexHashTraitsEEESC_E6rehashEi -__ZN3KJS14JSGlobalObject18getOwnPropertySlotEPNS_9ExecStateERKNS_10IdentifierERNS_12PropertySlotE -__ZNK3WTF7HashMapINS_6RefPtrIN3KJS7UString3RepEEEmNS2_17IdentifierRepHashENS2_23IdentifierRepHashTraitsENS2_26SymbolTableIndexHashTraitsEE3getEPS4_ -__ZN3KJS11PropertyMap11getLocationERKNS_10IdentifierE -__ZN3KJS6Lookup9findEntryEPKNS_9HashTableERKNS_10IdentifierE -__ZNK3KJS7UString14toStrictUInt32EPb -__ZN3KJS8JSObject18getOwnPropertySlotEPNS_9ExecStateERKNS_10IdentifierERNS_12PropertySlotE -__ZN3WTF6VectorIN3KJS17LocalStorageEntryELm32EE15reserveCapacityEm -__ZN3KJS11FunctionImpC2EPNS_9ExecStateERKNS_10IdentifierEPNS_16FunctionBodyNodeERKNS_10ScopeChainE -__ZN3KJS15ObjectObjectImp9constructEPNS_9ExecStateERKNS_4ListE -__ZN3KJS9ScopeNode22optimizeVariableAccessEPNS_9ExecStateE -__ZN3WTF6VectorIPN3KJS4NodeELm16EE14expandCapacityEm -__ZN3WTF6VectorIPN3KJS4NodeELm16EE15reserveCapacityEm -__ZN3KJS16VarStatementNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE -__ZN3KJS17AssignResolveNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE -__ZN3KJS17ObjectLiteralNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE -__ZN3KJS16PropertyListNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE -__ZN3KJS12PropertyNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE -__ZN3KJS4Node22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPS0_Lm16EEE -__ZN3KJS14LogicalNotNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE -__ZN3KJS14LogicalAndNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE -__ZN3KJS15DotAccessorNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE -__ZN3KJS11ResolveNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE -__ZN3KJS11GreaterNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE -__ZN3KJS19FunctionCallDotNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE -__ZN3KJS13ArgumentsNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE -__ZN3KJS16ArgumentListNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE -__ZN3KJS9EqualNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE -__ZN3KJS18NotStrictEqualNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE -__ZN3KJS6IfNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE -__ZN3KJS17ExprStatementNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE -__ZN3KJS13AssignDotNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE -__ZN3KJS13LogicalOrNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE -__ZN3KJS8WithNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE -__ZN3KJS9BlockNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE -__ZN3KJS23FunctionCallResolveNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE -__ZN3KJS21FunctionCallValueNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE -__ZN3KJS9ArrayNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE -__ZN3KJS11ElementNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE -__ZN3KJS10IfElseNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE -__ZN3KJS7AddNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE -__ZN3KJS6InNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE -__ZN3KJS11NewExprNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE -__ZN3KJS16VarStatementNode7executeEPNS_9ExecStateE -__ZN3KJS18AssignLocalVarNode8evaluateEPNS_9ExecStateE -__ZN3KJS17ObjectLiteralNode8evaluateEPNS_9ExecStateE -__ZN3KJS16PropertyListNode8evaluateEPNS_9ExecStateE -__ZN3KJS10StringNode8evaluateEPNS_9ExecStateE -__ZN3KJS13jsOwnedStringERKNS_7UStringE -__ZN3KJS8JSObject3putEPNS_9ExecStateERKNS_10IdentifierEPNS_7JSValueEi -__ZN3KJS14LogicalNotNode8evaluateEPNS_9ExecStateE -__ZN3KJS14LogicalNotNode17evaluateToBooleanEPNS_9ExecStateE -__ZN3KJS14LogicalAndNode17evaluateToBooleanEPNS_9ExecStateE -__ZN3KJS15DotAccessorNode17evaluateToBooleanEPNS_9ExecStateE -__ZN3KJS11ResolveNode8evaluateEPNS_9ExecStateE -__ZN3KJS11GreaterNode8evaluateEPNS_9ExecStateE -__ZN3KJS19FunctionCallDotNode8evaluateEPNS_9ExecStateE -__ZN3KJS15DotAccessorNode8evaluateEPNS_9ExecStateE -__ZNK3KJS9ExecState19lexicalGlobalObjectEv -__ZNK3KJS9StringImp8toObjectEPNS_9ExecStateE -__ZN3KJS14StringInstance18getOwnPropertySlotEPNS_9ExecStateERKNS_10IdentifierERNS_12PropertySlotE -__ZN3KJS15StringPrototype18getOwnPropertySlotEPNS_9ExecStateERKNS_10IdentifierERNS_12PropertySlotE -__ZN3KJS20staticFunctionGetterEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE -__ZN3KJS17PrototypeFunctionC1EPNS_9ExecStateEiRKNS_10IdentifierEPFPNS_7JSValueES2_PNS_8JSObjectERKNS_4ListEE -__ZNK3KJS19InternalFunctionImp14implementsCallEv -__ZN3KJS16ArgumentListNode12evaluateListEPNS_9ExecStateERNS_4ListE -__ZN3KJS17PrototypeFunction14callAsFunctionEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZN3KJS22stringProtoFuncIndexOfEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZNK3KJS14StringInstance9classInfoEv -__ZNK3KJS9StringImp8toStringEPNS_9ExecStateE -__ZNK3KJS7JSValue9toIntegerEPNS_9ExecStateE -__ZNK3KJS7UString4findERKS0_i -__ZN3KJS19ImmediateNumberNode8evaluateEPNS_9ExecStateE -__ZN3KJS14LogicalAndNode8evaluateEPNS_9ExecStateE -__ZN3KJS9EqualNode8evaluateEPNS_9ExecStateE -__ZN3KJS5equalEPNS_9ExecStateEPNS_7JSValueES3_ -__ZN3KJS19FunctionCallDotNode17evaluateToBooleanEPNS_9ExecStateE -__ZN3KJS10RegExpNode8evaluateEPNS_9ExecStateE -__ZN3KJS15RegExpObjectImp15createRegExpImpEPNS_9ExecStateEN3WTF10PassRefPtrINS_6RegExpEEE -__ZN3KJS20stringProtoFuncMatchEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZNK3KJS9RegExpImp9classInfoEv -__ZN3KJS15RegExpObjectImp12performMatchEPNS_6RegExpERKNS_7UStringEiRiS6_PPi -__ZN3KJS6RegExp5matchERKNS_7UStringEiPN3WTF11OwnArrayPtrIiEE -__Z5matchPKtPKhiR9MatchData -__ZNK3KJS8JSObject9toBooleanEPNS_9ExecStateE -__ZN3KJS18NotStrictEqualNode8evaluateEPNS_9ExecStateE -__ZNK3KJS7UString8toUInt32EPbb -__ZNK3KJS7UString8toDoubleEbb -__ZN3KJS11strictEqualEPNS_9ExecStateEPNS_7JSValueES3_ -__ZN3KJS12FuncExprNode8evaluateEPNS_9ExecStateE -__ZN3KJS14JSGlobalObject17tearOffActivationEPNS_9ExecStateEb -__ZN3KJS6IfNode7executeEPNS_9ExecStateE -__ZN3KJS18LocalVarAccessNode8evaluateEPNS_9ExecStateE -__ZN3KJS17ExprStatementNode7executeEPNS_9ExecStateE -__ZN3KJS13AssignDotNode8evaluateEPNS_9ExecStateE -__ZN3KJS11FunctionImp14callAsFunctionEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZN3KJS17FunctionExecStateC1EPNS_14JSGlobalObjectEPNS_8JSObjectEPNS_16FunctionBodyNodeEPNS_9ExecStateEPNS_11FunctionImpERKNS_4ListE -__ZN3KJS14JSGlobalObject14pushActivationEPNS_9ExecStateE -__ZN3KJS13ActivationImp4initEPNS_9ExecStateE -__ZN3KJS16FunctionBodyNode7executeEPNS_9ExecStateE -__ZN3KJS16FunctionBodyNode21initializeSymbolTableEPNS_9ExecStateE -__ZN3KJS9ForInNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE -__ZN3KJS17AssignBracketNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE -__ZN3KJS19BracketAccessorNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE -__ZN3KJS10ReturnNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE -__ZN3KJS9ForInNode7executeEPNS_9ExecStateE -__ZN3KJS8JSObject16getPropertyNamesEPNS_9ExecStateERNS_17PropertyNameArrayE -__ZNK3KJS11PropertyMap26getEnumerablePropertyNamesERNS_17PropertyNameArrayE -__ZNK3KJS8JSObject9classInfoEv -__ZN3KJS13ActivationImp18getOwnPropertySlotEPNS_9ExecStateERKNS_10IdentifierERNS_12PropertySlotE -__ZN3KJS13ActivationImp3putEPNS_9ExecStateERKNS_10IdentifierEPNS_7JSValueEi -__ZN3KJS17AssignBracketNode8evaluateEPNS_9ExecStateE -__ZNK3KJS6JSCell9getUInt32ERj -__ZN3KJS19BracketAccessorNode8evaluateEPNS_9ExecStateE -__ZN3KJS10ReturnNode7executeEPNS_9ExecStateE -__ZN3KJS14JSGlobalObject13popActivationEv -__ZN3KJS11FunctionImp18getOwnPropertySlotEPNS_9ExecStateERKNS_10IdentifierERNS_12PropertySlotE -__ZN3KJS10NumberNode8evaluateEPNS_9ExecStateE -__ZN3KJS9CommaNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE -__ZN3KJS13ActivationImpC1ERKNS0_14ActivationDataEb -__ZN3WTF6VectorIN3KJS17LocalStorageEntryELm32EEC2ERKS3_ -__ZN3KJS13ActivationImp15argumentsGetterEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE -__ZN3KJS13ActivationImp21createArgumentsObjectEPNS_9ExecStateE -__ZN3KJS9ArgumentsC2EPNS_9ExecStateEPNS_11FunctionImpERKNS_4ListEPNS_13ActivationImpE -__ZN3KJS14IndexToNameMapC2EPNS_11FunctionImpERKNS_4ListE -__ZN3KJS11FunctionImp16getParameterNameEi -__ZN3KJS7UString4fromEj -__ZN3KJS9Arguments18getOwnPropertySlotEPNS_9ExecStateERKNS_10IdentifierERNS_12PropertySlotE -__ZN3KJS9CommaNode8evaluateEPNS_9ExecStateE -__ZN3KJS8ThisNode8evaluateEPNS_9ExecStateE -__ZN3KJS23FunctionCallResolveNode8evaluateEPNS_9ExecStateE -__ZN3KJS9WhileNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE -__ZN3KJS18PostDecResolveNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE -__ZN3KJS18LocalVarAccessNode17evaluateToBooleanEPNS_9ExecStateE -__ZN3KJS13LogicalOrNode8evaluateEPNS_9ExecStateE -__ZN3KJS11NewExprNode8evaluateEPNS_9ExecStateE -__ZNK3KJS14ArrayObjectImp19implementsConstructEv -__ZN3KJS14ArrayObjectImp9constructEPNS_9ExecStateERKNS_4ListE -__ZN3KJS9WhileNode7executeEPNS_9ExecStateE -__ZN3KJS19PostDecLocalVarNode17evaluateToBooleanEPNS_9ExecStateE -__ZN3KJS8JSObject18getOwnPropertySlotEPNS_9ExecStateEjRNS_12PropertySlotE -__ZN3KJS13ArrayInstance3putEPNS_9ExecStateEjPNS_7JSValueEi -__ZN3KJS15RegExpObjectImp18getOwnPropertySlotEPNS_9ExecStateERKNS_10IdentifierERNS_12PropertySlotE -__ZN3KJS15RegExpObjectImp3putEPNS_9ExecStateERKNS_10IdentifierEPNS_7JSValueEi -__ZN3KJS7ForNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE -__ZN3KJS8LessNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE -__ZN3KJS17PreIncResolveNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE -__ZN3KJS8NullNode8evaluateEPNS_9ExecStateE -__ZN3KJS13ArrayInstance18getOwnPropertySlotEPNS_9ExecStateEjRNS_12PropertySlotE -__ZN3KJS17TypeOfResolveNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE -__ZN3KJS18LocalVarTypeOfNode8evaluateEPNS_9ExecStateE -__ZN3KJS18typeStringForValueEPNS_7JSValueE -__ZNK3KJS8JSObject21masqueradeAsUndefinedEv -__ZNK3KJS8JSObject14implementsCallEv -__ZN3KJS12FuncDeclNode7executeEPNS_9ExecStateE -__ZN3KJS11FunctionImp3putEPNS_9ExecStateERKNS_10IdentifierEPNS_7JSValueEi -__ZN3KJS9ArrayNode8evaluateEPNS_9ExecStateE -__ZN3KJS13ArrayInstanceC2EPNS_8JSObjectERKNS_4ListE -__ZN3KJS13ArrayInstance3putEPNS_9ExecStateERKNS_10IdentifierEPNS_7JSValueEi -__ZN3KJS13ArrayInstance9setLengthEj -__ZN3KJS7ForNode7executeEPNS_9ExecStateE -__ZN3KJS8LessNode17evaluateToBooleanEPNS_9ExecStateE -__ZN3KJS13ArrayInstance18getOwnPropertySlotEPNS_9ExecStateERKNS_10IdentifierERNS_12PropertySlotE -__ZN3KJS13ArrayInstance12lengthGetterEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE -__ZN3KJS14ArrayPrototype18getOwnPropertySlotEPNS_9ExecStateERKNS_10IdentifierERNS_12PropertySlotE -__ZN3KJS18arrayProtoFuncPushEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZN3KJS8TrueNode8evaluateEPNS_9ExecStateE -__ZN3KJS9BlockNode7executeEPNS_9ExecStateE -__ZN3KJS18PreIncLocalVarNode8evaluateEPNS_9ExecStateE -__ZN3KJS14StringInstance3putEPNS_9ExecStateERKNS_10IdentifierEPNS_7JSValueEi -__ZN3KJS13LogicalOrNode17evaluateToBooleanEPNS_9ExecStateE -__ZN3KJS8WithNode7executeEPNS_9ExecStateE -__ZN3KJS15NumberObjectImp18getOwnPropertySlotEPNS_9ExecStateERKNS_10IdentifierERNS_12PropertySlotE -__ZN3KJS24LocalVarFunctionCallNode8evaluateEPNS_9ExecStateE -__ZN3KJS15ConditionalNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE -__ZN3KJS22stringProtoFuncReplaceEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZN3KJS7replaceEPNS_9ExecStateEPNS_9StringImpEPNS_7JSValueES5_ -__ZNK3KJS7UString30spliceSubstringsWithSeparatorsEPKNS0_5RangeEiPKS0_i -__ZN3KJS15ConditionalNode8evaluateEPNS_9ExecStateE -__ZNK3KJS9StringImp9toBooleanEPNS_9ExecStateE -__ZN3KJS20stringProtoFuncSplitEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZNK3KJS7UString6substrEii -__ZN3KJS7UString3Rep6createEN3WTF10PassRefPtrIS1_EEii -__ZN3KJS7TryNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE -__ZN3KJS15LessNumbersNode17evaluateToBooleanEPNS_9ExecStateE -__ZN3KJS15DotAccessorNode16evaluateToNumberEPNS_9ExecStateE -__ZN3KJS10NumberNode16evaluateToNumberEPNS_9ExecStateE -__ZN3KJS7TryNode7executeEPNS_9ExecStateE -__ZN3KJS21arrayProtoFuncForEachEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZN3KJS18PostIncResolveNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE -__ZN3KJS18PostIncResolveNode8evaluateEPNS_9ExecStateE -__ZN3KJS13ActivationImp18isActivationObjectEv -__ZN3KJS13MathObjectImp18getOwnPropertySlotEPNS_9ExecStateERKNS_10IdentifierERNS_12PropertySlotE -__ZN3KJS21FunctionCallValueNode8evaluateEPNS_9ExecStateE -__ZN3KJS12NotEqualNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE -__ZN3KJS9FalseNode8evaluateEPNS_9ExecStateE -__ZN3KJS19arrayProtoFuncShiftEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZN3KJS13ArrayInstance14deletePropertyEPNS_9ExecStateEj -__ZNK3KJS11FunctionImp19implementsConstructEv -__ZN3KJS11FunctionImp9constructEPNS_9ExecStateERKNS_4ListE -__ZN3KJS9EqualNode17evaluateToBooleanEPNS_9ExecStateE -__ZN3KJS25functionProtoFuncToStringEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZNK3KJS11FunctionImp9classInfoEv -__ZNK3KJS4Node8toStringEv -__ZNK3KJS9ScopeNode8streamToERNS_12SourceStreamE -__ZN3KJS7UString6appendEt -__ZN3KJS7UString6appendERKS0_ -__ZN3KJS7UString6appendEPKc -__ZN3KJS7UString14expandCapacityEi -__ZN3KJS12SourceStreamlsEPKNS_4NodeE -__ZNK3KJS17ExprStatementNode8streamToERNS_12SourceStreamE -__ZNK3KJS4Node21needsParensIfLeftmostEv -__ZNK3KJS23FunctionCallResolveNode8streamToERNS_12SourceStreamE -__ZNK3KJS13ArgumentsNode8streamToERNS_12SourceStreamE -__ZNK3KJS16ArgumentListNode8streamToERNS_12SourceStreamE -__ZNK3KJS11ResolveNode10precedenceEv -__ZNK3KJS11ResolveNode8streamToERNS_12SourceStreamE -__ZNK3KJS13AssignDotNode8streamToERNS_12SourceStreamE -__ZNK3KJS8ThisNode10precedenceEv -__ZNK3KJS8ThisNode8streamToERNS_12SourceStreamE -__ZNK3KJS19FunctionCallDotNode10precedenceEv -__ZNK3KJS19FunctionCallDotNode8streamToERNS_12SourceStreamE -__ZNK3KJS16FunctionBodyNode11paramStringEv -__ZNK3KJS15RegExpObjectImp14arrayOfMatchesEPNS_9ExecStateE -__ZN3KJS9Arguments17mappedIndexGetterEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE -__ZN3KJS19arrayProtoFuncSliceEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZN3KJS22functionProtoFuncApplyEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZNK3KJS13ArrayInstance9classInfoEv -__ZN3KJS24substituteBackreferencesERKNS_7UStringES2_PiPNS_6RegExpE -__ZNK3KJS15DotAccessorNode10precedenceEv -__ZNK3KJS15DotAccessorNode8streamToERNS_12SourceStreamE -__ZNK3KJS16VarStatementNode8streamToERNS_12SourceStreamE -__ZNK3KJS17AssignResolveNode8streamToERNS_12SourceStreamE -__ZNK3KJS6IfNode8streamToERNS_12SourceStreamE -__ZNK3KJS14LogicalNotNode8streamToERNS_12SourceStreamE -__ZNK3KJS9ArrayNode10precedenceEv -__ZNK3KJS9ArrayNode8streamToERNS_12SourceStreamE -__ZNK3KJS11ElementNode8streamToERNS_12SourceStreamE -__ZNK3KJS10StringNode10precedenceEv -__ZNK3KJS10StringNode8streamToERNS_12SourceStreamE -__ZN3KJS29escapeStringForPrettyPrintingERKNS_7UStringE -__ZNK3KJS9BlockNode8streamToERNS_12SourceStreamE -__ZNK3KJS17AssignBracketNode8streamToERNS_12SourceStreamE -__ZNK3KJS10IfElseNode8streamToERNS_12SourceStreamE -__ZNK3KJS9EqualNode8streamToERNS_12SourceStreamE -__ZNK3KJS9EqualNode10precedenceEv -__ZN3KJS35streamLeftAssociativeBinaryOperatorERNS_12SourceStreamENS_10PrecedenceEPKcPKNS_4NodeES7_ -__ZNK3KJS17ReadModifyDotNode8streamToERNS_12SourceStreamE -__ZNK3KJS7AddNode10precedenceEv -__ZNK3KJS7AddNode8streamToERNS_12SourceStreamE -__ZNK3KJS15ConditionalNode10precedenceEv -__ZNK3KJS15ConditionalNode8streamToERNS_12SourceStreamE -__ZNK3KJS10RegExpNode10precedenceEv -__ZNK3KJS10RegExpNode8streamToERNS_12SourceStreamE -__ZNK3KJS21ReadModifyResolveNode8streamToERNS_12SourceStreamE -__ZNK3KJS7TryNode8streamToERNS_12SourceStreamE -__ZNK3KJS11NewExprNode10precedenceEv -__ZNK3KJS11NewExprNode8streamToERNS_12SourceStreamE -__ZNK3KJS10NumberNode10precedenceEv -__ZNK3KJS10NumberNode8streamToERNS_12SourceStreamE -__ZN3KJS12SourceStreamlsEd -__ZNK3KJS13LogicalOrNode10precedenceEv -__ZNK3KJS13LogicalOrNode8streamToERNS_12SourceStreamE -__ZNK3KJS8NullNode10precedenceEv -__ZNK3KJS8NullNode8streamToERNS_12SourceStreamE -__ZNK3KJS14LogicalAndNode8streamToERNS_12SourceStreamE -__ZNK3KJS14LogicalAndNode10precedenceEv -__ZNK3KJS14LogicalNotNode10precedenceEv -__ZN3KJS7UString17expandPreCapacityEi -__ZN3KJS19BracketAccessorNode17evaluateToBooleanEPNS_9ExecStateE -__ZNK3KJS11GreaterNode10precedenceEv -__ZNK3KJS11GreaterNode8streamToERNS_12SourceStreamE -__ZNK3KJS17ObjectLiteralNode10precedenceEv -__ZNK3KJS17ObjectLiteralNode8streamToERNS_12SourceStreamE -__ZNK3KJS16PropertyListNode8streamToERNS_12SourceStreamE -__ZNK3KJS12PropertyNode8streamToERNS_12SourceStreamE -__ZNK3KJS8LessNode10precedenceEv -__ZNK3KJS8LessNode8streamToERNS_12SourceStreamE -__ZNK3KJS19BracketAccessorNode10precedenceEv -__ZNK3KJS19BracketAccessorNode8streamToERNS_12SourceStreamE -__ZNK3KJS15TypeOfValueNode10precedenceEv -__ZNK3KJS15TypeOfValueNode8streamToERNS_12SourceStreamE -__ZNK3KJS7ForNode8streamToERNS_12SourceStreamE -__ZNK3KJS9CommaNode8streamToERNS_12SourceStreamE -__ZNK3KJS17AssignResolveNode10precedenceEv -__ZNK3KJS23FunctionCallResolveNode10precedenceEv -__ZNK3KJS12FuncExprNode10precedenceEv -__ZNK3KJS12FuncExprNode8streamToERNS_12SourceStreamE -__ZNK3KJS13ParameterNode8streamToERNS_12SourceStreamE -__ZNK3KJS9ForInNode8streamToERNS_12SourceStreamE -__ZNK3KJS10ReturnNode8streamToERNS_12SourceStreamE -__ZNK3KJS13GreaterEqNode10precedenceEv -__ZNK3KJS13GreaterEqNode8streamToERNS_12SourceStreamE -__ZNK3KJS8TrueNode10precedenceEv -__ZNK3KJS8TrueNode8streamToERNS_12SourceStreamE -__ZNK3KJS21FunctionCallValueNode8streamToERNS_12SourceStreamE -__ZN3KJS11ElementNode8evaluateEPNS_9ExecStateE -__ZNK3KJS8MultNode10precedenceEv -__ZNK3KJS8MultNode8streamToERNS_12SourceStreamE -__ZN3KJS21functionProtoFuncCallEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZNK3KJS4List8getSliceEiRS0_ -__ZN3KJS10IfElseNode7executeEPNS_9ExecStateE -__ZN3KJS6InNode17evaluateToBooleanEPNS_9ExecStateE -__ZNK3KJS12NotEqualNode10precedenceEv -__ZNK3KJS12NotEqualNode8streamToERNS_12SourceStreamE -__ZN3KJS17AssignResolveNode8evaluateEPNS_9ExecStateE -__ZN3KJS13DeleteDotNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE -__ZN3KJS12ContinueNode7executeEPNS_9ExecStateE -__ZN3KJS13DeleteDotNode8evaluateEPNS_9ExecStateE -__ZN3KJS11FunctionImp14deletePropertyEPNS_9ExecStateERKNS_10IdentifierE -__ZN3KJS8JSObject14deletePropertyEPNS_9ExecStateERKNS_10IdentifierE -__ZNK3KJS11PropertyMap3getERKNS_10IdentifierERj -__ZN3KJS11GreaterNode17evaluateToBooleanEPNS_9ExecStateE -__ZN3KJS13PrefixDotNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE -__ZN3KJS13PreIncDotNode8evaluateEPNS_9ExecStateE -__ZN3KJS14JSGlobalObject3putEPNS_9ExecStateERKNS_10IdentifierEPNS_7JSValueEi -__ZNK3KJS8JSObject8toStringEPNS_9ExecStateE -__ZNK3KJS8JSObject11toPrimitiveEPNS_9ExecStateENS_6JSTypeE -__ZNK3KJS8JSObject12defaultValueEPNS_9ExecStateENS_6JSTypeE -__ZN3KJS22arrayProtoFuncToStringEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZN3WTF9HashTableIiiNS_17IdentityExtractorIiEENS_7IntHashIiEENS_10HashTraitsIiEES6_E3addIPN3KJS16RuntimeObjectImpESB_NS_17HashSetTranslatorILb1ESB_NS5_ISB_EES6_NS_7PtrHashISB_EEEEEESt4pairINS_17HashTableIteratorIiiS2_S4_S6_S6_EEbERKT_RKT0_ -__ZN3KJS11JSImmediate8toStringEPKNS_7JSValueE -__ZN3KJS12NotEqualNode17evaluateToBooleanEPNS_9ExecStateE -__ZN3KJS21arrayProtoFuncIndexOfEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZNK3KJS14ErrorObjectImp19implementsConstructEv -__ZN3KJS14ErrorObjectImp9constructEPNS_9ExecStateERKNS_4ListE -__ZN3KJS9Collector7collectEv -__ZN3KJS9Collector31markCurrentThreadConservativelyEv -__ZN3KJS9Collector30markStackObjectsConservativelyEPvS1_ -__ZN3KJS6JSCell4markEv -__ZN3KJS8JSObject4markEv -__ZNK3KJS11PropertyMap4markEv -__ZN3KJS11FunctionImp4markEv -__ZN3KJS14JSGlobalObject4markEv -__ZN3KJS16JSVariableObject4markEv -__ZN3KJS13ArrayInstance4markEv -__ZN3KJS15JSWrapperObject4markEv -__ZN3KJS13ActivationImp4markEv -__ZN3KJS13ActivationImp12markChildrenEv -__ZN3KJS14NativeErrorImp4markEv -__ZN3KJS9Arguments4markEv -__ZN3KJS9Collector20markProtectedObjectsEv -__ZN3KJS9Collector5sweepILNS0_8HeapTypeE0EEEmb -__ZN3KJS11PropertyMapD1Ev -__ZN3KJS11FunctionImpD0Ev -__ZN3KJS9StringImpD0Ev -__ZN3KJS9RegExpImpD0Ev -__ZN3KJS13ArrayInstanceD0Ev -__ZN3KJS9ArgumentsD0Ev -__ZN3KJS9Collector5sweepILNS0_8HeapTypeE1EEEmb -__ZN3KJS14AddStringsNode8evaluateEPNS_9ExecStateE -__ZN3KJS17AddStringLeftNode8evaluateEPNS_9ExecStateE -__ZNK3KJS9StringImp11toPrimitiveEPNS_9ExecStateENS_6JSTypeE -__ZN3KJS7AddNode8evaluateEPNS_9ExecStateE -__ZN3KJS21stringProtoFuncCharAtEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZN3KJS26stringProtoFuncToUpperCaseEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZN3KJS24stringProtoFuncSubstringEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZN3KJS26stringProtoFuncToLowerCaseEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZNK3KJS7UString8toUInt32EPb -__ZN3KJS22ReadModifyLocalVarNode8evaluateEPNS_9ExecStateE -__ZN3KJS19PostIncLocalVarNode8evaluateEPNS_9ExecStateE -__ZN3KJS17PreDecResolveNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE -__ZN3KJS18PreDecLocalVarNode8evaluateEPNS_9ExecStateE -__ZN3KJS8MultNode16evaluateToNumberEPNS_9ExecStateE -__ZNK3KJS9NumberImp4typeEv -__ZN3KJS20dateProtoFuncSetTimeEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZN3KJS7SubNode16evaluateToNumberEPNS_9ExecStateE -__ZNK3KJS9StringImp8toNumberEPNS_9ExecStateE -__ZN3KJS18globalFuncParseIntEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZNK3KJS7JSValue15toInt32SlowCaseEPNS_9ExecStateERb -__ZN3KJS24dateProtoFuncToGMTStringEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZN3KJS10formatTimeERKNS_17GregorianDateTimeEb -__ZNK3KJS15RegExpObjectImp19implementsConstructEv -__ZN3KJS15RegExpObjectImp9constructEPNS_9ExecStateERKNS_4ListE -__ZN3KJS19regExpProtoFuncExecEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZN3KJS14StringInstance18getOwnPropertySlotEPNS_9ExecStateEjRNS_12PropertySlotE -__ZN3KJS35stringInstanceNumericPropertyGetterEPNS_9ExecStateEPNS_8JSObjectEjRKNS_12PropertySlotE -__ZN3KJS23FunctionCallResolveNode17evaluateToBooleanEPNS_9ExecStateE -__ZN3KJS15globalFuncIsNaNEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZN3KJS20dateProtoFuncSetYearEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZN3KJS21gregorianDateTimeToMSERKNS_17GregorianDateTimeEdb -__ZN3KJS15dateToDayInYearEiii -__ZN3KJS21ReadModifyBracketNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE -__ZNK3KJS15ObjectObjectImp19implementsConstructEv -__ZN3KJS21ReadModifyBracketNode8evaluateEPNS_9ExecStateE -__ZNK3KJS9ExecState12hadExceptionEv -__ZNK3KJS7JSValue8toObjectEPNS_9ExecStateE -__ZNK3KJS7JSValue8toStringEPNS_9ExecStateE -__ZN3KJS7UStringD1Ev -__ZN3KJS8JSObject15getPropertySlotEPNS_9ExecStateERKNS_10IdentifierERNS_12PropertySlotE -__ZNK3KJS12PropertySlot8getValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierE -__ZNK3WTF6RefPtrIN3KJS14ExpressionNodeEE3getEv -__ZN3KJS3addEPNS_9ExecStateEPNS_7JSValueES3_ -__ZN3KJS10IdentifierD1Ev -__ZNK3KJS8JSObject3getEPNS_9ExecStateERKNS_10IdentifierE -__ZN3KJS20arrayProtoFuncConcatEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZN3KJS14ExpressionNode17evaluateToBooleanEPNS_9ExecStateE -__ZN3KJS9BreakNode7executeEPNS_9ExecStateE -__ZN3KJS18arrayProtoFuncJoinEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZN3KJS11JSImmediate8toObjectEPKNS_7JSValueEPNS_9ExecStateE -__ZN3KJS10throwErrorEPNS_9ExecStateENS_9ErrorTypeEPKc -__ZN3KJS5Error6createEPNS_9ExecStateENS_9ErrorTypeERKNS_7UStringEiiS6_ -__ZN3KJS14NativeErrorImp9constructEPNS_9ExecStateERKNS_4ListE -__ZNK3KJS6JSCell17getTruncatedInt32ERi -__ZN3KJS15StringObjectImp14callAsFunctionEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZN3KJS9Collector15recordExtraCostEm -__ZN3KJS22objectProtoFuncValueOfEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZN3KJS23objectProtoFuncToStringEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZNK3KJS8JSObject9classNameEv -__ZN3KJS14PostDecDotNode8evaluateEPNS_9ExecStateE -__ZN3KJS9CommaNodeD1Ev -__ZN3KJS28globalFuncDecodeURIComponentEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZN3KJS6decodeEPNS_9ExecStateERKNS_4ListEPKcb -__ZN3KJS19BracketAccessorNode16evaluateToNumberEPNS_9ExecStateE -__ZN3KJS15TypeOfValueNodeD1Ev -__ZN3KJS17PrototypeFunctionD0Ev -__ZN3KJS13ErrorInstanceD0Ev -__ZN3KJS18mathProtoFuncRoundEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZN3KJS23FunctionCallResolveNode16evaluateToNumberEPNS_9ExecStateE -__ZN3KJS13GreaterEqNodeD1Ev -__ZN3KJS7ModNodeD1Ev -__ZN3KJS24LocalVarFunctionCallNode17evaluateToBooleanEPNS_9ExecStateE -__ZN3KJS4List15expandAndAppendEPNS_7JSValueE -__ZN3WTF6VectorIPN3KJS7JSValueELm8EE15reserveCapacityEm -__ZN3KJS10SwitchNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE -__ZN3KJS13CaseBlockNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE -__ZN3KJS14ClauseListNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE -__ZN3KJS14CaseClauseNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE -__ZN3KJS10SwitchNode7executeEPNS_9ExecStateE -__ZN3KJS13CaseBlockNode12executeBlockEPNS_9ExecStateEPNS_7JSValueE -__ZN3KJS18NotStrictEqualNode17evaluateToBooleanEPNS_9ExecStateE -__Z23_NPN_CreateScriptObjectP4_NPPPN3KJS8JSObjectEN3WTF10PassRefPtrINS1_8Bindings10RootObjectEEE -__NPN_CreateObject -__Z10jsAllocateP4_NPPP7NPClass -__NPN_RetainObject -__NPN_Evaluate -__ZNK3KJS8Bindings10RootObject12globalObjectEv -__ZN3KJS8Bindings22convertNPStringToUTF16EPK9_NPStringPPtPj -__ZN3KJS8Bindings36convertUTF8ToUTF16WithLatin1FallbackEPKciPPtPj -__ZN3WTF7Unicode18convertUTF8ToUTF16EPPKcS2_PPtS4_b -__ZN3KJS11Interpreter8evaluateEPNS_9ExecStateERKNS_7UStringEiS5_PNS_7JSValueE -__ZN3KJS8Bindings23convertValueToNPVariantEPNS_9ExecStateEPNS_7JSValueEP10_NPVariant -__ZN3KJS11JSImmediate4typeEPKNS_7JSValueE -__NPN_GetStringIdentifier -__ZN3KJS8Bindings26identifierFromNPIdentifierEPKc -__NPN_Invoke -__ZN3KJS8Bindings14findRootObjectEPNS_14JSGlobalObjectE -__NPN_ReleaseVariantValue -__ZNK3KJS7UString10UTF8StringEb +__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 +__ZN3JSC10RegExpNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE +__ZN3JSC6RegExp6createEPNS_12JSGlobalDataERKNS_7UStringES5_ +__ZN3JSC4Yarr15jitCompileRegexEPNS_12JSGlobalDataERNS0_14RegexCodeBlockERKNS_7UStringERjRPKcbb +__ZN3JSC4Yarr12compileRegexERKNS_7UStringERNS0_12RegexPatternE +__ZN3JSC4Yarr18PatternDisjunction17addNewAlternativeEv +__ZN3WTF6VectorIPN3JSC4Yarr18PatternAlternativeELm0EE14expandCapacityEm +__ZN3JSC4Yarr6ParserINS0_23RegexPatternConstructorEE11parseTokensEv +__ZN3WTF6VectorIN3JSC4Yarr11PatternTermELm0EE14expandCapacityEmPKS3_ +__ZN3WTF6VectorIN3JSC4Yarr11PatternTermELm0EE14expandCapacityEm +__ZN3JSC4Yarr6ParserINS0_23RegexPatternConstructorEE11parseEscapeILb0ES2_EEbRT0_ +__ZN3JSC4Yarr23RegexPatternConstructor25atomBuiltInCharacterClassENS0_23BuiltInCharacterClassIDEb +__ZN3JSC4Yarr14wordcharCreateEv +__ZN3WTF6VectorItLm0EE14expandCapacityEm +__ZN3WTF6VectorIN3JSC4Yarr14CharacterRangeELm0EE14expandCapacityEmPKS3_ +__ZN3WTF6VectorIN3JSC4Yarr14CharacterRangeELm0EE14expandCapacityEm +__ZN3WTF6VectorIPN3JSC4Yarr14CharacterClassELm0EE14expandCapacityEmPKS4_ +__ZN3WTF6VectorIPN3JSC4Yarr14CharacterClassELm0EE14expandCapacityEm +__ZN3JSC4Yarr14RegexGenerator19generateDisjunctionEPNS0_18PatternDisjunctionE +__ZN3JSC12X86Assembler7addl_irEiNS_3X8610RegisterIDE +__ZN3JSC23MacroAssemblerX86Common8branch32ENS0_9ConditionENS_3X8610RegisterIDES3_ +__ZN3JSC22AbstractMacroAssemblerINS_12X86AssemblerEE8JumpList6appendENS2_4JumpE +__ZN3JSC4Yarr14RegexGenerator12generateTermERNS1_19TermGenerationStateE +__ZN3JSC23MacroAssemblerX86Common8branch32ENS0_9ConditionENS_3X8610RegisterIDENS_22AbstractMacroAssemblerINS_12X86AssemblerEE5I +__ZN3JSC4Yarr14RegexGenerator19TermGenerationState15jumpToBacktrackENS_22AbstractMacroAssemblerINS_12X86AssemblerEE4JumpEPNS_14 +__ZN3JSC4Yarr14RegexGenerator13readCharacterEiNS_3X8610RegisterIDE +__ZN3JSC4Yarr14RegexGenerator19matchCharacterClassENS_3X8610RegisterIDERNS_22AbstractMacroAssemblerINS_12X86AssemblerEE8JumpLis +__ZN3JSC4Yarr14RegexGenerator24matchCharacterClassRangeENS_3X8610RegisterIDERNS_22AbstractMacroAssemblerINS_12X86AssemblerEE8Ju +__ZN3JSC22AbstractMacroAssemblerINS_12X86AssemblerEE8JumpList4linkEPS2_ +__ZN3JSC23MacroAssemblerX86Common4jumpEv +__ZN3WTF6VectorIN3JSC22AbstractMacroAssemblerINS1_12X86AssemblerEE4JumpELm16EED1Ev +__ZN3JSC4Yarr14RegexGenerator28generateCharacterClassGreedyERNS1_19TermGenerationStateE +__ZN3JSC12X86Assembler7subl_irEiNS_3X8610RegisterIDE +__ZN3JSC15AssemblerBuffer4growEv +__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 +__ZN3JSC4Yarr25CharacterClassConstructor7putCharEt +__ZN3JSC4Yarr25CharacterClassConstructor9addSortedERN3WTF6VectorItLm0EEEt +__ZN3JSC4Yarr23RegexPatternConstructor21atomCharacterClassEndEv +__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 +__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 +__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 +__ZN3JSC4Yarr6ParserINS0_23RegexPatternConstructorEE11parseEscapeILb1ENS3_28CharacterClassParserDelegateEEEbRT0_ +__ZN3JSC4Yarr12digitsCreateEv +__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 +__ZN3JSC9CodeBlock13unlinkCallersEv +__ZN3WTF6VectorINS_6RefPtrIN3JSC6RegExpEEELm0EE6shrinkEm +__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 +__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 +__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 +__ZN3JSCL19arrayProtoFuncShiftEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZN3JSCL11getPropertyEPNS_9ExecStateEPNS_8JSObjectEj +__ZN3JSC7JSArray14deletePropertyEPNS_9ExecStateEj +__ZN3JSC7JSArray9setLengthEj +__ZN3JSC7UString6appendEPKc +__ZN3JSC8JITStubs23cti_op_create_argumentsEPPv +__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 +__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 +__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 +__ZN3JSC4Yarr23RegexPatternConstructor8copyTermERNS0_11PatternTermE +__ZL17bracketIsAnchoredPKh +__ZL32branchFindFirstAssertedCharacterPKhb +__ZL20branchNeedsLineStartPKhjj +__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 +__ZN3JSC23FunctionCallBracketNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE +__ZN3JSC20EvalFunctionCallNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE +__ZN3JSC17BytecodeGenerator19emitResolveWithBaseEPNS_10RegisterIDES2_RKNS_10IdentifierE +__ZN3JSC23FunctionCallBracketNodeD0Ev +__ZN3JSC20EvalFunctionCallNodeD0Ev +__ZN3JSC3JIT25emit_op_resolve_with_baseEPNS_11InstructionE +__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 +__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 +__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 +__ZN3JSCL21dateProtoFuncGetMonthEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZN3JSCL21dateProtoFuncGetHoursEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZN3JSCL23dateProtoFuncGetMinutesEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZN3JSCL23dateProtoFuncGetSecondsEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZN3JSCL19dateProtoFuncGetDayEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZN3JSCL30dateProtoFuncGetTimezoneOffsetEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZN3JSC28createUndefinedVariableErrorEPNS_9ExecStateERKNS_10IdentifierEjPNS_9CodeBlockE +__ZN3JSC9CodeBlock32expressionRangeForBytecodeOffsetEPNS_9ExecStateEjRiS3_S3_ +__ZN3JSC5Error6createEPNS_9ExecStateENS_9ErrorTypeERKNS_7UStringEilS6_ +__ZN3JSC22NativeErrorConstructor16getConstructDataERNS_13ConstructDataE +__ZN3JSCL35constructWithNativeErrorConstructorEPNS_9ExecStateEPNS_8JSObjectERKNS_7ArgListE +__ZN3JSC22NativeErrorConstructor9constructEPNS_9ExecStateERKNS_7ArgListE +__ZN3JSC8JSObject17putWithAttributesEPNS_9ExecStateERKNS_10IdentifierENS_7JSValueEj +__ZN3JSCL23returnToThrowTrampolineEPNS_12JSGlobalDataEPvRS2_ +_ctiVMThrowTrampoline +__ZN3JSC8JITStubs12cti_vm_throwEPPv +__ZN3JSC11Interpreter14throwExceptionERPNS_9ExecStateERNS_7JSValueEjb +__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 +__ZN3JSC26createNotAnObjectErrorStubEPNS_9ExecStateEb +__ZN3JSC13JSNotAnObject18getOwnPropertySlotEPNS_9ExecStateERKNS_10IdentifierERNS_12PropertySlotE +__ZNK3JSC22JSNotAnObjectErrorStub22isNotAnObjectErrorStubEv +__ZN3JSC22createNotAnObjectErrorEPNS_9ExecStateEPNS_22JSNotAnObjectErrorStubEjPNS_9CodeBlockE +__ZN3JSC9CodeBlock37getByIdExceptionInfoForBytecodeOffsetEPNS_9ExecStateEjRNS_8OpcodeIDE +__ZN3JSCL18createErrorMessageEPNS_9ExecStateEPNS_9CodeBlockEiiiNS_7JSValueENS_7UStringE +__ZN3JSC13ErrorInstanceD1Ev +__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 -__Z35NPN_InitializeVariantWithStringCopyP10_NPVariantPK9_NPString -__ZN3KJS7CStringD1Ev -__NPN_ReleaseObject -__Z12jsDeallocateP8NPObject -__ZN3KJS8Bindings10RootObject11gcUnprotectEPNS_8JSObjectE -_pow5mult -_quorem -_diff -__ZN3WTF6VectorIPN3KJS12FuncDeclNodeELm16EE14expandCapacityEmPKS3_ -__ZN3WTF6VectorIPN3KJS12FuncDeclNodeELm16EE14expandCapacityEm -__ZN3WTF6VectorIPN3KJS12FuncDeclNodeELm16EE15reserveCapacityEm -__ZN3KJS10NumberNode8setValueEd -__ZN3KJS11ResolveNode16evaluateToNumberEPNS_9ExecStateE -__ZN3KJS21dateProtoFuncToStringEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZN3KJS24dateProtoFuncGetFullYearEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZN3KJS12NotEqualNode8evaluateEPNS_9ExecStateE -__ZN3KJS14InstanceOfNode17evaluateToBooleanEPNS_9ExecStateE -__ZN3KJS17PreIncResolveNode8evaluateEPNS_9ExecStateE -__ZNK3KJS9NumberImp9toBooleanEPNS_9ExecStateE -__ZN3KJS10LessEqNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE -__ZN3KJS29objectProtoFuncHasOwnPropertyEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZN3KJS10LessEqNode17evaluateToBooleanEPNS_9ExecStateE -__ZN3KJS13UnaryPlusNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE -__ZN3KJS17DeleteBracketNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE -__ZN3KJS17DeleteBracketNode8evaluateEPNS_9ExecStateE -__ZN3KJS20arrayProtoFuncSpliceEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZN3KJS17staticValueGetterINS_13MathObjectImpEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE -__ZNK3KJS13MathObjectImp16getValuePropertyEPNS_9ExecStateEi -__NPN_DeallocateObject -__ZN3KJS14PostIncDotNodeD1Ev -__ZN3KJS22ReadModifyLocalVarNodeD1Ev -__ZN3KJS10LessEqNodeD1Ev -__ZN3KJS18PostDecResolveNodeD1Ev -__ZN3KJS17DeleteBracketNodeD1Ev -__ZN3KJS18PostIncResolveNodeD1Ev -__ZN3KJS14InstanceOfNodeD1Ev -__ZN3KJS10NegateNodeD1Ev -__ZN3KJS17PreDecResolveNodeD1Ev -__ZN3KJS21ReadModifyBracketNodeD1Ev -__ZN3KJS10BitAndNodeD1Ev -__ZN3KJS9BitOrNodeD1Ev -__ZN3KJS14RightShiftNodeD1Ev -__ZN3KJS13LeftShiftNodeD1Ev -__ZN3KJS13UnaryPlusNodeD1Ev -__ZN3KJS13MathObjectImpD0Ev -__ZN3KJS14NativeErrorImpD0Ev -__ZN3KJS14ErrorObjectImpD0Ev -__ZN3KJS15RegExpObjectImpD0Ev -__ZN3KJS17DateObjectFuncImpD0Ev -__ZN3KJS13DateObjectImpD0Ev -__ZN3KJS15NumberObjectImpD0Ev -__ZN3KJS16BooleanObjectImpD0Ev -__ZN3KJS19StringObjectFuncImpD0Ev -__ZN3KJS15StringObjectImpD0Ev -__ZN3KJS14ArrayObjectImpD0Ev -__ZN3KJS17FunctionObjectImpD0Ev -__ZN3KJS15ObjectObjectImpD0Ev -__ZN3KJS20NativeErrorPrototypeD0Ev -__ZN3KJS15RegExpPrototypeD0Ev -__ZN3KJS15NumberPrototypeD0Ev -__ZN3KJS16BooleanPrototypeD0Ev -__ZN3KJS15StringPrototypeD0Ev -__ZN3KJS15ObjectPrototypeD0Ev -__ZN3KJS17FunctionPrototypeD0Ev -__ZN3KJS13PreIncDotNodeD1Ev -__ZN3KJS17staticValueGetterINS_15RegExpObjectImpEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE -__ZNK3KJS15RegExpObjectImp16getValuePropertyEPNS_9ExecStateEi -__ZNK3KJS15RegExpObjectImp10getBackrefEj -__ZN3KJS16mathProtoFuncMaxEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZN3KJS17staticValueGetterINS_15NumberObjectImpEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE -__ZNK3KJS15NumberObjectImp16getValuePropertyEPNS_9ExecStateEi -__ZN3KJS10NegateNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE -__ZN3KJS10NegateNode8evaluateEPNS_9ExecStateE -__ZN3KJS25stringProtoFuncCharCodeAtEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZN3KJS21arrayProtoFuncUnShiftEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZN3KJS10LessEqNode8evaluateEPNS_9ExecStateE -__ZN3KJS8JSObject15getPropertySlotEPNS_9ExecStateEjRNS_12PropertySlotE -__ZNK3KJS12PropertySlot8getValueEPNS_9ExecStateEPNS_8JSObjectEj -__ZN3KJS16mathProtoFuncMinEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZN3KJS10Identifier5equalEPKNS_7UString3RepEPKc -__ZN3KJS11addSlowCaseEPNS_9ExecStateEPNS_7JSValueES3_ -__ZN3KJS8LessNode8evaluateEPNS_9ExecStateE -__ZN3KJS7DivNode16evaluateToNumberEPNS_9ExecStateE -__ZN3KJS10NegateNode16evaluateToNumberEPNS_9ExecStateE -__ZN3KJS7AddNode16evaluateToNumberEPNS_9ExecStateE -__ZN3KJS16mathProtoFuncSinEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZN3KJS16mathProtoFuncLogEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZN3KJS16mathProtoFuncAbsEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZN3WTF6VectorIPN3KJS9ExecStateELm16EE14expandCapacityEm -__ZN3WTF6VectorIPN3KJS9ExecStateELm16EE15reserveCapacityEm -__ZN3KJS17arrayProtoFuncPopEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZN3KJS21stringProtoFuncSubstrEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZN3KJS28globalFuncEncodeURIComponentEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZN3KJS6encodeEPNS_9ExecStateERKNS_4ListEPKc -__ZN3KJS17PrefixBracketNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE -__ZN3KJS17PreIncBracketNode8evaluateEPNS_9ExecStateE -__ZN3KJS16mathProtoFuncExpEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZN3KJS17mathProtoFuncATanEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZN3KJS17mathProtoFuncCeilEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZN3KJS14AddNumbersNode8evaluateEPNS_9ExecStateE -__ZN3KJS18arrayProtoFuncSortEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZN3KJS13ArrayInstance4sortEPNS_9ExecStateEPNS_8JSObjectE -__ZN3KJS13ArrayInstance17compactForSortingEv -__ZN3KJS34compareWithCompareFunctionForQSortEPKvS1_ -__ZN3KJS13ArrayInstance4sortEPNS_9ExecStateE -__ZN3KJS16mathProtoFuncPowEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZN3KJS15NumberObjectImp9constructEPNS_9ExecStateERKNS_4ListE -__ZN3KJS23numberProtoFuncToStringEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZNK3KJS9NumberImp8toObjectEPNS_9ExecStateE -__ZN3KJS16mathProtoFuncCosEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZN3KJS17mathProtoFuncSqrtEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZN3KJS17mathProtoFuncASinEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZN3KJS14ExpressionNode16evaluateToNumberEPNS_9ExecStateE -__ZN3KJS11DoWhileNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE -__ZN3KJS21stringProtoFuncSearchEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZN3KJS13PreDecDotNode8evaluateEPNS_9ExecStateE -__ZN3KJS18PostfixBracketNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE -__ZN3KJS18PostIncBracketNode8evaluateEPNS_9ExecStateE -__ZN3KJS13LeftShiftNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE +__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 +__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 +__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 -__ZN3KJS9StringImp18getPrimitiveNumberEPNS_9ExecStateERdRPNS_7JSValueE -__ZN3KJSltERKNS_7UStringES2_ -__ZN3KJS15ConditionalNode16evaluateToNumberEPNS_9ExecStateE -__ZN3KJS10BitAndNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE -__ZN3KJS10BitAndNode17evaluateToBooleanEPNS_9ExecStateE -__ZN3KJS15DotAccessorNode15evaluateToInt32EPNS_9ExecStateE -__ZN3KJS19ImmediateNumberNode15evaluateToInt32EPNS_9ExecStateE -__ZN3KJS13ArrayInstance16getPropertyNamesEPNS_9ExecStateERNS_17PropertyNameArrayE -__ZN3KJS18LocalVarAccessNode15evaluateToInt32EPNS_9ExecStateE -__ZN3KJS13LeftShiftNode16evaluateToNumberEPNS_9ExecStateE -__ZN3KJS19BracketAccessorNode16evaluateToUInt32EPNS_9ExecStateE -__ZN3KJS14RightShiftNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE -__ZN3KJS14RightShiftNode8evaluateEPNS_9ExecStateE -__ZN3KJS7AddNode15evaluateToInt32EPNS_9ExecStateE -__ZN3KJS19ImmediateNumberNode16evaluateToUInt32EPNS_9ExecStateE -__ZN3KJS13LeftShiftNode8evaluateEPNS_9ExecStateE -__ZN3KJS18LocalVarAccessNode16evaluateToUInt32EPNS_9ExecStateE -__ZNK3KJS9NumberImp17getTruncatedInt32ERi -__ZN3KJS19BracketAccessorNode15evaluateToInt32EPNS_9ExecStateE -__ZN3KJS16BooleanObjectImp9constructEPNS_9ExecStateERKNS_4ListE -__ZN3KJS24booleanProtoFuncToStringEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZN3KJS14BitwiseNotNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE -__ZN3KJS9BitOrNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE -__ZN3KJS9BitOrNode8evaluateEPNS_9ExecStateE -__ZN3KJS10BitAndNode8evaluateEPNS_9ExecStateE -__ZN3KJS14BitwiseNotNode8evaluateEPNS_9ExecStateE -__ZN3KJS15NumberObjectImp14callAsFunctionEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZN3KJS8Bindings8Instance32createBindingForLanguageInstanceENS1_15BindingLanguageEPvN3WTF10PassRefPtrINS0_10RootObjectEEE -__ZN3KJS8Bindings9CInstanceC2EP8NPObjectN3WTF10PassRefPtrINS0_10RootObjectEEE -__ZN3KJS8Bindings8InstanceC2EN3WTF10PassRefPtrINS0_10RootObjectEEE -__ZNK3KJS8Bindings8Instance10rootObjectEv -__ZN3KJS8Bindings8Instance19createRuntimeObjectEPS1_ -__ZN3KJS16RuntimeObjectImpC2EPNS_8Bindings8InstanceE -__ZN3KJS8Bindings10RootObject16addRuntimeObjectEPNS_16RuntimeObjectImpE -__ZN3KJS16RuntimeObjectImp18getOwnPropertySlotEPNS_9ExecStateERKNS_10IdentifierERNS_12PropertySlotE -__ZN3KJS8Bindings9CInstance5beginEv -__ZNK3KJS8Bindings9CInstance8getClassEv -__ZN3KJS8Bindings6CClass11classForIsAEP7NPClass -__ZN3KJS8Bindings6CClassC2EP7NPClass -__ZNK3KJS8Bindings6CClass10fieldNamedERKNS_10IdentifierEPNS0_8InstanceE -__ZNK3KJS7UString5asciiEv -__ZNK3KJS8Bindings6CClass12methodsNamedERKNS_10IdentifierEPNS0_8InstanceE -__NPN_UTF8FromIdentifier -__ZN3KJS8Bindings5Class14fallbackObjectEPNS_9ExecStateEPNS0_8InstanceERKNS_10IdentifierE -__ZN3KJS8Bindings9CInstance3endEv -__ZN3WTF6VectorIPN3KJS8Bindings6MethodELm0EE14expandCapacityEmPKS4_ -__ZN3WTF6VectorIPN3KJS8Bindings6MethodELm0EE14expandCapacityEm -__ZN3WTF6VectorIPN3KJS8Bindings6MethodELm0EE15reserveCapacityEm -__ZN3KJS16RuntimeObjectImp12methodGetterEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE -__ZN3KJS13RuntimeMethodC2EPNS_9ExecStateERKNS_10IdentifierERN3WTF6VectorIPNS_8Bindings6MethodELm0EEE -__ZN3WTF6VectorIPN3KJS8Bindings6MethodELm0EEC2ERKS5_ -__ZN3KJS13RuntimeMethod14callAsFunctionEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZNK3KJS16RuntimeObjectImp9classInfoEv -__ZN3KJS8Bindings9CInstance12invokeMethodEPNS_9ExecStateERKN3WTF6VectorIPNS0_6MethodELm0EEERKNS_4ListE -__ZNK3KJS8Bindings7CMethod4nameEv -__ZN3KJS8Bindings23convertNPVariantToValueEPNS_9ExecStateEPK10_NPVariantPNS0_10RootObjectE -__ZN3KJS16RuntimeObjectImpD2Ev -__ZN3KJS8Bindings10RootObject19removeRuntimeObjectEPNS_16RuntimeObjectImpE -__ZN3KJS4Node10throwErrorEPNS_9ExecStateENS_9ErrorTypeEPKcPNS_7JSValueEPS0_RKNS_10IdentifierE -__ZN3KJS10substituteERNS_7UStringERKS0_ -__ZN3KJS4Node16rethrowExceptionEPNS_9ExecStateE -__ZN3KJS4Node15handleExceptionEPNS_9ExecStateEPNS_7JSValueE -__ZN3KJS16RuntimeObjectImp10invalidateEv -__ZN3KJS16JSVariableObject14deletePropertyEPNS_9ExecStateERKNS_10IdentifierE -__ZN3KJS14JSGlobalObjectD2Ev -__ZN3KJS15GlobalExecStateD1Ev -__ZN3KJS14BitwiseNotNodeD1Ev -__ZN3KJSplERKNS_7UStringES2_ -__ZN3KJS5Lexer14convertUnicodeEiiii -__ZN3KJS14ArrayObjectImp14callAsFunctionEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZN3KJS9Arguments3putEPNS_9ExecStateERKNS_10IdentifierEPNS_7JSValueEi -__ZN3WTF9HashTableIjSt4pairIjiENS_18PairFirstExtractorIS2_EENS_7IntHashIjEENS_14PairHashTraitsINS_10HashTraitsIjEENS8_IiEEEES9_E3addIjS2_NS_22IdentityHashTranslatorIjS2_S6_EEEES1_INS_17HashTableIteratorIjS2_S4_S6_SB_S9_EEbERKT_RKT0_ -__ZN3WTF9HashTableIjSt4pairIjiENS_18PairFirstExtractorIS2_EENS_7IntHashIjEENS_14PairHashTraitsINS_10HashTraitsIjEENS8_IiEEEES9_EC2ERKSC_ -__ZN3KJS23stringProtoFuncToStringEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZN3WTF9HashTableIjSt4pairIjiENS_18PairFirstExtractorIS2_EENS_7IntHashIjEENS_14PairHashTraitsINS_10HashTraitsIjEENS8_IiEEEES9_E4findIjNS_22IdentityHashTranslatorIjS2_S6_EEEENS_17HashTableIteratorIjS2_S4_S6_SB_S9_EERKT_ -__ZN3KJS10BitXOrNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE -__ZN3KJS10BitXOrNode8evaluateEPNS_9ExecStateE -__ZN3KJS14RightShiftNode15evaluateToInt32EPNS_9ExecStateE -__ZN3KJS10BitXOrNodeD1Ev -__ZN3KJS17DateObjectFuncImp14callAsFunctionEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZN3KJS9parseDateERKNS_7UStringE -__ZN3KJS6RegExp6createERKNS_7UStringE -__ZN3KJS7ModNode16evaluateToNumberEPNS_9ExecStateE -__ZNK3KJS16RuntimeObjectImp14implementsCallEv -__ZNK3KJS8Bindings9CInstance14implementsCallEv -__ZN3KJS11Interpreter21shouldPrintExceptionsEv -__ZN3KJS4Node10throwErrorEPNS_9ExecStateENS_9ErrorTypeEPKcRKNS_10IdentifierE -__ZN3KJS12PropertySlot15undefinedGetterEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKS0_ -__ZN3KJS15SavedPropertiesD1Ev -__ZN3KJS8JSObject18isActivationObjectEv -__ZN3KJS19globalFuncDecodeURIEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZN3KJS14JSGlobalObject15restoreBuiltinsERKNS_13SavedBuiltinsE -__ZN3KJS11PropertyMap7restoreERKNS_15SavedPropertiesE -__ZN3KJS16JSVariableObject19restoreLocalStorageERKNS_15SavedPropertiesE -__ZN3WTF6VectorIN3KJS17LocalStorageEntryELm32EE6resizeEm -__ZNK3KJS23FunctionCallBracketNode8streamToERNS_12SourceStreamE -__ZNK3KJS17TypeOfResolveNode10precedenceEv -__ZNK3KJS17TypeOfResolveNode8streamToERNS_12SourceStreamE -__ZNK3KJS13AssignDotNode10precedenceEv -__ZNK3KJS12ContinueNode8streamToERNS_12SourceStreamE -__ZN3KJS11FunctionImp12callerGetterEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE -__ZN3KJS9BreakNodeC1ERKNS_10IdentifierE -__ZN3KJS13StatementNode9pushLabelERKNS_10IdentifierE -__ZN3KJS9ThrowNode7executeEPNS_9ExecStateE -__ZNK3KJS15NumberObjectImp19implementsConstructEv -__ZN3KJS22numberProtoFuncValueOfEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZN3KJS8VoidNodeD1Ev -__ZN3KJS14ErrorObjectImp14callAsFunctionEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZN3KJS18globalFuncIsFiniteEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZN3KJS21ReadModifyResolveNode8evaluateEPNS_9ExecStateE -__ZN3KJS15StrictEqualNode8evaluateEPNS_9ExecStateE -__ZN3KJS27compareByStringPairForQSortEPKvS1_ -__ZN3KJS7compareERKNS_7UStringES2_ -__ZN3KJS4Node10throwErrorEPNS_9ExecStateENS_9ErrorTypeEPKcPNS_7JSValueEPS0_S8_ -__ZN3KJS21arrayProtoFuncReverseEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZN3KJS20stringProtoFuncSliceEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZNK3KJS15StringObjectImp19implementsConstructEv -__ZN3KJS15StringObjectImp9constructEPNS_9ExecStateERKNS_4ListE -__ZN3KJS18PostDecResolveNode8evaluateEPNS_9ExecStateE -__ZN3KJS21dateProtoFuncSetMonthEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZN3KJS23setNewValueFromDateArgsEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListEib -__ZN3KJS20dateProtoFuncSetDateEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZN3KJS21dateProtoFuncSetHoursEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZN3KJS23setNewValueFromTimeArgsEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListEib -__ZN3KJS23dateProtoFuncSetMinutesEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZN3KJS24dateProtoFuncSetFullYearEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZN3KJS8JSObject18getPrimitiveNumberEPNS_9ExecStateERdRPNS_7JSValueE -__ZN3KJS20dateProtoFuncValueOfEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZN3KJS27dateProtoFuncGetUTCFullYearEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZN3KJS27dateProtoFuncSetUTCFullYearEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZN3KJS24dateProtoFuncGetUTCMonthEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZN3KJS24dateProtoFuncSetUTCMonthEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZN3KJS23dateProtoFuncGetUTCDateEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZN3KJS23dateProtoFuncSetUTCDateEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZN3KJS24dateProtoFuncGetUTCHoursEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZN3KJS24dateProtoFuncSetUTCHoursEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZN3KJS26dateProtoFuncGetUTCMinutesEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZN3KJS26dateProtoFuncSetUTCMinutesEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZN3KJS26dateProtoFuncGetUTCSecondsEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZN3KJS26dateProtoFuncSetUTCSecondsEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZN3KJS22numberProtoFuncToFixedEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZN3KJS18integer_part_noexpEd -__ZN3KJS14AddNumbersNode16evaluateToNumberEPNS_9ExecStateE -__ZNK3KJS14InstanceOfNode10precedenceEv -__ZNK3KJS14InstanceOfNode8streamToERNS_12SourceStreamE -__ZNK3KJS8JSObject8toNumberEPNS_9ExecStateE -__Z15kjs_pcre_xclassiPKh -__ZN3KJS10NumberNode17evaluateToBooleanEPNS_9ExecStateE -__ZN3KJS18PostDecBracketNodeD1Ev -__ZN3KJS17PropertyNameArray3addERKNS_10IdentifierE -__ZN3KJS22errorProtoFuncToStringEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZN3KJS13LeftShiftNode15evaluateToInt32EPNS_9ExecStateE -__ZNK3KJS9RegExpImp14implementsCallEv -__ZN3KJS22stringProtoFuncValueOfEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZN3KJS15ConditionalNode17evaluateToBooleanEPNS_9ExecStateE -__ZN3KJS16JSVariableObject16getPropertyNamesEPNS_9ExecStateERNS_17PropertyNameArrayE -__ZN3KJS11DoWhileNode7executeEPNS_9ExecStateE -__ZN3KJS8Bindings23convertObjcValueToValueEPNS_9ExecStateEPvNS0_13ObjcValueTypeEPNS0_10RootObjectE -__ZN3KJS8Bindings17webUndefinedClassEv -__ZN3KJS8Bindings20webScriptObjectClassEv -__ZN3KJS8Bindings8Instance19createRuntimeObjectENS1_15BindingLanguageEPvN3WTF10PassRefPtrINS0_10RootObjectEEE -__ZN3KJS8Bindings12ObjcInstanceC2EP11objc_objectN3WTF10PassRefPtrINS0_10RootObjectEEE -__ZN3KJS8Bindings8Instance18didExecuteFunctionEv -__ZN3KJS8Bindings12ObjcInstance5beginEv -__ZNK3KJS8Bindings12ObjcInstance8getClassEv -__ZN3KJS8Bindings9ObjcClass11classForIsAEP10objc_class -__ZN3KJS8Bindings9ObjcClassC2EP10objc_class -__ZNK3KJS8Bindings9ObjcClass10fieldNamedERKNS_10IdentifierEPNS0_8InstanceE -__ZNK3KJS8Bindings9ObjcClass12methodsNamedERKNS_10IdentifierEPNS0_8InstanceE -__ZN3KJS8Bindings25convertJSMethodNameToObjcEPKcPcm -__ZN3KJS8Bindings10ObjcMethodC2EP10objc_classPKc -__ZN3KJS8Bindings12ObjcInstance3endEv -__ZN3KJS8Bindings12ObjcInstance12invokeMethodEPNS_9ExecStateERKN3WTF6VectorIPNS0_6MethodELm0EEERKNS_4ListE -__ZNK3KJS8Bindings10ObjcMethod18getMethodSignatureEv -__ZNK3KJS8Bindings10ObjcMethod4nameEv -__ZN3KJS8Bindings20objcValueTypeForTypeEPKc -__ZN3KJS8Bindings23convertValueToObjcValueEPNS_9ExecStateEPNS_7JSValueENS0_13ObjcValueTypeE -__ZNK3KJS6JSCell9getStringEv -__ZN3KJS8Bindings23convertNSStringToStringEP8NSString -__ZN3KJS8Bindings12ObjcInstanceD1Ev -__ZN3KJS9LabelNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE -__ZN3KJS9LabelNode7executeEPNS_9ExecStateE -__ZN3KJS12ContinueNodeC1ERKNS_10IdentifierE -__ZN3KJS11FunctionImp12lengthGetterEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE -__ZN3KJS9BitOrNode15evaluateToInt32EPNS_9ExecStateE -__ZN3KJS18EmptyStatementNode7executeEPNS_9ExecStateE -__ZN3KJS22UnsignedRightShiftNodeD1Ev -__ZN3KJS7ModNode17evaluateToBooleanEPNS_9ExecStateE -__ZN3KJS20arrayProtoFuncFilterEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZN3KJS6InNode8evaluateEPNS_9ExecStateE -__ZN3KJS17arrayProtoFuncMapEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZNK3KJS10LessEqNode10precedenceEv -__ZNK3KJS10LessEqNode8streamToERNS_12SourceStreamE -__ZNK3KJS18NotStrictEqualNode10precedenceEv -__ZNK3KJS18NotStrictEqualNode8streamToERNS_12SourceStreamE -__ZN3KJS14StringInstance16getPropertyNamesEPNS_9ExecStateERNS_17PropertyNameArrayE -__ZN3KJS7UString4fromEi -__ZN3KJS14StringInstance11indexGetterEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE -__ZN3KJS21stringProtoFuncConcatEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZN3KJS22UnsignedRightShiftNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE -__ZN3KJS11ResolveNode15evaluateToInt32EPNS_9ExecStateE -__ZN3KJS19FunctionCallDotNode15evaluateToInt32EPNS_9ExecStateE -__ZN3KJS22UnsignedRightShiftNode15evaluateToInt32EPNS_9ExecStateE -__ZN3KJS11ResolveNode16evaluateToUInt32EPNS_9ExecStateE -__ZNK3KJS9NumberImp18getTruncatedUInt32ERj -__ZN3KJS10NumberNode15evaluateToInt32EPNS_9ExecStateE -__ZN3KJS7SubNode16evaluateToUInt32EPNS_9ExecStateE -__ZN3KJS14BitwiseNotNode15evaluateToInt32EPNS_9ExecStateE -__ZN3KJS10BitAndNode15evaluateToInt32EPNS_9ExecStateE -__ZN3KJS7AddNode16evaluateToUInt32EPNS_9ExecStateE -__ZN3KJS7SubNode15evaluateToInt32EPNS_9ExecStateE -__ZN3KJS8VoidNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE -__ZN3KJS8VoidNode8evaluateEPNS_9ExecStateE -__ZN3KJS17DeleteResolveNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE -__ZN3KJS18LocalVarDeleteNodeD1Ev -__ZN3KJS11FunctionImp15argumentsGetterEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE -__ZN3KJS18LocalVarDeleteNode8evaluateEPNS_9ExecStateE -__ZN3KJS17DeleteResolveNode8evaluateEPNS_9ExecStateE -__ZNK3KJS16RuntimeObjectImp6canPutEPNS_9ExecStateERKNS_10IdentifierE -__ZN3KJS13UnaryPlusNode8evaluateEPNS_9ExecStateE -__ZN3KJS24dateProtoFuncToUTCStringEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZN3KJS23booleanProtoFuncValueOfEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZN3KJS11NewExprNode16evaluateToNumberEPNS_9ExecStateE -__Z22kjs_pcre_ucp_othercasej -__ZN3KJS17PreDecResolveNode8evaluateEPNS_9ExecStateE -__ZNK3KJS7JSValue7toFloatEPNS_9ExecStateE -__ZN3KJS14ExpressionNode15evaluateToInt32EPNS_9ExecStateE -__ZN3KJS4List26markProtectedListsSlowCaseEv -__ZNK3KJS6JSCell9getStringERNS_7UStringE -__ZN3KJS8TrueNode17evaluateToBooleanEPNS_9ExecStateE -__ZN3KJS9RegExpImp3putEPNS_9ExecStateERKNS_10IdentifierEPNS_7JSValueEi -__ZNK3KJS9NumberImp9getUInt32ERj -__ZN3KJS4Node10throwErrorEPNS_9ExecStateENS_9ErrorTypeEPKcPNS_7JSValueEPS0_ -__ZN3KJS23FunctionCallResolveNode15evaluateToInt32EPNS_9ExecStateE -__ZNK3KJS6JSCell18getTruncatedUInt32ERj -__ZNK3KJS9LabelNode8streamToERNS_12SourceStreamE -__ZNK3KJS17ObjectLiteralNode21needsParensIfLeftmostEv -__ZNK3KJS11DoWhileNode8streamToERNS_12SourceStreamE -__ZNK3KJS17PreDecResolveNode8streamToERNS_12SourceStreamE -__ZNK3KJS13PreIncDotNode8streamToERNS_12SourceStreamE -__ZNK3KJS13PreDecDotNode8streamToERNS_12SourceStreamE -__ZNK3KJS17DeleteResolveNode8streamToERNS_12SourceStreamE -__ZN3KJS9FalseNode17evaluateToBooleanEPNS_9ExecStateE -__ZN3KJS23dateProtoFuncSetSecondsEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZNK3KJS14PostIncDotNode8streamToERNS_12SourceStreamE -__ZNK3KJS8Bindings12ObjcInstance14implementsCallEv -__ZN3KJS8Bindings9ObjcClass14fallbackObjectEPNS_9ExecStateEPNS0_8InstanceERKNS_10IdentifierE -__ZN3KJS16BooleanObjectImp14callAsFunctionEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZN3KJS11jsUndefinedEv -___tcf_2 -___tcf_6 -___tcf_0 -___tcf_5 -___tcf_3 -___tcf_4 -__Z12jsRegExpFreeP8JSRegExp -__ZN3KJS25CollectorHeapIntrospector4sizeEP14_malloc_zone_tPKv -__ZN3WTF9HashTableINS_6RefPtrIN3KJS7UString3RepEEESt4pairIS5_mENS_18PairFirstExtractorIS7_EENS2_17IdentifierRepHashENS_14PairHashTraitsINS2_23IdentifierRepHashTraitsENS2_26SymbolTableIndexHashTraitsEEESC_E4findIS5_NS_22IdentityHashTranslatorIS5_S7_SA_EEEENS_17HashTableIteratorIS5_S7_S9_SA_SE_SC_EERKT_ -__ZN3KJS18AssignLocalVarNodeD1Ev -__ZN3KJS8TrueNodeD1Ev -__ZN3KJS11NewExprNodeD1Ev -__ZN3KJS19ImmediateNumberNodeD1Ev -__ZN3KJS17AssignBracketNodeD1Ev -__ZN3KJS18LocalVarAccessNodeD1Ev -__ZN3KJS16ParserRefCounted8refcountEv -__ZN3KJS14JSGlobalObject16stopTimeoutCheckEv -__ZN3KJS11GreaterNodeD1Ev -__ZN3KJS16ArgumentListNodeD1Ev -__ZN3KJS17FunctionObjectImp9constructEPNS_9ExecStateERKNS_4ListERKNS_10IdentifierERKNS_7UStringEi -__ZN3KJS6Parser5parseINS_16FunctionBodyNodeEEEN3WTF10PassRefPtrIT_EERKNS_7UStringEiPKNS_5UCharEjPiSD_PS7_ -__ZN3KJS8JSObject4callEPNS_9ExecStateEPS0_RKNS_4ListE -__ZN3KJS18AddStringRightNode8evaluateEPNS_9ExecStateE -__ZN3KJS16globalFuncEscapeEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZNK3KJS13DateObjectImp19implementsConstructEv -__ZN3KJS13DateObjectImp9constructEPNS_9ExecStateERKNS_4ListE -__ZN3KJS13DatePrototype18getOwnPropertySlotEPNS_9ExecStateERKNS_10IdentifierERNS_12PropertySlotE -__ZN3KJS20dateProtoFuncGetTimeEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZNK3KJS12DateInstance9classInfoEv -__ZNK3KJS9NumberImp8toNumberEPNS_9ExecStateE -__ZNK3KJS9NumberImp8toStringEPNS_9ExecStateE -__ZN3KJS9BlockNodeD1Ev -__ZN3KJS21dateProtoFuncGetMonthEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZN3KJS21msToGregorianDateTimeEdbRNS_17GregorianDateTimeE -__ZN3KJS12getUTCOffsetEv -__ZN3KJS12getDSTOffsetEdd -__ZN3KJS15ConditionalNodeD1Ev -__ZN3KJS7DivNodeD1Ev -__ZN3KJS9EqualNodeD1Ev -__ZN3KJS8NullNodeD1Ev -__ZN3KJS9FalseNodeD1Ev -__ZN3KJS12NotEqualNodeD1Ev -__ZN3KJS7SubNodeD1Ev -__ZN3KJS7SubNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE -__ZN3KJS24LocalVarFunctionCallNode16evaluateToNumberEPNS_9ExecStateE -__ZN3KJS21ReadModifyResolveNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE -__ZN3KJS14StringInstance12lengthGetterEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE -__ZN3KJS18globalFuncUnescapeEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZN3KJS7DivNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE -__ZN3KJS7DivNode8evaluateEPNS_9ExecStateE -__ZN3KJS18LocalVarAccessNode16evaluateToNumberEPNS_9ExecStateE -__ZN3KJS8MultNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE -__ZN3KJS8MultNode8evaluateEPNS_9ExecStateE -__ZN3KJS19FunctionCallDotNode16evaluateToNumberEPNS_9ExecStateE -__ZN3KJS7SubNode8evaluateEPNS_9ExecStateE -__ZNK3KJS9NumberImp11toPrimitiveEPNS_9ExecStateENS_6JSTypeE -__ZN3KJS18AddStringRightNodeD1Ev -__ZN3KJS7AddNodeD1Ev -__ZN3KJS13LogicalOrNodeD1Ev -__ZN3KJS17PreIncResolveNodeD1Ev -__ZN3KJS8MultNodeD1Ev -__ZN3KJS8LessNodeD1Ev -__ZN3KJS14LogicalAndNodeD1Ev -__ZN3KJS10NumberNodeD1Ev -__ZN3KJS13GreaterEqNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE -__ZN3KJS14LogicalNotNodeD1Ev -__ZN3KJS7ModNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE -__ZN3KJS14JSGlobalObject12checkTimeoutEv -__ZN3KJS7ModNode8evaluateEPNS_9ExecStateE -__ZN3KJS15LessNumbersNode8evaluateEPNS_9ExecStateE -__ZN3KJS20dateProtoFuncGetYearEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZN3KJS8ThisNodeD1Ev -__ZN3KJS19mathProtoFuncRandomEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZN3KJS20globalFuncParseFloatEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZN3KJS13GreaterEqNode8evaluateEPNS_9ExecStateE -__ZN3KJS20dateProtoFuncGetDateEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZN3KJS18mathProtoFuncFloorEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZN3KJS23stringProtoFuncFontsizeEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZN3KJS11ResolveNode17evaluateToBooleanEPNS_9ExecStateE -__ZN3KJS13GreaterEqNode17evaluateToBooleanEPNS_9ExecStateE -__ZN3KJS9NumberImp18getPrimitiveNumberEPNS_9ExecStateERdRPNS_7JSValueE -__ZN3KJS19stringProtoFuncLinkEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZN3KJS19dateProtoFuncGetDayEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZN3KJS21dateProtoFuncGetHoursEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZN3KJS23dateProtoFuncGetMinutesEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZN3KJS23dateProtoFuncGetSecondsEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZN3KJS9ArrayNodeD1Ev -__ZN3KJS11ElementNodeD1Ev -__ZN3KJS17ObjectLiteralNodeD1Ev -__ZN3KJS14PostfixDotNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE -__ZN3KJS14PostIncDotNode8evaluateEPNS_9ExecStateE -__ZN3KJS19PlaceholderTrueNodeD1Ev -__ZN3KJS19PostDecLocalVarNode8evaluateEPNS_9ExecStateE -__ZN3KJS17ReadModifyDotNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE -__ZN3KJS17ReadModifyDotNode8evaluateEPNS_9ExecStateE -__ZN3KJS21FunctionCallValueNodeD1Ev -__ZN3KJS10BitAndNode16evaluateToUInt32EPNS_9ExecStateE -__ZN3KJS14AddNumbersNode15evaluateToInt32EPNS_9ExecStateE -__ZN3KJS10BitXOrNode15evaluateToInt32EPNS_9ExecStateE -__ZN3KJS22UnsignedRightShiftNode8evaluateEPNS_9ExecStateE -__ZN3KJS8MultNode16evaluateToUInt32EPNS_9ExecStateE -__ZN3KJS7DivNode16evaluateToUInt32EPNS_9ExecStateE -__ZN3KJS19StringObjectFuncImp14callAsFunctionEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZN3KJS7ModNode16evaluateToUInt32EPNS_9ExecStateE -__ZN3KJS10BitAndNode16evaluateToNumberEPNS_9ExecStateE -__ZN3KJS14RightShiftNode16evaluateToNumberEPNS_9ExecStateE -__ZN3KJS14AddNumbersNode16evaluateToUInt32EPNS_9ExecStateE -__ZN3KJS14globalFuncEvalEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZN3KJS6Parser5parseINS_8EvalNodeEEEN3WTF10PassRefPtrIT_EERKNS_7UStringEiPKNS_5UCharEjPiSD_PS7_ -__ZN3KJS13EvalExecStateC1EPNS_14JSGlobalObjectEPNS_8EvalNodeEPNS_9ExecStateE -__ZN3KJS8EvalNode7executeEPNS_9ExecStateE -__ZN3KJS8EvalNodeD1Ev -__ZN3KJS23FunctionCallBracketNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE -__ZN3KJS23FunctionCallBracketNode8evaluateEPNS_9ExecStateE -__ZN3KJS16PropertyListNodeD1Ev -__ZN3KJS12PropertyNodeD1Ev -__ZN3KJS13CaseBlockNodeD1Ev -__ZN3KJS14CaseClauseNodeD1Ev -__ZN3KJS14ClauseListNodeD1Ev -__ZN3KJS9RegExpImp18getOwnPropertySlotEPNS_9ExecStateERKNS_10IdentifierERNS_12PropertySlotE -__ZN3KJS17staticValueGetterINS_9RegExpImpEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE -__ZNK3KJS9RegExpImp16getValuePropertyEPNS_9ExecStateEi -__ZN3KJS9ThrowNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE -__ZN3KJS15StrictEqualNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE -__ZN3KJS19regExpProtoFuncTestEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZN3KJS9RegExpImp5matchEPNS_9ExecStateERKNS_4ListE -__ZN3KJS15StrictEqualNode17evaluateToBooleanEPNS_9ExecStateE -__ZN3KJS18NotStrictEqualNodeD1Ev -__ZN3KJS15StrictEqualNodeD1Ev -__ZN3KJS18LocalVarTypeOfNodeD1Ev -__ZN3KJS19globalFuncEncodeURIEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZN3KJS17TypeOfResolveNode8evaluateEPNS_9ExecStateE -__ZN3KJS26stringProtoFuncLastIndexOfEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZNK3KJS7JSValue20toIntegerPreserveNaNEPNS_9ExecStateE -__ZNK3KJS7UString5rfindERKS0_i -__ZN3KJS15TypeOfValueNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE -__ZN3KJS15TypeOfValueNode8evaluateEPNS_9ExecStateE -__ZNK3KJS17FunctionObjectImp19implementsConstructEv -__ZN3KJS17FunctionObjectImp9constructEPNS_9ExecStateERKNS_4ListE -__ZNK3KJS8JSObject11hasPropertyEPNS_9ExecStateERKNS_10IdentifierE -__ZN3KJS30dateProtoFuncGetTimezoneOffsetEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZN3KJS8JSObject3putEPNS_9ExecStateEjPNS_7JSValueEi -__ZN3KJS6InNodeD1Ev -__ZNK3KJS9Arguments9classInfoEv -__ZN3KJS10BitXOrNode17evaluateToBooleanEPNS_9ExecStateE -__ZN3KJS19addSlowCaseToNumberEPNS_9ExecStateEPNS_7JSValueES3_ -__ZN3KJS8JSObject14deletePropertyEPNS_9ExecStateEj -__ZNK3KJS9WhileNode8streamToERNS_12SourceStreamE -__ZNK3KJS9FalseNode8streamToERNS_12SourceStreamE -__ZNK3KJS7DivNode8streamToERNS_12SourceStreamE -__ZNK3KJS7DivNode10precedenceEv -__ZNK3KJS15StrictEqualNode8streamToERNS_12SourceStreamE -__ZNK3KJS15StrictEqualNode10precedenceEv -__ZNK3KJS16VarDeclCommaNode10precedenceEv -__ZNK3KJS17PreIncResolveNode8streamToERNS_12SourceStreamE -__ZNK3KJS9FalseNode10precedenceEv -__ZN3KJS14InstanceOfNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE -__ZNK3KJS19InternalFunctionImp21implementsHasInstanceEv -__ZN3KJS8JSObject11hasInstanceEPNS_9ExecStateEPNS_7JSValueE -__ZN3WTF14FastMallocZone9forceLockEP14_malloc_zone_t -__ZN3KJS25CollectorHeapIntrospector9forceLockEP14_malloc_zone_t -__ZN3WTF14FastMallocZone11forceUnlockEP14_malloc_zone_t -__ZN3KJS25CollectorHeapIntrospector11forceUnlockEP14_malloc_zone_t -__ZNK3KJS23FunctionCallBracketNode10precedenceEv -__ZN3KJS14InstanceOfNode8evaluateEPNS_9ExecStateE -__ZNK3KJS9ThrowNode8streamToERNS_12SourceStreamE -__ZNK3KJS7SubNode10precedenceEv -__ZNK3KJS7SubNode8streamToERNS_12SourceStreamE -__ZNK3KJS10NegateNode10precedenceEv -__ZNK3KJS10NegateNode8streamToERNS_12SourceStreamE -__ZNK3KJS12FuncDeclNode8streamToERNS_12SourceStreamE -__ZNK3KJS18PostDecResolveNode8streamToERNS_12SourceStreamE -__ZNK3KJS9BreakNode8streamToERNS_12SourceStreamE -__ZNK3KJS6InNode10precedenceEv -__ZNK3KJS6InNode8streamToERNS_12SourceStreamE -__ZN3KJS14StringInstanceC2EPNS_8JSObjectERKNS_7UStringE -__ZN3KJS18PostDecBracketNode8evaluateEPNS_9ExecStateE -__ZN3KJS28dateProtoFuncGetMilliSecondsEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZNK3KJS18PostIncResolveNode8streamToERNS_12SourceStreamE -__ZN3KJS13ArrayInstance14deletePropertyEPNS_9ExecStateERKNS_10IdentifierE -__ZN3KJS14StringInstance14deletePropertyEPNS_9ExecStateERKNS_10IdentifierE -__ZN3KJS15AssignErrorNodeD1Ev -__ZN3WTF6VectorIcLm0EE14expandCapacityEmPKc -__ZN3WTF6VectorIcLm0EE14expandCapacityEm +__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 +__ZN3JSC4Heap7destroyEv +__ZN3JSC12JSGlobalDataD1Ev +__ZN3JSC12JSGlobalDataD2Ev +__ZN3JSC12RegisterFileD1Ev +__ZNK3JSC9HashTable11deleteTableEv +__ZN3JSC5LexerD1Ev +__ZN3JSC5LexerD2Ev +__ZN3WTF20deleteAllPairSecondsIP24OpaqueJSClassContextDataKNS_7HashMapIP13OpaqueJSClassS2_NS_7PtrHashIS5_EENS_10HashTraitsIS5_E +__ZN3JSC17CommonIdentifiersD2Ev +__ZN3JSC21deleteIdentifierTableEPNS_15IdentifierTableE +__ZN3JSC4HeapD1Ev +__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 +__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 +__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_ +__Z22jsc_pcre_ucp_othercasej +__ZN3JSCL35objectProtoFuncPropertyIsEnumerableEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZNK3JSC8JSObject21getPropertyAttributesEPNS_9ExecStateERKNS_10IdentifierERj +__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 -__ZN13OpaqueJSClass9prototypeEPK15OpaqueJSContext -__ZN3KJS16JSCallbackObjectINS_8JSObjectEE4initEPNS_9ExecStateE -_JSStringCreateWithUTF8CString +__ZN3JSC16JSCallbackObjectINS_8JSObjectEE4initEPNS_9ExecStateE +__ZN13OpaqueJSClass9prototypeEPN3JSC9ExecStateE +__ZN13OpaqueJSClass11contextDataEPN3JSC9ExecStateE +__ZN3WTF9HashTableIP13OpaqueJSClassSt4pairIS2_P24OpaqueJSClassContextDataENS_18PairFirstExtractorIS6_EENS_7PtrHashIS2_EENS_14Pa +__ZN24OpaqueJSClassContextDataC2EP13OpaqueJSClass +__ZN3JSC7UString3Rep13createCopyingEPKti _JSObjectSetProperty +__ZNK14OpaqueJSString10identifierEPN3JSC12JSGlobalDataE +__ZN3JSC14JSGlobalObject17putWithAttributesEPNS_9ExecStateERKNS_10IdentifierENS_7JSValueEj _JSStringRelease -__Z30makeGetterOrSetterPropertyNodeRKN3KJS10IdentifierES2_PNS_13ParameterNodeEPNS_16FunctionBodyNodeE -__ZN3KJS8JSObject12defineGetterEPNS_9ExecStateERKNS_10IdentifierEPS0_ -__ZN3KJS8JSObject12defineSetterEPNS_9ExecStateERKNS_10IdentifierEPS0_ -__ZNK3KJS15GetterSetterImp4typeEv -__ZNK3KJS8JSObject6canPutEPNS_9ExecStateERKNS_10IdentifierE -__ZN3KJS13ConstDeclNodeC1ERKNS_10IdentifierEPNS_14ExpressionNodeE -__Z26appendToVarDeclarationListRPN3KJS20ParserRefCountedDataIN3WTF6VectorISt4pairINS_10IdentifierEjELm16EEEEEPNS_13ConstDeclNodeE -__ZN3KJS18ConstStatementNodeC1EPNS_13ConstDeclNodeE -__ZN3KJS16JSCallbackObjectINS_8JSObjectEE18getOwnPropertySlotEPNS_9ExecStateERKNS_10IdentifierERNS_12PropertySlotE -__ZN3KJS16JSCallbackObjectINS_8JSObjectEE20staticFunctionGetterEPNS_9ExecStateEPS1_RKNS_10IdentifierERKNS_12PropertySlotE -__ZN3KJS18JSCallbackFunctionC1EPNS_9ExecStateEPFPK13OpaqueJSValuePK15OpaqueJSContextPS3_S9_mPKS5_PS5_ERKNS_10IdentifierE -__ZN3KJS18JSCallbackFunction14callAsFunctionEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE +__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 -__ZNK3KJS16JSCallbackObjectINS_8JSObjectEE9classInfoEv +__ZNK3JSC16JSCallbackObjectINS_8JSObjectEE9classInfoEv +_JSValueMakeUndefined +__ZN3JSC16JSCallbackObjectINS_8JSObjectEE17staticValueGetterEPNS_9ExecStateERKNS_10IdentifierERKNS_12PropertySlotE +__ZN14OpaqueJSString6createERKN3JSC7UStringE _JSStringCreateWithCharacters _JSValueMakeString -__ZN3KJS12PropertySlot14functionGetterEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKS0_ -__ZN3WTF10fastCallocEmm +__ZNK14OpaqueJSString7ustringEv +__ZN3JSC7UStringC1EPtib +__ZN3JSC16JSCallbackObjectINS_8JSObjectEED1Ev +_JSClassRelease +__ZL25clearReferenceToPrototypeP13OpaqueJSValue _JSObjectGetProperty _JSValueToObject -_JSValueProtect -_JSObjectCallAsFunction -_JSValueMakeNumber +__ZN3JSCL22dateProtoFuncGetUTCDayEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZN3JSCL24dateProtoFuncGetUTCMonthEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZN3JSCL23dateProtoFuncGetUTCDateEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZN3JSCL27dateProtoFuncGetUTCFullYearEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZNK3JSC7UString8toUInt32EPb +__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 -_JSObjectCallAsConstructor -__ZN3KJS15GetterSetterImp4markEv -_JSValueMakeUndefined -_JSValueUnprotect -_JSValueIsNumber _JSValueToNumber -__ZN3KJS16JSCallbackObjectINS_8JSObjectEED0Ev -__Z25clearReferenceToPrototypeP13OpaqueJSValue -_JSClassRelease -_JSStringIsEqualToUTF8CString -_JSStringIsEqual -__ZN3KJSeqERKNS_7UStringES2_ -__ZN3KJS16JSCallbackObjectINS_8JSObjectEE14callbackGetterEPNS_9ExecStateEPS1_RKNS_10IdentifierERKNS_12PropertySlotE _JSStringCreateWithCFString -__ZN3KJS7UStringC2EPNS_5UCharEib -__ZN3KJS16JSCallbackObjectINS_8JSObjectEE3putEPNS_9ExecStateERKNS_10IdentifierEPNS_7JSValueEi +__ZN3WTF13tryFastCallocEmm +_JSValueMakeNumber +__ZN3JSC18JSCallbackFunctionD1Ev +_JSValueToStringCopy +_JSStringCopyCFString +__ZN3JSC18ConstStatementNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE +__ZN3JSC13ConstDeclNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE +__ZN3JSC13ConstDeclNode14emitCodeSingleERNS_17BytecodeGeneratorE +__ZN3JSC13ConstDeclNodeD0Ev +__ZN3JSC18ConstStatementNodeD0Ev +__ZN3JSC18BooleanConstructor16getConstructDataERNS_13ConstructDataE +__ZN3JSCL31constructWithBooleanConstructorEPNS_9ExecStateEPNS_8JSObjectERKNS_7ArgListE +__ZN3JSC16constructBooleanEPNS_9ExecStateERKNS_7ArgListE +__ZN3JSCL31dateProtoFuncGetUTCMillisecondsEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZN3JSCL28dateProtoFuncGetMilliSecondsEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZN3JSCL31dateProtoFuncToLocaleTimeStringEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZN3JSCL21regExpObjectLastIndexEPNS_9ExecStateERKNS_10IdentifierERKNS_12PropertySlotE +__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 +__ZNK3JSC17NumberConstructor9classInfoEv +__ZNK3JSC17RegExpConstructor9classInfoEv +__ZN3JSCL31dateProtoFuncToLocaleDateStringEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZNK3JSC8JSObject14isGlobalObjectEv +_JSValueToBoolean +__ZN3JSC8JITStubs13cti_op_lshiftEPPv +__ZN3JSC8JITStubs13cti_op_bitnotEPPv +__ZN3JSC6JSCell3putEPNS_9ExecStateERKNS_10IdentifierENS_7JSValueERNS_15PutPropertySlotE +__ZN3JSC19FunctionConstructor11getCallDataERNS_8CallDataE +__ZN3WTF9ByteArray6createEm +__ZNK3JSC6JSCell9getStringERNS_7UStringE +__ZN3JSC3JIT12emit_op_loopEPNS_11InstructionE +__ZN3JSC10throwErrorEPNS_9ExecStateENS_9ErrorTypeE +__ZN3JSC11JSByteArrayC1EPNS_9ExecStateEN3WTF10PassRefPtrINS_9StructureEEEPNS3_9ByteArrayEPKNS_9ClassInfoE +__ZN3JSC11JSByteArrayC2EPNS_9ExecStateEN3WTF10PassRefPtrINS_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 +__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 +__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 +__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 +__ZN3JSC15DeleteValueNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE +__ZN3JSC15DeleteValueNodeD0Ev +__ZN3JSC16PostfixErrorNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE +__ZN3JSC15PrefixErrorNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE +__ZN3JSC16PostfixErrorNodeD0Ev +__ZN3JSC15PrefixErrorNodeD0Ev +__ZN3JSC23createInvalidParamErrorEPNS_9ExecStateEPKcNS_7JSValueEjPNS_9CodeBlockE +__ZNK3JSC15DotAccessorNode17isDotAccessorNodeEv +__ZNK3JSC14ExpressionNode17isDotAccessorNodeEv +__ZN3JSC13JSNotAnObject3putEPNS_9ExecStateEjNS_7JSValueE +__ZN3JSC4Heap24setGCProtectNeedsLockingEv +__ZN3JSCL23callFunctionConstructorEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZNK3JSC16JSCallbackObjectINS_8JSObjectEE8toStringEPNS_9ExecStateE +__ZN3JSC8JITStubs17cti_op_instanceofEPPv +__ZN3JSC17BytecodeGenerator35emitThrowExpressionTooDeepExceptionEv +__ZN3JSCL25numberConstructorMinValueEPNS_9ExecStateERKNS_10IdentifierERKNS_12PropertySlotE +__ZN3JSCL17mathProtoFuncACosEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZN3JSCL18mathProtoFuncATan2EPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZN3JSCL16mathProtoFuncTanEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZN3JSCL28numberProtoFuncToExponentialEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZN3JSCL26numberProtoFuncToPrecisionEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZN3JSCL12charSequenceEci +__ZN3JSCL29objectProtoFuncToLocaleStringEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZN3JSC6JSCell14toThisJSStringEPNS_9ExecStateE +__ZNK3JSC6JSCell12toThisStringEPNS_9ExecStateE +__ZN3JSCL27objectProtoFuncLookupSetterEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZN3JSC8JSObject12lookupSetterEPNS_9ExecStateERKNS_10IdentifierE +__ZNK3JSC16JSVariableObject21getPropertyAttributesEPNS_9ExecStateERKNS_10IdentifierERj +__ZN3JSC9ExecState22regExpConstructorTableEPS0_ +__ZN3JSCL24regExpConstructorDollar7EPNS_9ExecStateERKNS_10IdentifierERKNS_12PropertySlotE +__ZN3JSCL24regExpConstructorDollar8EPNS_9ExecStateERKNS_10IdentifierERKNS_12PropertySlotE +__ZN3JSCL24regExpConstructorDollar9EPNS_9ExecStateERKNS_10IdentifierERKNS_12PropertySlotE +__ZN3JSCL22regExpConstructorInputEPNS_9ExecStateERKNS_10IdentifierERKNS_12PropertySlotE +__ZN3JSCL25setRegExpConstructorInputEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueE +__ZN3JSCL26regExpConstructorLastMatchEPNS_9ExecStateERKNS_10IdentifierERKNS_12PropertySlotE +__ZN3JSCL26regExpConstructorLastParenEPNS_9ExecStateERKNS_10IdentifierERKNS_12PropertySlotE +__ZN3JSCL26regExpConstructorMultilineEPNS_9ExecStateERKNS_10IdentifierERKNS_12PropertySlotE +__ZN3JSCL29setRegExpConstructorMultilineEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueE +__ZN3JSC4Yarr15nondigitsCreateEv +__ZNK3JSC19JSStaticScopeObject12toThisObjectEPNS_9ExecStateE +__ZN3JSC12JSActivation18getArgumentsGetterEv +__ZN3JSC12JSActivation15argumentsGetterEPNS_9ExecStateERKNS_10IdentifierERKNS_12PropertySlotE +__ZN3JSCL23booleanProtoFuncValueOfEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZN3JSCL28stringProtoFuncLocaleCompareEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE +__ZN3WTF8Collator11userDefaultEv +__ZNK3WTF8Collator7collateEPKtmS2_m +__ZNK3WTF8Collator14createCollatorEv +__ZN3WTF8CollatorD1Ev +__ZN3WTF8Collator15releaseCollatorEv +__ZNK3JSC10MathObject9classInfoEv +__ZN3JSC9ExecState9mathTableEPS0_ +__ZN3WTF6VectorIN3JSC20FunctionRegisterInfoELm0EE14expandCapacityEm +__ZN3JSC3JIT25emit_op_profile_will_callEPNS_11InstructionE +__ZN3JSC3JIT24emit_op_profile_did_callEPNS_11InstructionE +__ZN3JSC8Profiler8profilerEv +__ZN3JSC8Profiler14startProfilingEPNS_9ExecStateERKNS_7UStringE +__ZN3JSC16ProfileGenerator6createERKNS_7UStringEPNS_9ExecStateEj +__ZN3JSC16ProfileGeneratorC2ERKNS_7UStringEPNS_9ExecStateEj +__ZN3JSC7Profile6createERKNS_7UStringEj +__ZN3JSC7ProfileC2ERKNS_7UStringEj +__ZN3JSC11ProfileNodeC1ERKNS_14CallIdentifierEPS0_S4_ +__ZN3JSC33getCurrentUTCTimeWithMicrosecondsEv +__ZN3JSC16ProfileGenerator24addParentForConsoleStartEPNS_9ExecStateE +__ZN3JSC8Profiler20createCallIdentifierEPNS_12JSGlobalDataENS_7JSValueERKNS_7UStringEi +__ZN3JSC16InternalFunction21calculatedDisplayNameEPNS_12JSGlobalDataE +__ZN3JSC11ProfileNode10insertNodeEN3WTF10PassRefPtrIS0_EE +__ZN3WTF6VectorINS_6RefPtrIN3JSC11ProfileNodeEEELm0EE14expandCapacityEm +__ZN3WTF6VectorINS_6RefPtrIN3JSC16ProfileGeneratorEEELm0EE14expandCapacityEm +__ZN3JSC8JITStubs23cti_op_profile_did_callEPPv +__ZN3JSC8Profiler10didExecuteEPNS_9ExecStateENS_7JSValueE +__ZN3JSC16ProfileGenerator10didExecuteERKNS_14CallIdentifierE +__ZN3JSC11ProfileNode10didExecuteEv +__ZN3JSC8JITStubs24cti_op_profile_will_callEPPv +__ZN3JSC8Profiler11willExecuteEPNS_9ExecStateENS_7JSValueE +__ZN3JSC16ProfileGenerator11willExecuteERKNS_14CallIdentifierE +__ZN3JSC11ProfileNode11willExecuteERKNS_14CallIdentifierE +__ZN3JSC8Profiler13stopProfilingEPNS_9ExecStateERKNS_7UStringE +__ZN3JSC16ProfileGenerator13stopProfilingEv +__ZN3JSC7Profile7forEachEMNS_11ProfileNodeEFvvE +__ZNK3JSC11ProfileNode25traverseNextNodePostOrderEv +__ZN3JSC11ProfileNode13stopProfilingEv +__ZN3JSCeqERKNS_7UStringEPKc +__ZN3JSC11ProfileNode11removeChildEPS0_ +__ZN3JSC11ProfileNode8addChildEN3WTF10PassRefPtrIS0_EE +_JSValueIsObjectOfClass +_JSObjectCallAsConstructor +__ZN3JSC9constructEPNS_9ExecStateENS_7JSValueENS_13ConstructTypeERKNS_13ConstructDataERKNS_7ArgListE +_JSObjectCallAsFunction +__ZN3JSC4Heap14primaryHeapEndEv +__ZN3JSC4Heap16primaryHeapBeginEv +__ZNK3JSC18JSCallbackFunction9classInfoEv +__ZN3JSC8Profiler11willExecuteEPNS_9ExecStateERKNS_7UStringEi +__ZN3JSC8Profiler10didExecuteEPNS_9ExecStateERKNS_7UStringEi +__ZNK3JSC16ProfileGenerator5titleEv +__ZN3JSC7ProfileD0Ev +__ZN3WTF10RefCountedIN3JSC11ProfileNodeEE5derefEv +__ZN3JSC4Yarr14RegexGenerator33generatePatternCharacterNonGreedyERNS1_19TermGenerationStateE +__ZN3JSC35createInterruptedExecutionExceptionEPNS_12JSGlobalDataE +__ZNK3JSC25InterruptedExecutionError19isWatchdogExceptionEv +__ZN3JSC25InterruptedExecutionErrorD1Ev +__ZN3JSC12JSGlobalData10ClientDataD2Ev +__ZN3JSC18RegExpMatchesArray16getPropertyNamesEPNS_9ExecStateERNS_17PropertyNameArrayE +__ZN3WTF8CollatorC1EPKc +__ZN3WTF8Collator18setOrderLowerFirstEb +__ZN3WTF12randomNumberEv +__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 +__ZN3JSC4Heap17globalObjectCountEv +__ZN3JSC4Heap20protectedObjectCountEv +__ZN3JSC4Heap25protectedObjectTypeCountsEv +__ZN3WTF9HashTableIPKcSt4pairIS2_jENS_18PairFirstExtractorIS4_EENS_7PtrHashIS2_EENS_14PairHashTraitsINS_10HashTraitsIS2_EENSA_I +__ZN3WTF20fastMallocStatisticsEv +__ZNK3JSC4Heap10statisticsEv +__ZN3WTF27releaseFastMallocFreeMemoryEv +__ZN3JSC10JSFunction16getConstructDataERNS_13ConstructDataE +__ZN3JSC10JSFunction9constructEPNS_9ExecStateERKNS_7ArgListE +__ZN3JSC8Debugger6attachEPNS_14JSGlobalObjectE +__ZN3WTF7HashSetIPN3JSC14JSGlobalObjectENS_7PtrHashIS3_EENS_10HashTraitsIS3_EEE3addERKS3_ +__ZN3WTF9HashTableIPN3JSC14JSGlobalObjectES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E6rehashEi +__ZN3JSC3JIT13emit_op_debugEPNS_11InstructionE +__ZN3JSC8JITStubs12cti_op_debugEPPv +__ZN3JSC11Interpreter5debugEPNS_9ExecStateENS_11DebugHookIDEii +__ZN3JSC8Debugger6detachEPNS_14JSGlobalObjectE +__ZN3JSC9CodeBlock33functionRegisterForBytecodeOffsetEjRi +_JSStringIsEqualToUTF8CString +__ZN3JSC16JSCallbackObjectINS_8JSObjectEE14callbackGetterEPNS_9ExecStateERKNS_10IdentifierERKNS_12PropertySlotE _JSObjectSetPrivate -__ZN3KJS15GetterSetterImpD0Ev -__ZN3KJS27objectProtoFuncLookupGetterEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZNK3KJS17PreIncResolveNode10precedenceEv -__ZNK3KJS10SwitchNode8streamToERNS_12SourceStreamE -__ZNK3KJS13CaseBlockNode8streamToERNS_12SourceStreamE -__ZNK3KJS14CaseClauseNode8streamToERNS_12SourceStreamE -__ZN3KJS18ConstStatementNodeD1Ev -__ZN3KJS17PreDecBracketNodeD1Ev -__ZN3KJS11Interpreter24setShouldPrintExceptionsEb -__ZN3KJS9Collector26protectedGlobalObjectCountEv -__ZN3KJS9Collector4sizeEv -__ZN3KJS9Collector17globalObjectCountEv -__ZN3KJS9Collector20protectedObjectCountEv -__ZN3KJS9Collector25protectedObjectTypeCountsEv -__ZNK3KJS15NumberObjectImp9classInfoEv -__ZNK3KJS15RegExpPrototype9classInfoEv -__ZNK3KJS15RegExpObjectImp9classInfoEv -__ZNK3KJS14NativeErrorImp9classInfoEv -__ZNK3KJS13MathObjectImp9classInfoEv -__ZN3WTF6VectorIPN3KJS7JSValueELm8EE14expandCapacityEmPKS3_ -__ZN3WTF6VectorIPN3KJS7JSValueELm8EE14expandCapacityEm -__ZN3KJS15ConditionalNode15evaluateToInt32EPNS_9ExecStateE -__ZN3KJS9Arguments14deletePropertyEPNS_9ExecStateERKNS_10IdentifierE -__ZNK3KJS17DeleteBracketNode8streamToERNS_12SourceStreamE -__ZNK3KJS9BitOrNode10precedenceEv -__ZNK3KJS9BitOrNode8streamToERNS_12SourceStreamE -__ZNK3KJS7ModNode10precedenceEv -__ZNK3KJS7ModNode8streamToERNS_12SourceStreamE -__ZN3KJS31dateProtoFuncToLocaleTimeStringEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZN3KJS16formatLocaleDateEPNS_9ExecStateEdbbRKNS_4ListE -__ZN3KJS31dateProtoFuncToLocaleDateStringEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZN3KJS9BitOrNode17evaluateToBooleanEPNS_9ExecStateE -__ZN3KJS7DivNode15evaluateToInt32EPNS_9ExecStateE -__ZN3KJS14BitwiseNotNode16evaluateToUInt32EPNS_9ExecStateE -__ZN3KJS13ActivationImp14deletePropertyEPNS_9ExecStateERKNS_10IdentifierE -__ZN3KJS27objectProtoFuncDefineGetterEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZN3KJS17PreDecBracketNode8evaluateEPNS_9ExecStateE -__ZNK3KJS16BooleanObjectImp19implementsConstructEv -__ZN3KJS27objectProtoFuncDefineSetterEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZN3KJS8JSObject22fillGetterPropertySlotERNS_12PropertySlotEPPNS_7JSValueE -__ZN3KJS10StringNode17evaluateToBooleanEPNS_9ExecStateE -__ZN3KJS13UnaryPlusNode16evaluateToNumberEPNS_9ExecStateE -__ZN3KJS31dateProtoFuncGetUTCMillisecondsEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZN3KJS17FunctionObjectImp14callAsFunctionEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZN3KJS15DeleteValueNodeD1Ev -__ZN3KJS15RegExpObjectImp14callAsFunctionEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZN3KJS22dateProtoFuncGetUTCDayEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZN3KJS8MultNode15evaluateToInt32EPNS_9ExecStateE -__ZN3KJS4Node18setErrorCompletionEPNS_9ExecStateENS_9ErrorTypeEPKc -__ZN3KJS10StringNode16evaluateToNumberEPNS_9ExecStateE -__ZN3KJS27dateProtoFuncToLocaleStringEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZN3KJS22UnsignedRightShiftNode16evaluateToNumberEPNS_9ExecStateE -__ZNK3KJS18PostIncResolveNode10precedenceEv -__ZNK3KJS21ReadModifyResolveNode10precedenceEv -__ZNK3KJS21FunctionCallValueNode10precedenceEv -__ZN3KJS4Node15handleExceptionEPNS_9ExecStateE -__ZNK3KJS13UnaryPlusNode10precedenceEv -__ZNK3KJS13UnaryPlusNode8streamToERNS_12SourceStreamE -__ZN3KJS4Node10throwErrorEPNS_9ExecStateENS_9ErrorTypeEPKcPNS_7JSValueERKNS_10IdentifierE -__ZNK3KJS15DotAccessorNode17isDotAccessorNodeEv -__ZNK3KJS14PostfixDotNode10precedenceEv -__ZN3KJS23regExpProtoFuncToStringEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZNK3KJS14PostDecDotNode8streamToERNS_12SourceStreamE -__ZNK3KJS9CommaNode10precedenceEv -__ZNK3KJS17ReadModifyDotNode10precedenceEv -__ZNK3KJS13DeleteDotNode8streamToERNS_12SourceStreamE -__ZNK3KJS19PlaceholderTrueNode8streamToERNS_12SourceStreamE -__ZNK3KJS17AssignBracketNode10precedenceEv -__ZNK3KJS8WithNode8streamToERNS_12SourceStreamE -__ZNK3KJS17DeleteBracketNode10precedenceEv -__ZN3KJS15ObjectObjectImp14callAsFunctionEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -_KJS_JSCreateNativeJSObject -__ZN3KJS8Bindings12JavaJSObject6invokeEPNS0_19JSObjectCallContextE -__ZN3KJS8Bindings12JavaJSObject12createNativeEx -__ZN3KJS8Bindings24findProtectingRootObjectEPNS_8JSObjectE -_KJS_JSObject_JSObjectEval -__ZN3KJS8Bindings12JavaJSObjectC1Ex -__ZNK3KJS8Bindings12JavaJSObject4evalEP8_jstring -__ZN3KJS8Bindings9getJNIEnvEv -__ZN3KJS8Bindings9getJavaVMEv -__ZN3KJS8Bindings30getUCharactersFromJStringInEnvEP7JNIEnv_P8_jstring -__ZN3KJS8Bindings33releaseUCharactersForJStringInEnvEP7JNIEnv_P8_jstringPKt -__ZNK3KJS8Bindings12JavaJSObject21convertValueToJObjectEPNS_7JSValueE -__ZN7JNIEnv_9NewObjectEP7_jclassP10_jmethodIDz -_KJS_JSObject_JSFinalize -__ZN3KJS19stringProtoFuncBoldEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZNK3KJS15RegExpObjectImp15getRightContextEv -__ZNK3KJS15RegExpObjectImp14getLeftContextEv -__ZN3KJS13LeftShiftNode16evaluateToUInt32EPNS_9ExecStateE -__ZN3KJS7ModNode15evaluateToInt32EPNS_9ExecStateE -__ZNK3KJS18PostDecResolveNode10precedenceEv -__ZN3KJS28dateProtoFuncSetMilliSecondsEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZN3KJS32stringProtoFuncToLocaleLowerCaseEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__NPN_SetException -__ZN3KJS18mathProtoFuncATan2EPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZN3KJS8Bindings12JavaInstanceC2EP8_jobjectN3WTF10PassRefPtrINS0_10RootObjectEEE -__ZN3KJS8Bindings12JavaInstance5beginEv -__ZNK3KJS8Bindings12JavaInstance8getClassEv -__ZN3KJS8Bindings9JavaClassC2EP8_jobject -__ZN3KJS8Bindings19callJNIObjectMethodEP8_jobjectPKcS4_z -__ZN3KJS8Bindings13callJNIMethodE7JNITypeP8_jobjectPKcS5_Pc -__ZN3KJS8Bindings24getCharactersFromJStringEP8_jstring -__ZN3KJS8Bindings27releaseCharactersForJStringEP8_jstringPKc -__ZN3KJS8Bindings9JavaFieldC2EP7JNIEnv_P8_jobject -__ZN3KJS7CStringaSERKS0_ -__ZN3KJS8Bindings20JNITypeFromClassNameEPKc -__ZN3KJS8Bindings14JObjectWrapperC1EP8_jobject -__ZNK3KJS8Bindings9JavaField4nameEv -__ZN3KJS8Bindings10JavaMethodC2EP7JNIEnv_P8_jobject -__ZN3KJS8Bindings16callJNIIntMethodEP8_jobjectPKcS4_z -__ZN3KJS8Bindings26callJNIStaticBooleanMethodEP7_jclassPKcS4_z -__ZN3KJS8Bindings19callJNIStaticMethodE7JNITypeP7_jclassPKcS5_Pc -__ZNK3KJS8Bindings10JavaMethod4nameEv -__ZN3KJS8Bindings13JavaParameterC2EP7JNIEnv_P8_jstring -__ZNK3KJS8Bindings9JavaClass10fieldNamedERKNS_10IdentifierEPNS0_8InstanceE -__ZNK3KJS8Bindings9JavaClass12methodsNamedERKNS_10IdentifierEPNS0_8InstanceE -__ZN3KJS8Bindings12JavaInstance3endEv -__ZN3KJS8Bindings12JavaInstanceD1Ev -__ZN3KJS8Bindings9JavaClassD1Ev -__ZN3WTF20deleteAllPairSecondsIPN3KJS8Bindings5FieldEKNS_7HashMapINS_6RefPtrINS1_7UString3RepEEES4_NS_7PtrHashIS9_EENS_10HashTraitsIS9_EENSC_IS4_EEEEEEvRT0_ -__ZN3KJS8Bindings14JObjectWrapperD1Ev -__ZN3KJS35objectProtoFuncPropertyIsEnumerableEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZN3KJS31dateProtoFuncSetUTCMillisecondsEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZNK3KJS12FuncExprNode21needsParensIfLeftmostEv -__ZN3KJS13DateObjectImp14callAsFunctionEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZN3KJS11NewExprNode17evaluateToBooleanEPNS_9ExecStateE -__ZN3KJS29numberProtoFuncToLocaleStringEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZN3KJS25dateProtoFuncToDateStringEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZN3KJS9BitOrNode16evaluateToNumberEPNS_9ExecStateE -__ZNK3KJS7JSValue8toUInt32EPNS_9ExecStateE -__ZNK3KJS8JSObject3getEPNS_9ExecStateEj -__ZNK3KJS7JSValue16toUInt32SlowCaseEPNS_9ExecStateERb -__ZN3KJS9Collector29markOtherThreadConservativelyEPNS0_6ThreadE -__ZN3WTF20TCMalloc_ThreadCache18DestroyThreadCacheEPv -__ZN3WTF20TCMalloc_ThreadCache11DeleteCacheEPS0_ -__ZN3KJS23destroyRegisteredThreadEPv -__ZN3KJS28numberProtoFuncToExponentialEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZN3KJS26numberProtoFuncToPrecisionEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZN3KJS15RegExpObjectImp16putValuePropertyEPNS_9ExecStateEiPNS_7JSValueEi -__ZNK3KJS15RegExpObjectImp12getLastParenEv -__ZN3KJS10throwErrorEPNS_9ExecStateENS_9ErrorTypeE -__ZN3KJS18arrayProtoFuncSomeEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZN3KJS9LabelNode9pushLabelERKNS_10IdentifierE -__ZN3KJS9Collector32reportOutOfMemoryToAllExecStatesEv -__ZN3KJS5Error6createEPNS_9ExecStateENS_9ErrorTypeEPKc -__ZNK3KJS17PreDecResolveNode10precedenceEv -__ZN3KJS17mathProtoFuncACosEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZN3KJS16mathProtoFuncTanEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZNK3KJS16PostfixErrorNode8streamToERNS_12SourceStreamE -__ZNK3KJS15PrefixErrorNode8streamToERNS_12SourceStreamE -__ZNK3KJS15AssignErrorNode8streamToERNS_12SourceStreamE -__ZN3KJS16PostfixErrorNode8evaluateEPNS_9ExecStateE -__ZN3KJS4Node10throwErrorEPNS_9ExecStateENS_9ErrorTypeEPKcS5_ -__ZN3KJS16PostfixErrorNodeD1Ev -__ZNK3KJS13LeftShiftNode8streamToERNS_12SourceStreamE -__ZNK3KJS13LeftShiftNode10precedenceEv -__ZNK3KJS14RightShiftNode8streamToERNS_12SourceStreamE -__ZNK3KJS14RightShiftNode10precedenceEv -__ZNK3KJS22UnsignedRightShiftNode8streamToERNS_12SourceStreamE -__ZNK3KJS22UnsignedRightShiftNode10precedenceEv -__ZNK3KJS10BitAndNode8streamToERNS_12SourceStreamE -__ZNK3KJS10BitAndNode10precedenceEv -__ZNK3KJS10BitXOrNode8streamToERNS_12SourceStreamE -__ZNK3KJS10BitXOrNode10precedenceEv -__ZN3KJS15AssignErrorNode8evaluateEPNS_9ExecStateE -__ZN3KJS4Node10throwErrorEPNS_9ExecStateENS_9ErrorTypeEPKc -__ZN3KJS13char_sequenceEci -__ZN3KJS15LessStringsNode8evaluateEPNS_9ExecStateE -__ZN3KJS15LessStringsNodeD1Ev -__ZN3KJS15DeleteValueNode8evaluateEPNS_9ExecStateE -__ZN3KJS22regExpProtoFuncCompileEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZN3KJS15PrefixErrorNode8evaluateEPNS_9ExecStateE -__ZN3KJS28objectProtoFuncIsPrototypeOfEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZN3KJS15PrefixErrorNodeD1Ev -__ZN3KJS19arrayProtoFuncEveryEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZN3KJS29objectProtoFuncToLocaleStringEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZN3KJS25arrayProtoFuncLastIndexOfEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZN3WTF6VectorItLm0EE6resizeEm -__ZN3WTF6VectorItLm0EE14expandCapacityEm -__ZN3WTF6VectorItLm0EE15reserveCapacityEm -__ZN3KJS28arrayProtoFuncToLocaleStringEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZN3KJS18ConstStatementNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE -__ZN3KJS13ConstDeclNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE -__ZN3KJS18ConstStatementNode7executeEPNS_9ExecStateE -__ZN3KJS13ConstDeclNode8evaluateEPNS_9ExecStateE -__ZN3KJS15AssignConstNode8evaluateEPNS_9ExecStateE -__ZN3KJS16PostIncConstNode8evaluateEPNS_9ExecStateE -__ZN3KJS16PostDecConstNode8evaluateEPNS_9ExecStateE -__ZN3KJS15PreIncConstNode8evaluateEPNS_9ExecStateE -__ZN3KJS15PreDecConstNode8evaluateEPNS_9ExecStateE -__ZN3KJS19ReadModifyConstNode8evaluateEPNS_9ExecStateE -__ZNK3KJS13ActivationImp9classInfoEv -__ZN3KJS16PostIncConstNodeD1Ev -__ZN3KJS15PreIncConstNodeD1Ev -__ZN3KJS15PreDecConstNodeD1Ev -__ZNK3KJS13DeleteDotNode10precedenceEv -__ZN3KJS28stringProtoFuncLocaleCompareEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZN3KJS10NumberNode16evaluateToUInt32EPNS_9ExecStateE -__ZN3KJS19FunctionCallDotNode16evaluateToUInt32EPNS_9ExecStateE -__ZNK3KJS21ReadModifyBracketNode8streamToERNS_12SourceStreamE -__ZN3KJS10BitXOrNode16evaluateToNumberEPNS_9ExecStateE -___tcf_1 -__ZNK3KJS7UString6is8BitEv -__ZN3KJS15DotAccessorNode16evaluateToUInt32EPNS_9ExecStateE -__ZN3KJS24stringProtoFuncFontcolorEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE -__ZNK3KJS14NativeErrorImp19implementsConstructEv -__ZN3KJS19PostDecLocalVarNode16evaluateToNumberEPNS_9ExecStateE -__ZN3KJS19PostDecLocalVarNode15evaluateToInt32EPNS_9ExecStateE -__ZN3KJS13UnaryPlusNode17evaluateToBooleanEPNS_9ExecStateE +__ZN3JSC7UString3Rep11computeHashEPKci +__ZN3JSC16JSCallbackObjectINS_8JSObjectEE14deletePropertyEPNS_9ExecStateERKNS_10IdentifierE +_JSGarbageCollect +__ZN3JSC4Heap6isBusyEv +__ZN3JSCL18styleFromArgStringERKNS_7UStringEl diff --git a/src/3rdparty/webkit/JavaScriptCore/JavaScriptCore.pri b/src/3rdparty/webkit/JavaScriptCore/JavaScriptCore.pri index dca9355..a7da71c 100644 --- a/src/3rdparty/webkit/JavaScriptCore/JavaScriptCore.pri +++ b/src/3rdparty/webkit/JavaScriptCore/JavaScriptCore.pri @@ -1,30 +1,68 @@ # JavaScriptCore - Qt4 build info VPATH += $$PWD -INCLUDEPATH += tmp -INCLUDEPATH += $$PWD $$PWD/parser $$PWD/bytecompiler $$PWD/debugger $$PWD/runtime $$PWD/wtf $$PWD/wtf/unicode $$PWD/interpreter $$PWD/jit $$PWD/profiler $$PWD/wrec $$PWD/API $$PWD/.. \ - $$PWD/ForwardingHeaders $$PWD/bytecode $$PWD/assembler -DEFINES += BUILDING_QT__ +CONFIG(debug, debug|release) { + isEmpty(GENERATED_SOURCES_DIR):GENERATED_SOURCES_DIR = generated$${QMAKE_DIR_SEP}debug + OBJECTS_DIR = obj/debug +} else { # Release + isEmpty(GENERATED_SOURCES_DIR):GENERATED_SOURCES_DIR = generated$${QMAKE_DIR_SEP}release + OBJECTS_DIR = obj/release +} + +INCLUDEPATH += $$GENERATED_SOURCES_DIR \ + $$PWD \ + $$PWD/parser \ + $$PWD/bytecompiler \ + $$PWD/debugger \ + $$PWD/runtime \ + $$PWD/wtf \ + $$PWD/wtf/unicode \ + $$PWD/interpreter \ + $$PWD/jit \ + $$PWD/profiler \ + $$PWD/wrec \ + $$PWD/yarr \ + $$PWD/API \ + $$PWD/.. \ + $$PWD/ForwardingHeaders \ + $$PWD/bytecode \ + $$PWD/assembler \ -isEmpty(GENERATED_SOURCES_DIR):GENERATED_SOURCES_DIR = tmp -GENERATED_SOURCES_DIR_SLASH = $$GENERATED_SOURCES_DIR/ +DEFINES += BUILDING_QT__ BUILDING_JavaScriptCore BUILDING_WTF + +GENERATED_SOURCES_DIR_SLASH = $${GENERATED_SOURCES_DIR}$${QMAKE_DIR_SEP} win32-* { - GENERATED_SOURCES_DIR_SLASH ~= s|/|\| LIBS += -lwinmm } -# Disable the JIT due to numerous observed miscompilations :( -CONFIG(release):isEqual(QT_ARCH,i386) { - JIT_DEFINES = ENABLE_JIT ENABLE_WREC ENABLE_JIT_OPTIMIZE_CALL ENABLE_JIT_OPTIMIZE_PROPERTY_ACCESS ENABLE_JIT_OPTIMIZE_ARITHMETIC - # Require gcc >= 4.1 - linux-g++*:greaterThan(QT_GCC_MAJOR_VERSION,3):greaterThan(QT_GCC_MINOR_VERSION,0) { - DEFINES += $$JIT_DEFINES WTF_USE_JIT_STUB_ARGUMENT_VA_LIST - QMAKE_CXXFLAGS += -fno-stack-protector - QMAKE_CFLAGS += -fno-stack-protector - } - win32-msvc* { - DEFINES += $$JIT_DEFINES WTF_USE_JIT_STUB_ARGUMENT_REGISTER - } +# Default rules to turn JIT on/off +!contains(DEFINES, ENABLE_JIT=.) { + isEqual(QT_ARCH,i386)|isEqual(QT_ARCH,windows) { + # Require gcc >= 4.1 + CONFIG(release):linux-g++*:greaterThan(QT_GCC_MAJOR_VERSION,3):greaterThan(QT_GCC_MINOR_VERSION,0) { + DEFINES += ENABLE_JIT=1 + } + win32-msvc* { + DEFINES += ENABLE_JIT=1 + } + } +} + +# Rules when JIT enabled +contains(DEFINES, ENABLE_JIT=1) { + !contains(DEFINES, ENABLE_YARR=.): DEFINES += ENABLE_YARR=1 + !contains(DEFINES, ENABLE_YARR_JIT=.): DEFINES += ENABLE_YARR_JIT=1 + !contains(DEFINES, ENABLE_JIT_OPTIMIZE_CALL=.): DEFINES += ENABLE_JIT_OPTIMIZE_CALL=1 + !contains(DEFINES, ENABLE_JIT_OPTIMIZE_PROPERTY_ACCESS=.): DEFINES += ENABLE_JIT_OPTIMIZE_PROPERTY_ACCESS=1 + !contains(DEFINES, ENABLE_JIT_OPTIMIZE_ARITHMETIC=.): DEFINES += ENABLE_JIT_OPTIMIZE_ARITHMETIC=1 + linux-g++* { + !contains(DEFINES, WTF_USE_JIT_STUB_ARGUMENT_VA_LIST=.): DEFINES += WTF_USE_JIT_STUB_ARGUMENT_VA_LIST=1 + QMAKE_CXXFLAGS += -fno-stack-protector + QMAKE_CFLAGS += -fno-stack-protector + } + win32-msvc* { + !contains(DEFINES, WTF_USE_JIT_STUB_ARGUMENT_REGISTER=.): DEFINES += WTF_USE_JIT_STUB_ARGUMENT_REGISTER=1 + } } win32-msvc*: INCLUDEPATH += $$PWD/os-win32 @@ -53,10 +91,12 @@ JSCBISON += \ SOURCES += \ wtf/Assertions.cpp \ + wtf/ByteArray.cpp \ wtf/HashTable.cpp \ wtf/MainThread.cpp \ wtf/RandomNumber.cpp \ wtf/RefCountedLeakCounter.cpp \ + wtf/TypeTraits.cpp \ wtf/unicode/CollatorDefault.cpp \ wtf/unicode/icu/CollatorICU.cpp \ wtf/unicode/UTF8.cpp \ @@ -77,26 +117,27 @@ SOURCES += \ runtime/JSVariableObject.cpp \ runtime/JSActivation.cpp \ runtime/JSNotAnObject.cpp \ + runtime/LiteralParser.cpp \ + runtime/TimeoutChecker.cpp \ bytecode/CodeBlock.cpp \ bytecode/StructureStubInfo.cpp \ bytecode/JumpTable.cpp \ jit/JIT.cpp \ jit/JITCall.cpp \ jit/JITArithmetic.cpp \ + jit/JITOpcodes.cpp \ jit/JITPropertyAccess.cpp \ jit/ExecutableAllocator.cpp \ + jit/JITStubs.cpp \ bytecompiler/BytecodeGenerator.cpp \ runtime/ExceptionHelpers.cpp \ runtime/JSPropertyNameIterator.cpp \ interpreter/Interpreter.cpp \ bytecode/Opcode.cpp \ bytecode/SamplingTool.cpp \ - wrec/CharacterClass.cpp \ - wrec/CharacterClassConstructor.cpp \ - wrec/WREC.cpp \ - wrec/WRECFunctors.cpp \ - wrec/WRECGenerator.cpp \ - wrec/WRECParser.cpp \ + yarr/RegexCompiler.cpp \ + yarr/RegexInterpreter.cpp \ + yarr/RegexJIT.cpp \ interpreter/RegisterFile.cpp win32-*: SOURCES += jit/ExecutableAllocatorWin.cpp @@ -112,17 +153,18 @@ SOURCES += \ runtime/BooleanConstructor.cpp \ runtime/BooleanObject.cpp \ runtime/BooleanPrototype.cpp \ - runtime/ByteArray.cpp \ runtime/CallData.cpp \ runtime/Collector.cpp \ runtime/CommonIdentifiers.cpp \ runtime/ConstructData.cpp \ + wtf/CurrentTime.cpp \ runtime/DateConstructor.cpp \ runtime/DateInstance.cpp \ runtime/DateMath.cpp \ runtime/DatePrototype.cpp \ debugger/Debugger.cpp \ debugger/DebuggerCallFrame.cpp \ + debugger/DebuggerActivation.cpp \ wtf/dtoa.cpp \ runtime/Error.cpp \ runtime/ErrorConstructor.cpp \ @@ -161,6 +203,7 @@ SOURCES += \ runtime/ObjectPrototype.cpp \ runtime/Operations.cpp \ parser/Parser.cpp \ + parser/ParserArena.cpp \ runtime/PropertyNameArray.cpp \ runtime/PropertySlot.cpp \ runtime/PrototypeFunction.cpp \ @@ -184,11 +227,17 @@ SOURCES += \ profiler/TreeProfile.cpp \ wtf/FastMalloc.cpp \ wtf/Threading.cpp \ - wtf/ThreadingQt.cpp \ wtf/qt/MainThreadQt.cpp +!contains(DEFINES, ENABLE_SINGLE_THREADED=1) { + SOURCES += wtf/qt/ThreadingQt.cpp +} else { + DEFINES += ENABLE_JSC_MULTIPLE_THREADS=0 + SOURCES += wtf/ThreadingNone.cpp +} + # GENERATOR 1-A: LUT creator -lut.output = $$GENERATED_SOURCES_DIR/${QMAKE_FILE_BASE}.lut.h +lut.output = $${GENERATED_SOURCES_DIR}$${QMAKE_DIR_SEP}${QMAKE_FILE_BASE}.lut.h lut.commands = perl $$PWD/create_hash_table ${QMAKE_FILE_NAME} -i > ${QMAKE_FILE_OUT} lut.depend = ${QMAKE_FILE_NAME} lut.input = LUT_FILES @@ -196,7 +245,7 @@ lut.CONFIG += no_link addExtraCompiler(lut) # GENERATOR 1-B: particular LUT creator (for 1 file only) -keywordlut.output = $$GENERATED_SOURCES_DIR/Lexer.lut.h +keywordlut.output = $${GENERATED_SOURCES_DIR}$${QMAKE_DIR_SEP}Lexer.lut.h keywordlut.commands = perl $$PWD/create_hash_table ${QMAKE_FILE_NAME} -i > ${QMAKE_FILE_OUT} keywordlut.depend = ${QMAKE_FILE_NAME} keywordlut.input = KEYWORDLUT_FILES @@ -204,8 +253,8 @@ keywordlut.CONFIG += no_link addExtraCompiler(keywordlut) # GENERATOR 2: bison grammar -jscbison.output = $$GENERATED_SOURCES_DIR/${QMAKE_FILE_BASE}.cpp -jscbison.commands = bison -d -p jscyy ${QMAKE_FILE_NAME} -o ${QMAKE_FILE_BASE}.tab.c && $(MOVE) ${QMAKE_FILE_BASE}.tab.c ${QMAKE_FILE_OUT} && $(MOVE) ${QMAKE_FILE_BASE}.tab.h $$GENERATED_SOURCES_DIR/${QMAKE_FILE_BASE}.h +jscbison.output = $${GENERATED_SOURCES_DIR}$${QMAKE_DIR_SEP}${QMAKE_FILE_BASE}.cpp +jscbison.commands = bison -d -p jscyy ${QMAKE_FILE_NAME} -o $${GENERATED_SOURCES_DIR}$${QMAKE_DIR_SEP}${QMAKE_FILE_BASE}.tab.c && $(MOVE) $${GENERATED_SOURCES_DIR}$${QMAKE_DIR_SEP}${QMAKE_FILE_BASE}.tab.c ${QMAKE_FILE_OUT} && $(MOVE) $${GENERATED_SOURCES_DIR}$${QMAKE_DIR_SEP}${QMAKE_FILE_BASE}.tab.h $${GENERATED_SOURCES_DIR}$${QMAKE_DIR_SEP}${QMAKE_FILE_BASE}.h jscbison.depend = ${QMAKE_FILE_NAME} jscbison.input = JSCBISON jscbison.variable_out = GENERATED_SOURCES diff --git a/src/3rdparty/webkit/JavaScriptCore/JavaScriptCore.pro b/src/3rdparty/webkit/JavaScriptCore/JavaScriptCore.pro index 56dae05..28f0e6b 100644 --- a/src/3rdparty/webkit/JavaScriptCore/JavaScriptCore.pro +++ b/src/3rdparty/webkit/JavaScriptCore/JavaScriptCore.pro @@ -21,13 +21,16 @@ CONFIG(QTDIR_build) { } isEmpty(GENERATED_SOURCES_DIR):GENERATED_SOURCES_DIR = tmp -GENERATED_SOURCES_DIR_SLASH = $$GENERATED_SOURCES_DIR/ -win32-*: GENERATED_SOURCES_DIR_SLASH ~= s|/|\| +GENERATED_SOURCES_DIR_SLASH = $${GENERATED_SOURCES_DIR}$${QMAKE_DIR_SEP} INCLUDEPATH += $$GENERATED_SOURCES_DIR !CONFIG(QTDIR_build) { - OBJECTS_DIR = tmp + CONFIG(debug, debug|release) { + OBJECTS_DIR = obj/debug + } else { # Release + OBJECTS_DIR = obj/release + } } include($$OUTPUT_DIR/config.pri) @@ -64,7 +67,7 @@ include(JavaScriptCore.pri) QMAKE_EXTRA_TARGETS += generated_files -qt-port: lessThan(QT_MINOR_VERSION, 4) { +lessThan(QT_MINOR_VERSION, 4) { DEFINES += QT_BEGIN_NAMESPACE="" QT_END_NAMESPACE="" } diff --git a/src/3rdparty/webkit/JavaScriptCore/JavaScriptCorePrefix.h b/src/3rdparty/webkit/JavaScriptCore/JavaScriptCorePrefix.h index e71c8a8..13b21bb 100644 --- a/src/3rdparty/webkit/JavaScriptCore/JavaScriptCorePrefix.h +++ b/src/3rdparty/webkit/JavaScriptCore/JavaScriptCorePrefix.h @@ -25,15 +25,6 @@ #endif -#if defined(__APPLE__) -#import -#if MAC_OS_X_VERSION_MAX_ALLOWED <= MAC_OS_X_VERSION_10_4 -#define BUILDING_ON_TIGER 1 -#elif MAC_OS_X_VERSION_MAX_ALLOWED <= MAC_OS_X_VERSION_10_5 -#define BUILDING_ON_LEOPARD 1 -#endif -#endif - #ifdef __cplusplus #define new ("if you use new/delete make sure to include config.h at the top of the file"()) #define delete ("if you use new/delete make sure to include config.h at the top of the file"()) diff --git a/src/3rdparty/webkit/JavaScriptCore/assembler/AbstractMacroAssembler.h b/src/3rdparty/webkit/JavaScriptCore/assembler/AbstractMacroAssembler.h new file mode 100644 index 0000000..5def60f --- /dev/null +++ b/src/3rdparty/webkit/JavaScriptCore/assembler/AbstractMacroAssembler.h @@ -0,0 +1,999 @@ +/* + * Copyright (C) 2008 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. ``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 + * 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 AbstractMacroAssembler_h +#define AbstractMacroAssembler_h + +#include + +#include +#include +#include + +#if ENABLE(ASSEMBLER) + +// FIXME: keep transitioning this out into MacroAssemblerX86_64. +#if PLATFORM(X86_64) +#define REPTACH_OFFSET_CALL_R11 3 +#endif + +namespace JSC { + +template +class AbstractMacroAssembler { +public: + typedef MacroAssemblerCodePtr CodePtr; + typedef MacroAssemblerCodeRef CodeRef; + + class Jump; + class PatchBuffer; + class CodeLocationInstruction; + class CodeLocationLabel; + class CodeLocationJump; + class CodeLocationCall; + class CodeLocationNearCall; + class CodeLocationDataLabel32; + class CodeLocationDataLabelPtr; + class ProcessorReturnAddress; + + typedef typename AssemblerType::RegisterID RegisterID; + typedef typename AssemblerType::FPRegisterID FPRegisterID; + typedef typename AssemblerType::JmpSrc JmpSrc; + typedef typename AssemblerType::JmpDst JmpDst; + + + // Section 1: MacroAssembler operand types + // + // The following types are used as operands to MacroAssembler operations, + // describing immediate and memory operands to the instructions to be planted. + + + enum Scale { + TimesOne, + TimesTwo, + TimesFour, + TimesEight, + }; + + // Address: + // + // Describes a simple base-offset address. + struct Address { + explicit Address(RegisterID base, int32_t offset = 0) + : base(base) + , offset(offset) + { + } + + RegisterID base; + int32_t offset; + }; + + // ImplicitAddress: + // + // This class is used for explicit 'load' and 'store' operations + // (as opposed to situations in which a memory operand is provided + // to a generic operation, such as an integer arithmetic instruction). + // + // In the case of a load (or store) operation we want to permit + // addresses to be implicitly constructed, e.g. the two calls: + // + // load32(Address(addrReg), destReg); + // load32(addrReg, destReg); + // + // Are equivalent, and the explicit wrapping of the Address in the former + // is unnecessary. + struct ImplicitAddress { + ImplicitAddress(RegisterID base) + : base(base) + , offset(0) + { + } + + ImplicitAddress(Address address) + : base(address.base) + , offset(address.offset) + { + } + + RegisterID base; + int32_t offset; + }; + + // BaseIndex: + // + // Describes a complex addressing mode. + struct BaseIndex { + BaseIndex(RegisterID base, RegisterID index, Scale scale, int32_t offset = 0) + : base(base) + , index(index) + , scale(scale) + , offset(offset) + { + } + + RegisterID base; + RegisterID index; + Scale scale; + int32_t offset; + }; + + // AbsoluteAddress: + // + // Describes an memory operand given by a pointer. For regular load & store + // operations an unwrapped void* will be used, rather than using this. + struct AbsoluteAddress { + explicit AbsoluteAddress(void* ptr) + : m_ptr(ptr) + { + } + + void* m_ptr; + }; + + // ImmPtr: + // + // A pointer sized immediate operand to an instruction - this is wrapped + // 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) + : m_value(value) + { + } + + intptr_t asIntptr() + { + return reinterpret_cast(m_value); + } + + void* m_value; + }; + + // Imm32: + // + // A 32bit immediate operand to an instruction - this is wrapped in a + // class requiring explicit construction in order to prevent RegisterIDs + // (which are implemented as an enum) from accidentally being passed as + // immediate values. + struct Imm32 { + explicit Imm32(int32_t value) + : m_value(value) + { + } + +#if !PLATFORM(X86_64) + explicit Imm32(ImmPtr ptr) + : m_value(ptr.asIntptr()) + { + } +#endif + + int32_t m_value; + }; + + + // Section 2: MacroAssembler code buffer handles + // + // The following types are used to reference items in the code buffer + // during JIT code generation. For example, the type Jump is used to + // track the location of a jump instruction so that it may later be + // linked to a label marking its destination. + + + // Label: + // + // A Label records a point in the generated instruction stream, typically such that + // it may be used as a destination for a jump. + class Label { + template + friend class AbstractMacroAssembler; + friend class Jump; + friend class MacroAssemblerCodeRef; + friend class PatchBuffer; + + public: + Label() + { + } + + Label(AbstractMacroAssembler* masm) + : m_label(masm->m_assembler.label()) + { + } + + bool isUsed() const { return m_label.isUsed(); } + void used() { m_label.used(); } + private: + JmpDst m_label; + }; + + // DataLabelPtr: + // + // A DataLabelPtr is used to refer to a location in the code containing a pointer to be + // patched after the code has been generated. + class DataLabelPtr { + template + friend class AbstractMacroAssembler; + friend class PatchBuffer; + public: + DataLabelPtr() + { + } + + DataLabelPtr(AbstractMacroAssembler* masm) + : m_label(masm->m_assembler.label()) + { + } + + private: + JmpDst m_label; + }; + + // DataLabel32: + // + // A DataLabelPtr is used to refer to a location in the code containing a pointer to be + // patched after the code has been generated. + class DataLabel32 { + template + friend class AbstractMacroAssembler; + friend class PatchBuffer; + public: + DataLabel32() + { + } + + DataLabel32(AbstractMacroAssembler* masm) + : m_label(masm->m_assembler.label()) + { + } + + private: + JmpDst m_label; + }; + + // Call: + // + // A Call object is a reference to a call instruction that has been planted + // into the code buffer - it is typically used to link the call, setting the + // relative offset such that when executed it will call to the desired + // destination. + class Call { + template + friend class AbstractMacroAssembler; + friend class PatchBuffer; + public: + enum Flags { + None = 0x0, + Linkable = 0x1, + Near = 0x2, + LinkableNear = 0x3, + }; + + Call() + : m_flags(None) + { + } + + Call(JmpSrc jmp, Flags flags) + : m_jmp(jmp) + , m_flags(flags) + { + } + + bool isFlagSet(Flags flag) + { + return m_flags & flag; + } + + static Call fromTailJump(Jump jump) + { + return Call(jump.m_jmp, Linkable); + } + + private: + JmpSrc m_jmp; + Flags m_flags; + }; + + // Jump: + // + // A jump object is a reference to a jump instruction that has been planted + // into the code buffer - it is typically used to link the jump, setting the + // relative offset such that when executed it will jump to the desired + // destination. + class Jump { + template + friend class AbstractMacroAssembler; + friend class Call; + friend class PatchBuffer; + public: + Jump() + { + } + + Jump(JmpSrc jmp) + : m_jmp(jmp) + { + } + + void link(AbstractMacroAssembler* masm) + { + masm->m_assembler.linkJump(m_jmp, masm->m_assembler.label()); + } + + void linkTo(Label label, AbstractMacroAssembler* masm) + { + masm->m_assembler.linkJump(m_jmp, label.m_label); + } + + private: + JmpSrc m_jmp; + }; + + // JumpList: + // + // A JumpList is a set of Jump objects. + // All jumps in the set will be linked to the same destination. + class JumpList { + friend class PatchBuffer; + + public: + void link(AbstractMacroAssembler* masm) + { + size_t size = m_jumps.size(); + for (size_t i = 0; i < size; ++i) + m_jumps[i].link(masm); + m_jumps.clear(); + } + + void linkTo(Label label, AbstractMacroAssembler* masm) + { + size_t size = m_jumps.size(); + for (size_t i = 0; i < size; ++i) + m_jumps[i].linkTo(label, masm); + m_jumps.clear(); + } + + void append(Jump jump) + { + m_jumps.append(jump); + } + + void append(JumpList& other) + { + m_jumps.append(other.m_jumps.begin(), other.m_jumps.size()); + } + + bool empty() + { + return !m_jumps.size(); + } + + private: + Vector m_jumps; + }; + + + // Section 3: MacroAssembler JIT instruction stream handles. + // + // The MacroAssembler supported facilities to modify a JIT generated + // instruction stream after it has been generated (relinking calls and + // jumps, and repatching data values). The following types are used + // to store handles into the underlying instruction stream, the type + // providing semantic information as to what it is that is in the + // instruction stream at this point, and thus what operations may be + // performed on it. + + + // CodeLocationCommon: + // + // Base type for other CodeLocation* types. A postion in the JIT genertaed + // instruction stream, without any semantic information. + class CodeLocationCommon { + public: + CodeLocationCommon() + { + } + + // In order to avoid the need to store multiple handles into the + // instructions stream, where the code generation is deterministic + // and the labels will always be a fixed distance apart, these + // methods may be used to recover a handle that has nopw been + // retained, based on a known fixed relative offset from one that has. + CodeLocationInstruction instructionAtOffset(int offset); + CodeLocationLabel labelAtOffset(int offset); + CodeLocationJump jumpAtOffset(int offset); + CodeLocationCall callAtOffset(int offset); + CodeLocationNearCall nearCallAtOffset(int offset); + CodeLocationDataLabelPtr dataLabelPtrAtOffset(int offset); + CodeLocationDataLabel32 dataLabel32AtOffset(int offset); + + protected: + explicit CodeLocationCommon(CodePtr location) + : m_location(location) + { + } + + void* dataLocation() { return m_location.dataLocation(); } + void* executableAddress() { return m_location.executableAddress(); } + + void reset() + { + m_location = CodePtr(); + } + + private: + CodePtr m_location; + }; + + // CodeLocationInstruction: + // + // An arbitrary instruction in the JIT code. + class CodeLocationInstruction : public CodeLocationCommon { + friend class CodeLocationCommon; + public: + CodeLocationInstruction() + { + } + + void repatchLoadPtrToLEA() + { + AssemblerType::repatchLoadPtrToLEA(this->dataLocation()); + } + + private: + explicit CodeLocationInstruction(void* location) + : CodeLocationCommon(CodePtr(location)) + { + } + }; + + // CodeLocationLabel: + // + // A point in the JIT code maked with a label. + class CodeLocationLabel : public CodeLocationCommon { + friend class CodeLocationCommon; + friend class CodeLocationJump; + friend class CodeLocationCall; + friend class CodeLocationNearCall; + friend class PatchBuffer; + friend class ProcessorReturnAddress; + + public: + CodeLocationLabel() + { + } + + void* addressForSwitch() { return this->executableAddress(); } + void* addressForExceptionHandler() { return this->executableAddress(); } + void* addressForJSR() { return this->executableAddress(); } + + bool operator!() + { + return !this->executableAddress(); + } + + void reset() + { + CodeLocationCommon::reset(); + } + + private: + explicit CodeLocationLabel(CodePtr location) + : CodeLocationCommon(location) + { + } + + explicit CodeLocationLabel(void* location) + : CodeLocationCommon(CodePtr(location)) + { + } + + void* getJumpDestination() { return this->executableAddress(); } + }; + + // CodeLocationJump: + // + // A point in the JIT code at which there is a jump instruction. + class CodeLocationJump : public CodeLocationCommon { + friend class CodeLocationCommon; + friend class PatchBuffer; + public: + CodeLocationJump() + { + } + + void relink(CodeLocationLabel destination) + { + AssemblerType::relinkJump(this->dataLocation(), destination.executableAddress()); + } + + private: + explicit CodeLocationJump(void* location) + : CodeLocationCommon(CodePtr(location)) + { + } + }; + + // CodeLocationCall: + // + // A point in the JIT code at which there is a call instruction. + class CodeLocationCall : public CodeLocationCommon { + friend class CodeLocationCommon; + friend class PatchBuffer; + friend class ProcessorReturnAddress; + public: + CodeLocationCall() + { + } + + void relink(CodeLocationLabel destination) + { +#if PLATFORM(X86_64) + CodeLocationCommon::dataLabelPtrAtOffset(-REPTACH_OFFSET_CALL_R11).repatch(destination.executableAddress()); +#else + AssemblerType::relinkCall(this->dataLocation(), destination.executableAddress()); +#endif + } + + void relink(FunctionPtr destination) + { +#if PLATFORM(X86_64) + CodeLocationCommon::dataLabelPtrAtOffset(-REPTACH_OFFSET_CALL_R11).repatch(destination.executableAddress()); +#else + AssemblerType::relinkCall(this->dataLocation(), destination.executableAddress()); +#endif + } + + // This methods returns the value that will be set as the return address + // within a function that has been called from this call instruction. + void* calleeReturnAddressValue() + { + return this->executableAddress(); + } + + private: + explicit CodeLocationCall(CodePtr location) + : CodeLocationCommon(location) + { + } + + explicit CodeLocationCall(void* location) + : CodeLocationCommon(CodePtr(location)) + { + } + }; + + // CodeLocationNearCall: + // + // A point in the JIT code at which there is a call instruction with near linkage. + class CodeLocationNearCall : public CodeLocationCommon { + friend class CodeLocationCommon; + friend class PatchBuffer; + friend class ProcessorReturnAddress; + public: + CodeLocationNearCall() + { + } + + void relink(CodePtr destination) + { + AssemblerType::relinkCall(this->dataLocation(), destination.executableAddress()); + } + + void relink(CodeLocationLabel destination) + { + AssemblerType::relinkCall(this->dataLocation(), destination.executableAddress()); + } + + void relink(FunctionPtr destination) + { + AssemblerType::relinkCall(this->dataLocation(), destination.executableAddress()); + } + + // This methods returns the value that will be set as the return address + // within a function that has been called from this call instruction. + void* calleeReturnAddressValue() + { + return this->executableAddress(); + } + + private: + explicit CodeLocationNearCall(CodePtr location) + : CodeLocationCommon(location) + { + } + + explicit CodeLocationNearCall(void* location) + : CodeLocationCommon(CodePtr(location)) + { + } + }; + + // CodeLocationDataLabel32: + // + // A point in the JIT code at which there is an int32_t immediate that may be repatched. + class CodeLocationDataLabel32 : public CodeLocationCommon { + friend class CodeLocationCommon; + friend class PatchBuffer; + public: + CodeLocationDataLabel32() + { + } + + void repatch(int32_t value) + { + AssemblerType::repatchInt32(this->dataLocation(), value); + } + + private: + explicit CodeLocationDataLabel32(void* location) + : CodeLocationCommon(CodePtr(location)) + { + } + }; + + // CodeLocationDataLabelPtr: + // + // A point in the JIT code at which there is a void* immediate that may be repatched. + class CodeLocationDataLabelPtr : public CodeLocationCommon { + friend class CodeLocationCommon; + friend class PatchBuffer; + public: + CodeLocationDataLabelPtr() + { + } + + void repatch(void* value) + { + AssemblerType::repatchPointer(this->dataLocation(), value); + } + + private: + explicit CodeLocationDataLabelPtr(void* location) + : CodeLocationCommon(CodePtr(location)) + { + } + }; + + // ProcessorReturnAddress: + // + // This class can be used to relink a call identified by its return address. + class ProcessorReturnAddress { + friend class CodeLocationCall; + friend class CodeLocationNearCall; + public: + ProcessorReturnAddress(void* location) + : m_location(location) + { + } + + void relinkCallerToTrampoline(CodeLocationLabel label) + { + CodeLocationCall(CodePtr(m_location)).relink(label); + } + + void relinkCallerToTrampoline(CodePtr newCalleeFunction) + { + relinkCallerToTrampoline(CodeLocationLabel(newCalleeFunction)); + } + + void relinkCallerToFunction(FunctionPtr function) + { + CodeLocationCall(CodePtr(m_location)).relink(function); + } + + void relinkNearCallerToTrampoline(CodeLocationLabel label) + { + CodeLocationNearCall(CodePtr(m_location)).relink(label); + } + + void relinkNearCallerToTrampoline(CodePtr newCalleeFunction) + { + relinkNearCallerToTrampoline(CodeLocationLabel(newCalleeFunction)); + } + + void* addressForLookup() + { + return m_location.value(); + } + + private: + ReturnAddressPtr m_location; + }; + + + // Section 4: PatchBuffer - utility to finalize code generation. + + static CodePtr trampolineAt(CodeRef ref, Label label) + { + return CodePtr(AssemblerType::getRelocatedAddress(ref.m_code.dataLocation(), label.m_label)); + } + + // PatchBuffer: + // + // This class assists in linking code generated by the macro assembler, once code generation + // has been completed, and the code has been copied to is final location in memory. At this + // time pointers to labels within the code may be resolved, and relative offsets to external + // addresses may be fixed. + // + // Specifically: + // * Jump objects may be linked to external targets, + // * The address of Jump objects may taken, such that it can later be relinked. + // * The return address of a Jump object representing a call may be acquired. + // * The address of a Label pointing into the code may be resolved. + // * The value referenced by a DataLabel may be fixed. + // + // FIXME: distinguish between Calls & Jumps (make a specific call to obtain the return + // address of calls, as opposed to a point that can be used to later relink a Jump - + // possibly wrap the later up in an object that can do just that). + class PatchBuffer : public Noncopyable { + public: + // Note: Initialization sequence is significant, since executablePool is a PassRefPtr. + // First, executablePool is copied into m_executablePool, then the initialization of + // m_code uses m_executablePool, *not* executablePool, since this is no longer valid. + PatchBuffer(AbstractMacroAssembler* masm, PassRefPtr executablePool) + : m_executablePool(executablePool) + , m_code(masm->m_assembler.executableCopy(m_executablePool.get())) + , m_size(masm->m_assembler.size()) +#ifndef NDEBUG + , m_completed(false) +#endif + { + } + + ~PatchBuffer() + { + ASSERT(m_completed); + } + + // These methods are used to link or set values at code generation time. + + void link(Call call, FunctionPtr function) + { + ASSERT(call.isFlagSet(Call::Linkable)); +#if PLATFORM(X86_64) + if (!call.isFlagSet(Call::Near)) { + char* callLocation = reinterpret_cast(AssemblerType::getRelocatedAddress(code(), call.m_jmp)) - REPTACH_OFFSET_CALL_R11; + AssemblerType::patchPointerForCall(callLocation, function.value()); + } else +#endif + AssemblerType::linkCall(code(), call.m_jmp, function.value()); + } + + void link(Jump jump, CodeLocationLabel label) + { + AssemblerType::linkJump(code(), jump.m_jmp, label.executableAddress()); + } + + void link(JumpList list, CodeLocationLabel label) + { + for (unsigned i = 0; i < list.m_jumps.size(); ++i) + AssemblerType::linkJump(code(), list.m_jumps[i].m_jmp, label.executableAddress()); + } + + void patch(DataLabelPtr label, void* value) + { + AssemblerType::patchPointer(code(), label.m_label, value); + } + + void patch(DataLabelPtr label, CodeLocationLabel value) + { + AssemblerType::patchPointer(code(), label.m_label, value.getJumpDestination()); + } + + // These methods are used to obtain handles to allow the code to be relinked / repatched later. + + CodeLocationCall locationOf(Call call) + { + ASSERT(call.isFlagSet(Call::Linkable)); + ASSERT(!call.isFlagSet(Call::Near)); + return CodeLocationCall(AssemblerType::getRelocatedAddress(code(), call.m_jmp)); + } + + CodeLocationNearCall locationOfNearCall(Call call) + { + ASSERT(call.isFlagSet(Call::Linkable)); + ASSERT(call.isFlagSet(Call::Near)); + return CodeLocationNearCall(AssemblerType::getRelocatedAddress(code(), call.m_jmp)); + } + + CodeLocationLabel locationOf(Label label) + { + return CodeLocationLabel(AssemblerType::getRelocatedAddress(code(), label.m_label)); + } + + CodeLocationDataLabelPtr locationOf(DataLabelPtr label) + { + return CodeLocationDataLabelPtr(AssemblerType::getRelocatedAddress(code(), label.m_label)); + } + + CodeLocationDataLabel32 locationOf(DataLabel32 label) + { + return CodeLocationDataLabel32(AssemblerType::getRelocatedAddress(code(), label.m_label)); + } + + // This method obtains the return address of the call, given as an offset from + // the start of the code. + unsigned returnAddressOffset(Call call) + { + return AssemblerType::getCallReturnOffset(call.m_jmp); + } + + // Upon completion of all patching either 'finalizeCode()' or 'finalizeCodeAddendum()' should be called + // once to complete generation of the code. 'finalizeCode()' is suited to situations + // where the executable pool must also be retained, the lighter-weight 'finalizeCodeAddendum()' is + // suited to adding to an existing allocation. + CodeRef finalizeCode() + { + performFinalization(); + + return CodeRef(m_code, m_executablePool, m_size); + } + CodeLocationLabel finalizeCodeAddendum() + { + performFinalization(); + + return CodeLocationLabel(code()); + } + + private: + // Keep this private! - the underlying code should only be obtained externally via + // finalizeCode() or finalizeCodeAddendum(). + void* code() + { + return m_code; + } + + void performFinalization() + { +#ifndef NDEBUG + ASSERT(!m_completed); + m_completed = true; +#endif + + ExecutableAllocator::makeExecutable(code(), m_size); + } + + RefPtr m_executablePool; + void* m_code; + size_t m_size; +#ifndef NDEBUG + bool m_completed; +#endif + }; + + + // Section 5: Misc admin methods + + size_t size() + { + return m_assembler.size(); + } + + Label label() + { + return Label(this); + } + + Label align() + { + m_assembler.align(16); + return Label(this); + } + + ptrdiff_t differenceBetween(Label from, Jump to) + { + return AssemblerType::getDifferenceBetweenLabels(from.m_label, to.m_jmp); + } + + ptrdiff_t differenceBetween(Label from, Call to) + { + return AssemblerType::getDifferenceBetweenLabels(from.m_label, to.m_jmp); + } + + ptrdiff_t differenceBetween(Label from, Label to) + { + return AssemblerType::getDifferenceBetweenLabels(from.m_label, to.m_label); + } + + ptrdiff_t differenceBetween(Label from, DataLabelPtr to) + { + return AssemblerType::getDifferenceBetweenLabels(from.m_label, to.m_label); + } + + ptrdiff_t differenceBetween(Label from, DataLabel32 to) + { + return AssemblerType::getDifferenceBetweenLabels(from.m_label, to.m_label); + } + + ptrdiff_t differenceBetween(DataLabelPtr from, Jump to) + { + return AssemblerType::getDifferenceBetweenLabels(from.m_label, to.m_jmp); + } + + ptrdiff_t differenceBetween(DataLabelPtr from, DataLabelPtr to) + { + return AssemblerType::getDifferenceBetweenLabels(from.m_label, to.m_label); + } + + ptrdiff_t differenceBetween(DataLabelPtr from, Call to) + { + return AssemblerType::getDifferenceBetweenLabels(from.m_label, to.m_jmp); + } + +protected: + AssemblerType m_assembler; +}; + + +template +typename AbstractMacroAssembler::CodeLocationInstruction AbstractMacroAssembler::CodeLocationCommon::instructionAtOffset(int offset) +{ + return typename AbstractMacroAssembler::CodeLocationInstruction(reinterpret_cast(dataLocation()) + offset); +} + +template +typename AbstractMacroAssembler::CodeLocationLabel AbstractMacroAssembler::CodeLocationCommon::labelAtOffset(int offset) +{ + return typename AbstractMacroAssembler::CodeLocationLabel(reinterpret_cast(dataLocation()) + offset); +} + +template +typename AbstractMacroAssembler::CodeLocationJump AbstractMacroAssembler::CodeLocationCommon::jumpAtOffset(int offset) +{ + return typename AbstractMacroAssembler::CodeLocationJump(reinterpret_cast(dataLocation()) + offset); +} + +template +typename AbstractMacroAssembler::CodeLocationCall AbstractMacroAssembler::CodeLocationCommon::callAtOffset(int offset) +{ + return typename AbstractMacroAssembler::CodeLocationCall(reinterpret_cast(dataLocation()) + offset); +} + +template +typename AbstractMacroAssembler::CodeLocationNearCall AbstractMacroAssembler::CodeLocationCommon::nearCallAtOffset(int offset) +{ + return typename AbstractMacroAssembler::CodeLocationNearCall(reinterpret_cast(dataLocation()) + offset); +} + +template +typename AbstractMacroAssembler::CodeLocationDataLabelPtr AbstractMacroAssembler::CodeLocationCommon::dataLabelPtrAtOffset(int offset) +{ + return typename AbstractMacroAssembler::CodeLocationDataLabelPtr(reinterpret_cast(dataLocation()) + offset); +} + +template +typename AbstractMacroAssembler::CodeLocationDataLabel32 AbstractMacroAssembler::CodeLocationCommon::dataLabel32AtOffset(int offset) +{ + return typename AbstractMacroAssembler::CodeLocationDataLabel32(reinterpret_cast(dataLocation()) + offset); +} + +} // namespace JSC + +#endif // ENABLE(ASSEMBLER) + +#endif // AbstractMacroAssembler_h diff --git a/src/3rdparty/webkit/JavaScriptCore/assembler/AssemblerBuffer.h b/src/3rdparty/webkit/JavaScriptCore/assembler/AssemblerBuffer.h index e1f53d8..7a5a8d3 100644 --- a/src/3rdparty/webkit/JavaScriptCore/assembler/AssemblerBuffer.h +++ b/src/3rdparty/webkit/JavaScriptCore/assembler/AssemblerBuffer.h @@ -132,6 +132,8 @@ namespace JSC { if (!result) return 0; + ExecutableAllocator::makeWritable(result, m_size); + return memcpy(result, m_buffer, m_size); } diff --git a/src/3rdparty/webkit/JavaScriptCore/assembler/MacroAssembler.h b/src/3rdparty/webkit/JavaScriptCore/assembler/MacroAssembler.h index 9f8d474..f341267 100644 --- a/src/3rdparty/webkit/JavaScriptCore/assembler/MacroAssembler.h +++ b/src/3rdparty/webkit/JavaScriptCore/assembler/MacroAssembler.h @@ -30,1896 +30,306 @@ #if ENABLE(ASSEMBLER) -#include "X86Assembler.h" - -namespace JSC { +#if PLATFORM(X86) +#include "MacroAssemblerX86.h" +namespace JSC { typedef MacroAssemblerX86 MacroAssemblerBase; }; -class MacroAssembler { -protected: - X86Assembler m_assembler; +#elif PLATFORM(X86_64) +#include "MacroAssemblerX86_64.h" +namespace JSC { typedef MacroAssemblerX86_64 MacroAssemblerBase; }; -#if PLATFORM(X86_64) - static const X86::RegisterID scratchRegister = X86::r11; +#else +#error "The MacroAssembler is not supported on this platform." #endif + +namespace JSC { + +class MacroAssembler : public MacroAssemblerBase { public: - typedef X86::RegisterID RegisterID; - - // Note: do not rely on values in this enum, these will change (to 0..3). - enum Scale { - TimesOne = 1, - TimesTwo = 2, - TimesFour = 4, - TimesEight = 8, -#if PLATFORM(X86) - ScalePtr = TimesFour -#endif + + using MacroAssemblerBase::pop; + using MacroAssemblerBase::jump; + using MacroAssemblerBase::branch32; + using MacroAssemblerBase::branch16; #if PLATFORM(X86_64) - ScalePtr = TimesEight + using MacroAssemblerBase::branchPtr; + using MacroAssemblerBase::branchTestPtr; #endif - }; - MacroAssembler() + + // Platform agnostic onvenience functions, + // described in terms of other macro assembly methods. + void pop() { + addPtr(Imm32(sizeof(void*)), stackPointerRegister); } - size_t size() { return m_assembler.size(); } - void* copyCode(ExecutablePool* allocator) + void peek(RegisterID dest, int index = 0) { - return m_assembler.executableCopy(allocator); + loadPtr(Address(stackPointerRegister, (index * sizeof(void*))), dest); } - - // Address: - // - // Describes a simple base-offset address. - struct Address { - explicit Address(RegisterID base, int32_t offset = 0) - : base(base) - , offset(offset) - { - } - - RegisterID base; - int32_t offset; - }; - - // ImplicitAddress: - // - // This class is used for explicit 'load' and 'store' operations - // (as opposed to situations in which a memory operand is provided - // to a generic operation, such as an integer arithmetic instruction). - // - // In the case of a load (or store) operation we want to permit - // addresses to be implicitly constructed, e.g. the two calls: - // - // load32(Address(addrReg), destReg); - // load32(addrReg, destReg); - // - // Are equivalent, and the explicit wrapping of the Address in the former - // is unnecessary. - struct ImplicitAddress { - ImplicitAddress(RegisterID base) - : base(base) - , offset(0) - { - } - - ImplicitAddress(Address address) - : base(address.base) - , offset(address.offset) - { - } - - RegisterID base; - int32_t offset; - }; - - // BaseIndex: - // - // Describes a complex addressing mode. - struct BaseIndex { - BaseIndex(RegisterID base, RegisterID index, Scale scale, int32_t offset = 0) - : base(base) - , index(index) - , scale(scale) - , offset(offset) - { - } - - RegisterID base; - RegisterID index; - Scale scale; - int32_t offset; - }; - - // AbsoluteAddress: - // - // Describes an memory operand given by a pointer. For regular load & store - // operations an unwrapped void* will be used, rather than using this. - struct AbsoluteAddress { - explicit AbsoluteAddress(void* ptr) - : m_ptr(ptr) - { - } - - void* m_ptr; - }; - - - class Jump; - class PatchBuffer; - - // DataLabelPtr: - // - // A DataLabelPtr is used to refer to a location in the code containing a pointer to be - // patched after the code has been generated. - class DataLabelPtr { - friend class MacroAssembler; - friend class PatchBuffer; - - public: - DataLabelPtr() - { - } - - DataLabelPtr(MacroAssembler* masm) - : m_label(masm->m_assembler.label()) - { - } - - static void patch(void* address, void* value) - { - X86Assembler::patchPointer(reinterpret_cast(address), reinterpret_cast(value)); - } - - private: - X86Assembler::JmpDst m_label; - }; - - // DataLabel32: - // - // A DataLabelPtr is used to refer to a location in the code containing a pointer to be - // patched after the code has been generated. - class DataLabel32 { - friend class MacroAssembler; - friend class PatchBuffer; - - public: - DataLabel32() - { - } - - DataLabel32(MacroAssembler* masm) - : m_label(masm->m_assembler.label()) - { - } - - static void patch(void* address, int32_t value) - { - X86Assembler::patchImmediate(reinterpret_cast(address), value); - } - - private: - X86Assembler::JmpDst m_label; - }; - - // Label: - // - // A Label records a point in the generated instruction stream, typically such that - // it may be used as a destination for a jump. - class Label { - friend class Jump; - friend class MacroAssembler; - friend class PatchBuffer; - - public: - Label() - { - } - - Label(MacroAssembler* masm) - : m_label(masm->m_assembler.label()) - { - } - - // FIXME: transitionary method, while we replace JmpSrces with Jumps. - operator X86Assembler::JmpDst() - { - return m_label; - } - - private: - X86Assembler::JmpDst m_label; - }; - - - // Jump: - // - // A jump object is a reference to a jump instruction that has been planted - // into the code buffer - it is typically used to link the jump, setting the - // relative offset such that when executed it will jump to the desired - // destination. - // - // Jump objects retain a pointer to the assembler for syntactic purposes - - // to allow the jump object to be able to link itself, e.g.: - // - // Jump forwardsBranch = jne32(Imm32(0), reg1); - // // ... - // forwardsBranch.link(); - // - // Jumps may also be linked to a Label. - class Jump { - friend class PatchBuffer; - friend class MacroAssembler; - - public: - Jump() - { - } - - // FIXME: transitionary method, while we replace JmpSrces with Jumps. - Jump(X86Assembler::JmpSrc jmp) - : m_jmp(jmp) - { - } - - void link(MacroAssembler* masm) - { - masm->m_assembler.link(m_jmp, masm->m_assembler.label()); - } - - void linkTo(Label label, MacroAssembler* masm) - { - masm->m_assembler.link(m_jmp, label.m_label); - } - - // FIXME: transitionary method, while we replace JmpSrces with Jumps. - operator X86Assembler::JmpSrc() - { - return m_jmp; - } - - static void patch(void* address, void* destination) - { - X86Assembler::patchBranchOffset(reinterpret_cast(address), destination); - } - - private: - X86Assembler::JmpSrc m_jmp; - }; - - // JumpList: - // - // A JumpList is a set of Jump objects. - // All jumps in the set will be linked to the same destination. - class JumpList { - friend class PatchBuffer; - - public: - void link(MacroAssembler* masm) - { - size_t size = m_jumps.size(); - for (size_t i = 0; i < size; ++i) - m_jumps[i].link(masm); - m_jumps.clear(); - } - - void linkTo(Label label, MacroAssembler* masm) - { - size_t size = m_jumps.size(); - for (size_t i = 0; i < size; ++i) - m_jumps[i].linkTo(label, masm); - m_jumps.clear(); - } - - void append(Jump jump) - { - m_jumps.append(jump); - } - - void append(JumpList& other) - { - m_jumps.append(other.m_jumps.begin(), other.m_jumps.size()); - } - - bool empty() - { - return !m_jumps.size(); - } - - private: - Vector m_jumps; - }; - - - // PatchBuffer: - // - // This class assists in linking code generated by the macro assembler, once code generation - // has been completed, and the code has been copied to is final location in memory. At this - // time pointers to labels within the code may be resolved, and relative offsets to external - // addresses may be fixed. - // - // Specifically: - // * Jump objects may be linked to external targets, - // * The address of Jump objects may taken, such that it can later be relinked. - // * The return address of a Jump object representing a call may be acquired. - // * The address of a Label pointing into the code may be resolved. - // * The value referenced by a DataLabel may be fixed. - // - // FIXME: distinguish between Calls & Jumps (make a specific call to obtain the return - // address of calls, as opposed to a point that can be used to later relink a Jump - - // possibly wrap the later up in an object that can do just that). - class PatchBuffer { - public: - PatchBuffer(void* code) - : m_code(code) - { - } - - void link(Jump jump, void* target) - { - X86Assembler::link(m_code, jump.m_jmp, target); - } - - void link(JumpList list, void* target) - { - for (unsigned i = 0; i < list.m_jumps.size(); ++i) - X86Assembler::link(m_code, list.m_jumps[i], target); - } - - void* addressOf(Jump jump) - { - return X86Assembler::getRelocatedAddress(m_code, jump.m_jmp); - } - - void* addressOf(Label label) - { - return X86Assembler::getRelocatedAddress(m_code, label.m_label); - } - - void* addressOf(DataLabelPtr label) - { - return X86Assembler::getRelocatedAddress(m_code, label.m_label); - } - - void* addressOf(DataLabel32 label) - { - return X86Assembler::getRelocatedAddress(m_code, label.m_label); - } - - void setPtr(DataLabelPtr label, void* value) - { - X86Assembler::patchAddress(m_code, label.m_label, value); - } - - private: - void* m_code; - }; - - - // ImmPtr: - // - // A pointer sized immediate operand to an instruction - this is wrapped - // 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) - : m_value(value) - { - } - - intptr_t asIntptr() - { - return reinterpret_cast(m_value); - } - - void* m_value; - }; - - - // Imm32: - // - // A 32bit immediate operand to an instruction - this is wrapped in a - // class requiring explicit construction in order to prevent RegisterIDs - // (which are implemented as an enum) from accidentally being passed as - // immediate values. - struct Imm32 { - explicit Imm32(int32_t value) - : m_value(value) - { - } - -#if PLATFORM(X86) - explicit Imm32(ImmPtr ptr) - : m_value(ptr.asIntptr()) - { - } -#endif - - int32_t m_value; - }; - - // 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 addPtr(RegisterID src, RegisterID dest) + void poke(RegisterID src, int index = 0) { -#if PLATFORM(X86_64) - m_assembler.addq_rr(src, dest); -#else - add32(src, dest); -#endif + storePtr(src, Address(stackPointerRegister, (index * sizeof(void*)))); } - void addPtr(Imm32 imm, RegisterID srcDest) + void poke(Imm32 value, int index = 0) { -#if PLATFORM(X86_64) - m_assembler.addq_ir(imm.m_value, srcDest); -#else - add32(imm, srcDest); -#endif + store32(value, Address(stackPointerRegister, (index * sizeof(void*)))); } - void addPtr(Imm32 imm, RegisterID src, RegisterID dest) + void poke(ImmPtr imm, int index = 0) { - m_assembler.leal_mr(imm.m_value, src, dest); + storePtr(imm, Address(stackPointerRegister, (index * sizeof(void*)))); } - void add32(RegisterID src, RegisterID dest) + + // Backwards banches, these are currently all implemented using existing forwards branch mechanisms. + void branchPtr(Condition cond, RegisterID op1, ImmPtr imm, Label target) { - m_assembler.addl_rr(src, dest); + branchPtr(cond, op1, imm).linkTo(target, this); } - void add32(Imm32 imm, Address address) + void branch32(Condition cond, RegisterID op1, RegisterID op2, Label target) { - m_assembler.addl_im(imm.m_value, address.offset, address.base); + branch32(cond, op1, op2).linkTo(target, this); } - void add32(Imm32 imm, RegisterID dest) + void branch32(Condition cond, RegisterID op1, Imm32 imm, Label target) { - m_assembler.addl_ir(imm.m_value, dest); + branch32(cond, op1, imm).linkTo(target, this); } - - void add32(Imm32 imm, AbsoluteAddress address) + + void branch32(Condition cond, RegisterID left, Address right, Label target) { -#if PLATFORM(X86_64) - move(ImmPtr(address.m_ptr), scratchRegister); - add32(imm, Address(scratchRegister)); -#else - m_assembler.addl_im(imm.m_value, address.m_ptr); -#endif + branch32(cond, left, right).linkTo(target, this); } - - void add32(Address src, RegisterID dest) + + void branch16(Condition cond, BaseIndex left, RegisterID right, Label target) { - m_assembler.addl_mr(src.offset, src.base, dest); + branch16(cond, left, right).linkTo(target, this); } - void andPtr(RegisterID src, RegisterID dest) + void branchTestPtr(Condition cond, RegisterID reg, Label target) { -#if PLATFORM(X86_64) - m_assembler.andq_rr(src, dest); -#else - and32(src, dest); -#endif + branchTestPtr(cond, reg).linkTo(target, this); } - void andPtr(Imm32 imm, RegisterID srcDest) + void jump(Label target) { -#if PLATFORM(X86_64) - m_assembler.andq_ir(imm.m_value, srcDest); -#else - and32(imm, srcDest); -#endif + jump().linkTo(target, this); } - void and32(RegisterID src, RegisterID dest) - { - m_assembler.andl_rr(src, dest); - } - void and32(Imm32 imm, RegisterID dest) + // Ptr methods + // On 32-bit platforms (i.e. x86), these methods directly map onto their 32-bit equivalents. +#if !PLATFORM(X86_64) + void addPtr(RegisterID src, RegisterID dest) { - m_assembler.andl_ir(imm.m_value, dest); + add32(src, dest); } - void lshift32(Imm32 imm, RegisterID dest) + void addPtr(Imm32 imm, RegisterID srcDest) { - m_assembler.shll_i8r(imm.m_value, dest); + add32(imm, srcDest); } - - void lshift32(RegisterID shift_amount, RegisterID dest) + + void addPtr(ImmPtr imm, 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 != X86::ecx) { - swap(shift_amount, X86::ecx); - - // E.g. transform "shll %eax, %eax" -> "xchgl %eax, %ecx; shll %ecx, %ecx; xchgl %eax, %ecx" - if (dest == shift_amount) - m_assembler.shll_CLr(X86::ecx); - // E.g. transform "shll %eax, %ecx" -> "xchgl %eax, %ecx; shll %ecx, %eax; xchgl %eax, %ecx" - else if (dest == X86::ecx) - m_assembler.shll_CLr(shift_amount); - // E.g. transform "shll %eax, %ebx" -> "xchgl %eax, %ecx; shll %ecx, %ebx; xchgl %eax, %ecx" - else - m_assembler.shll_CLr(dest); - - swap(shift_amount, X86::ecx); - } else - m_assembler.shll_CLr(dest); + add32(Imm32(imm), dest); } - - // Take the value from dividend, divide it by divisor, and put the remainder in remainder. - // For now, this operation has specific register requirements, and the three register must - // be unique. It is unfortunate to expose this in the MacroAssembler interface, however - // given the complexity to fix, the fact that it is not uncommmon for processors to have - // specific register requirements on this operation (e.g. Mips result in 'hi'), or to not - // support a hardware divide at all, it may not be - void mod32(RegisterID divisor, RegisterID dividend, RegisterID remainder) - { -#ifdef NDEBUG -#pragma unused(dividend,remainder) -#else - ASSERT((dividend == X86::eax) && (remainder == X86::edx)); - ASSERT((dividend != divisor) && (remainder != divisor)); -#endif - m_assembler.cdq(); - m_assembler.idivl_r(divisor); + void addPtr(Imm32 imm, RegisterID src, RegisterID dest) + { + add32(imm, src, dest); } - void mul32(Imm32 imm, RegisterID src, RegisterID dest) + void andPtr(RegisterID src, RegisterID dest) { - m_assembler.imull_i32r(src, imm.m_value, dest); + and32(src, dest); } - - void not32(RegisterID srcDest) + + void andPtr(Imm32 imm, RegisterID srcDest) { - m_assembler.notl_r(srcDest); + and32(imm, srcDest); } - + void orPtr(RegisterID src, RegisterID dest) { -#if PLATFORM(X86_64) - m_assembler.orq_rr(src, dest); -#else or32(src, dest); -#endif } void orPtr(ImmPtr imm, RegisterID dest) { -#if PLATFORM(X86_64) - move(imm, scratchRegister); - m_assembler.orq_rr(scratchRegister, dest); -#else or32(Imm32(imm), dest); -#endif } void orPtr(Imm32 imm, RegisterID dest) { -#if PLATFORM(X86_64) - m_assembler.orq_ir(imm.m_value, dest); -#else or32(imm, dest); -#endif - } - - void or32(RegisterID src, RegisterID dest) - { - m_assembler.orl_rr(src, dest); - } - - void or32(Imm32 imm, RegisterID dest) - { - m_assembler.orl_ir(imm.m_value, dest); } void rshiftPtr(RegisterID shift_amount, RegisterID dest) { -#if PLATFORM(X86_64) - // 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 != X86::ecx) { - swap(shift_amount, X86::ecx); - - // E.g. transform "shll %eax, %eax" -> "xchgl %eax, %ecx; shll %ecx, %ecx; xchgl %eax, %ecx" - if (dest == shift_amount) - m_assembler.sarq_CLr(X86::ecx); - // E.g. transform "shll %eax, %ecx" -> "xchgl %eax, %ecx; shll %ecx, %eax; xchgl %eax, %ecx" - else if (dest == X86::ecx) - m_assembler.sarq_CLr(shift_amount); - // E.g. transform "shll %eax, %ebx" -> "xchgl %eax, %ecx; shll %ecx, %ebx; xchgl %eax, %ecx" - else - m_assembler.sarq_CLr(dest); - - swap(shift_amount, X86::ecx); - } else - m_assembler.sarq_CLr(dest); -#else rshift32(shift_amount, dest); -#endif } void rshiftPtr(Imm32 imm, RegisterID dest) { -#if PLATFORM(X86_64) - m_assembler.sarq_i8r(imm.m_value, dest); -#else rshift32(imm, dest); -#endif - } - - void rshift32(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 != X86::ecx) { - swap(shift_amount, X86::ecx); - - // E.g. transform "shll %eax, %eax" -> "xchgl %eax, %ecx; shll %ecx, %ecx; xchgl %eax, %ecx" - if (dest == shift_amount) - m_assembler.sarl_CLr(X86::ecx); - // E.g. transform "shll %eax, %ecx" -> "xchgl %eax, %ecx; shll %ecx, %eax; xchgl %eax, %ecx" - else if (dest == X86::ecx) - m_assembler.sarl_CLr(shift_amount); - // E.g. transform "shll %eax, %ebx" -> "xchgl %eax, %ecx; shll %ecx, %ebx; xchgl %eax, %ecx" - else - m_assembler.sarl_CLr(dest); - - swap(shift_amount, X86::ecx); - } else - m_assembler.sarl_CLr(dest); } - void rshift32(Imm32 imm, RegisterID dest) + void subPtr(RegisterID src, RegisterID dest) { - m_assembler.sarl_i8r(imm.m_value, dest); + sub32(src, dest); } - + void subPtr(Imm32 imm, RegisterID dest) { -#if PLATFORM(X86_64) - m_assembler.subq_ir(imm.m_value, dest); -#else sub32(imm, dest); -#endif - } - - void sub32(Imm32 imm, RegisterID dest) - { - m_assembler.subl_ir(imm.m_value, dest); } - void sub32(Imm32 imm, Address address) - { - m_assembler.subl_im(imm.m_value, address.offset, address.base); - } - - void sub32(Imm32 imm, AbsoluteAddress address) + void subPtr(ImmPtr imm, RegisterID dest) { -#if PLATFORM(X86_64) - move(ImmPtr(address.m_ptr), scratchRegister); - sub32(imm, Address(scratchRegister)); -#else - m_assembler.subl_im(imm.m_value, address.m_ptr); -#endif - } - - void sub32(Address src, RegisterID dest) - { - m_assembler.subl_mr(src.offset, src.base, dest); + sub32(Imm32(imm), dest); } void xorPtr(RegisterID src, RegisterID dest) { -#if PLATFORM(X86_64) - m_assembler.xorq_rr(src, dest); -#else xor32(src, dest); -#endif } void xorPtr(Imm32 imm, RegisterID srcDest) { -#if PLATFORM(X86_64) - m_assembler.xorq_ir(imm.m_value, srcDest); -#else xor32(imm, srcDest); -#endif - } - - void xor32(RegisterID src, RegisterID dest) - { - m_assembler.xorl_rr(src, dest); - } - - void xor32(Imm32 imm, RegisterID srcDest) - { - m_assembler.xorl_ir(imm.m_value, srcDest); } - - // 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. void loadPtr(ImplicitAddress address, RegisterID dest) { -#if PLATFORM(X86_64) - m_assembler.movq_mr(address.offset, address.base, dest); -#else load32(address, dest); -#endif - } - - DataLabel32 loadPtrWithAddressOffsetPatch(Address address, RegisterID dest) - { -#if PLATFORM(X86_64) - m_assembler.movq_mr_disp32(address.offset, address.base, dest); - return DataLabel32(this); -#else - m_assembler.movl_mr_disp32(address.offset, address.base, dest); - return DataLabel32(this); -#endif } void loadPtr(BaseIndex address, RegisterID dest) { -#if PLATFORM(X86_64) - m_assembler.movq_mr(address.offset, address.base, address.index, address.scale, dest); -#else load32(address, dest); -#endif } void loadPtr(void* address, RegisterID dest) { -#if PLATFORM(X86_64) - if (dest == X86::eax) - m_assembler.movq_mEAX(address); - else { - move(X86::eax, dest); - m_assembler.movq_mEAX(address); - swap(X86::eax, dest); - } -#else load32(address, dest); -#endif - } - - void load32(ImplicitAddress address, RegisterID dest) - { - m_assembler.movl_mr(address.offset, address.base, dest); - } - - void load32(BaseIndex address, RegisterID dest) - { - m_assembler.movl_mr(address.offset, address.base, address.index, address.scale, dest); } - void load32(void* address, RegisterID dest) + DataLabel32 loadPtrWithAddressOffsetPatch(Address address, RegisterID dest) { -#if PLATFORM(X86_64) - if (dest == X86::eax) - m_assembler.movl_mEAX(address); - else { - move(X86::eax, dest); - m_assembler.movl_mEAX(address); - swap(X86::eax, dest); - } -#else - m_assembler.movl_mr(address, dest); -#endif + return load32WithAddressOffsetPatch(address, dest); } - void load16(BaseIndex address, RegisterID dest) + void setPtr(Condition cond, RegisterID left, Imm32 right, RegisterID dest) { - m_assembler.movzwl_mr(address.offset, address.base, address.index, address.scale, dest); + set32(cond, left, right, dest); } void storePtr(RegisterID src, ImplicitAddress address) { -#if PLATFORM(X86_64) - m_assembler.movq_rm(src, address.offset, address.base); -#else store32(src, address); -#endif - } - - DataLabel32 storePtrWithAddressOffsetPatch(RegisterID src, Address address) - { -#if PLATFORM(X86_64) - m_assembler.movq_rm_disp32(src, address.offset, address.base); - return DataLabel32(this); -#else - m_assembler.movl_rm_disp32(src, address.offset, address.base); - return DataLabel32(this); -#endif } void storePtr(RegisterID src, BaseIndex address) { -#if PLATFORM(X86_64) - m_assembler.movq_rm(src, address.offset, address.base, address.index, address.scale); -#else store32(src, address); -#endif - } - - void storePtr(ImmPtr imm, ImplicitAddress address) - { -#if PLATFORM(X86_64) - move(imm, scratchRegister); - storePtr(scratchRegister, address); -#else - m_assembler.movl_i32m(imm.asIntptr(), address.offset, address.base); -#endif - } - - DataLabelPtr storePtrWithPatch(Address address) - { -#if PLATFORM(X86_64) - m_assembler.movq_i64r(0, scratchRegister); - DataLabelPtr label(this); - storePtr(scratchRegister, address); - return label; -#else - m_assembler.movl_i32m(0, address.offset, address.base); - return DataLabelPtr(this); -#endif - } - - void store32(RegisterID src, ImplicitAddress address) - { - m_assembler.movl_rm(src, address.offset, address.base); - } - - void store32(RegisterID src, BaseIndex address) - { - m_assembler.movl_rm(src, address.offset, address.base, address.index, address.scale); - } - - void store32(Imm32 imm, ImplicitAddress address) - { - m_assembler.movl_i32m(imm.m_value, address.offset, address.base); - } - - void store32(Imm32 imm, void* address) - { -#if PLATFORM(X86_64) - move(X86::eax, scratchRegister); - move(imm, X86::eax); - m_assembler.movl_EAXm(address); - move(scratchRegister, X86::eax); -#else - m_assembler.movl_i32m(imm.m_value, address); -#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.pop_r(dest); - } - - void push(RegisterID src) - { - m_assembler.push_r(src); - } - - void push(Address address) - { - m_assembler.push_m(address.offset, address.base); - } - - void push(Imm32 imm) - { - m_assembler.push_i32(imm.m_value); - } - - void pop() - { - addPtr(Imm32(sizeof(void*)), X86::esp); - } - - void peek(RegisterID dest, int index = 0) - { - loadPtr(Address(X86::esp, (index * sizeof(void *))), dest); - } - - void poke(RegisterID src, int index = 0) - { - storePtr(src, Address(X86::esp, (index * sizeof(void *)))); } - void poke(Imm32 value, int index = 0) + void storePtr(RegisterID src, void* address) { - store32(value, Address(X86::esp, (index * sizeof(void *)))); + store32(src, address); } - void poke(ImmPtr imm, int index = 0) + void storePtr(ImmPtr imm, ImplicitAddress address) { - storePtr(imm, Address(X86::esp, (index * sizeof(void *)))); + store32(Imm32(imm), address); } - // Register move operations: - // - // Move values in registers. - - void move(Imm32 imm, RegisterID dest) + void storePtr(ImmPtr imm, void* address) { - // Note: on 64-bit the Imm32 value is zero extended into the register, it - // may be useful to have a separate version that sign extends the value? - if (!imm.m_value) - m_assembler.xorl_rr(dest, dest); - else - m_assembler.movl_i32r(imm.m_value, dest); + store32(Imm32(imm), address); } - void move(RegisterID src, RegisterID dest) + DataLabel32 storePtrWithAddressOffsetPatch(RegisterID src, Address address) { - // Note: on 64-bit this is is a full register move; perhaps it would be - // useful to have separate move32 & movePtr, with move32 zero extending? -#if PLATFORM(X86_64) - m_assembler.movq_rr(src, dest); -#else - m_assembler.movl_rr(src, dest); -#endif + return store32WithAddressOffsetPatch(src, address); } - void move(ImmPtr imm, RegisterID dest) - { -#if PLATFORM(X86_64) - if (CAN_SIGN_EXTEND_U32_64(imm.asIntptr())) - m_assembler.movl_i32r(static_cast(imm.asIntptr()), dest); - else - m_assembler.movq_i64r(imm.asIntptr(), dest); -#else - m_assembler.movl_i32r(imm.asIntptr(), dest); -#endif - } - void swap(RegisterID reg1, RegisterID reg2) + Jump branchPtr(Condition cond, RegisterID left, RegisterID right) { -#if PLATFORM(X86_64) - m_assembler.xchgq_rr(reg1, reg2); -#else - m_assembler.xchgl_rr(reg1, reg2); -#endif + return branch32(cond, left, right); } - void signExtend32ToPtr(RegisterID src, RegisterID dest) + Jump branchPtr(Condition cond, RegisterID left, ImmPtr right) { -#if PLATFORM(X86_64) - m_assembler.movsxd_rr(src, dest); -#else - if (src != dest) - move(src, dest); -#endif + return branch32(cond, left, Imm32(right)); } - void zeroExtend32ToPtr(RegisterID src, RegisterID dest) + Jump branchPtr(Condition cond, RegisterID left, Address right) { -#if PLATFORM(X86_64) - m_assembler.movl_rr(src, dest); -#else - if (src != dest) - move(src, dest); -#endif + return branch32(cond, left, right); } - - // 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. - -private: - void compareImm32ForBranch(RegisterID left, int32_t right) + Jump branchPtr(Condition cond, Address left, RegisterID right) { - m_assembler.cmpl_ir(right, left); + return branch32(cond, left, right); } - void compareImm32ForBranchEquality(RegisterID reg, int32_t imm) + Jump branchPtr(Condition cond, AbsoluteAddress left, RegisterID right) { - if (!imm) - m_assembler.testl_rr(reg, reg); - else - m_assembler.cmpl_ir(imm, reg); + return branch32(cond, left, right); } - void compareImm32ForBranchEquality(Address address, int32_t imm) + Jump branchPtr(Condition cond, Address left, ImmPtr right) { - m_assembler.cmpl_im(imm, address.offset, address.base); + return branch32(cond, left, Imm32(right)); } - void testImm32(RegisterID reg, Imm32 mask) + Jump branchPtr(Condition cond, AbsoluteAddress left, ImmPtr right) { - // if we are only interested in the low seven bits, this can be tested with a testb - if (mask.m_value == -1) - m_assembler.testl_rr(reg, reg); - else if ((mask.m_value & ~0x7f) == 0) - m_assembler.testb_i8r(mask.m_value, reg); - else - m_assembler.testl_i32r(mask.m_value, reg); + return branch32(cond, left, Imm32(right)); } - void testImm32(Address address, Imm32 mask) + Jump branchTestPtr(Condition cond, RegisterID reg, RegisterID mask) { - if (mask.m_value == -1) - m_assembler.cmpl_im(0, address.offset, address.base); - else - m_assembler.testl_i32m(mask.m_value, address.offset, address.base); + return branchTest32(cond, reg, mask); } - void testImm32(BaseIndex address, Imm32 mask) + Jump branchTestPtr(Condition cond, RegisterID reg, Imm32 mask = Imm32(-1)) { - if (mask.m_value == -1) - m_assembler.cmpl_im(0, address.offset, address.base, address.index, address.scale); - else - m_assembler.testl_i32m(mask.m_value, address.offset, address.base, address.index, address.scale); + return branchTest32(cond, reg, mask); } -#if PLATFORM(X86_64) - void compareImm64ForBranch(RegisterID left, int32_t right) + Jump branchTestPtr(Condition cond, Address address, Imm32 mask = Imm32(-1)) { - m_assembler.cmpq_ir(right, left); + return branchTest32(cond, address, mask); } - void compareImm64ForBranchEquality(RegisterID reg, int32_t imm) + Jump branchTestPtr(Condition cond, BaseIndex address, Imm32 mask = Imm32(-1)) { - if (!imm) - m_assembler.testq_rr(reg, reg); - else - m_assembler.cmpq_ir(imm, reg); + return branchTest32(cond, address, mask); } - void testImm64(RegisterID reg, Imm32 mask) - { - // if we are only interested in the low seven bits, this can be tested with a testb - if (mask.m_value == -1) - m_assembler.testq_rr(reg, reg); - else if ((mask.m_value & ~0x7f) == 0) - m_assembler.testb_i8r(mask.m_value, reg); - else - m_assembler.testq_i32r(mask.m_value, reg); - } - void testImm64(Address address, Imm32 mask) + Jump branchAddPtr(Condition cond, RegisterID src, RegisterID dest) { - if (mask.m_value == -1) - m_assembler.cmpq_im(0, address.offset, address.base); - else - m_assembler.testq_i32m(mask.m_value, address.offset, address.base); + return branchAdd32(cond, src, dest); } - void testImm64(BaseIndex address, Imm32 mask) + Jump branchSubPtr(Condition cond, Imm32 imm, RegisterID dest) { - if (mask.m_value == -1) - m_assembler.cmpq_im(0, address.offset, address.base, address.index, address.scale); - else - m_assembler.testq_i32m(mask.m_value, address.offset, address.base, address.index, address.scale); + return branchSub32(cond, imm, dest); } #endif -public: - Jump ja32(RegisterID left, Imm32 right) - { - compareImm32ForBranch(left, right.m_value); - return Jump(m_assembler.ja()); - } - - Jump jaePtr(RegisterID left, RegisterID right) - { -#if PLATFORM(X86_64) - m_assembler.cmpq_rr(right, left); - return Jump(m_assembler.jae()); -#else - return jae32(left, right); -#endif - } - - Jump jaePtr(RegisterID reg, ImmPtr ptr) - { -#if PLATFORM(X86_64) - intptr_t imm = ptr.asIntptr(); - if (CAN_SIGN_EXTEND_32_64(imm)) { - compareImm64ForBranch(reg, imm); - return Jump(m_assembler.jae()); - } else { - move(ptr, scratchRegister); - return jaePtr(reg, scratchRegister); - } -#else - return jae32(reg, Imm32(ptr)); -#endif - } - - Jump jae32(RegisterID left, RegisterID right) - { - m_assembler.cmpl_rr(right, left); - return Jump(m_assembler.jae()); - } - - Jump jae32(RegisterID left, Imm32 right) - { - compareImm32ForBranch(left, right.m_value); - return Jump(m_assembler.jae()); - } - - Jump jae32(RegisterID left, Address right) - { - m_assembler.cmpl_mr(right.offset, right.base, left); - return Jump(m_assembler.jae()); - } - - Jump jae32(Address left, RegisterID right) - { - m_assembler.cmpl_rm(right, left.offset, left.base); - return Jump(m_assembler.jae()); - } - - Jump jbPtr(RegisterID left, RegisterID right) - { -#if PLATFORM(X86_64) - m_assembler.cmpq_rr(right, left); - return Jump(m_assembler.jb()); -#else - return jb32(left, right); -#endif - } - - Jump jbPtr(RegisterID reg, ImmPtr ptr) - { -#if PLATFORM(X86_64) - intptr_t imm = ptr.asIntptr(); - if (CAN_SIGN_EXTEND_32_64(imm)) { - compareImm64ForBranch(reg, imm); - return Jump(m_assembler.jb()); - } else { - move(ptr, scratchRegister); - return jbPtr(reg, scratchRegister); - } -#else - return jb32(reg, Imm32(ptr)); -#endif - } - - Jump jb32(RegisterID left, RegisterID right) - { - m_assembler.cmpl_rr(right, left); - return Jump(m_assembler.jb()); - } - - Jump jb32(RegisterID left, Imm32 right) - { - compareImm32ForBranch(left, right.m_value); - return Jump(m_assembler.jb()); - } - - Jump jb32(RegisterID left, Address right) - { - m_assembler.cmpl_mr(right.offset, right.base, left); - return Jump(m_assembler.jb()); - } - - Jump jePtr(RegisterID op1, RegisterID op2) - { -#if PLATFORM(X86_64) - m_assembler.cmpq_rr(op1, op2); - return Jump(m_assembler.je()); -#else - return je32(op1, op2); -#endif - } - - Jump jePtr(RegisterID reg, Address address) - { -#if PLATFORM(X86_64) - m_assembler.cmpq_rm(reg, address.offset, address.base); -#else - m_assembler.cmpl_rm(reg, address.offset, address.base); -#endif - return Jump(m_assembler.je()); - } - - Jump jePtr(RegisterID reg, ImmPtr ptr) - { -#if PLATFORM(X86_64) - intptr_t imm = ptr.asIntptr(); - if (CAN_SIGN_EXTEND_32_64(imm)) { - compareImm64ForBranchEquality(reg, imm); - return Jump(m_assembler.je()); - } else { - move(ptr, scratchRegister); - return jePtr(scratchRegister, reg); - } -#else - return je32(reg, Imm32(ptr)); -#endif - } - - Jump jePtr(Address address, ImmPtr imm) - { -#if PLATFORM(X86_64) - move(imm, scratchRegister); - return jePtr(scratchRegister, address); -#else - return je32(address, Imm32(imm)); -#endif - } - - Jump je32(RegisterID op1, RegisterID op2) - { - m_assembler.cmpl_rr(op1, op2); - return Jump(m_assembler.je()); - } - - Jump je32(Address op1, RegisterID op2) - { - m_assembler.cmpl_mr(op1.offset, op1.base, op2); - return Jump(m_assembler.je()); - } - - Jump je32(RegisterID reg, Imm32 imm) - { - compareImm32ForBranchEquality(reg, imm.m_value); - return Jump(m_assembler.je()); - } - - Jump je32(Address address, Imm32 imm) - { - compareImm32ForBranchEquality(address, imm.m_value); - return Jump(m_assembler.je()); - } - - Jump je16(RegisterID op1, BaseIndex op2) - { - m_assembler.cmpw_rm(op1, op2.offset, op2.base, op2.index, op2.scale); - return Jump(m_assembler.je()); - } - - Jump jg32(RegisterID left, RegisterID right) - { - m_assembler.cmpl_rr(right, left); - return Jump(m_assembler.jg()); - } - - Jump jg32(RegisterID reg, Address address) - { - m_assembler.cmpl_mr(address.offset, address.base, reg); - return Jump(m_assembler.jg()); - } - - Jump jgePtr(RegisterID left, RegisterID right) - { -#if PLATFORM(X86_64) - m_assembler.cmpq_rr(right, left); - return Jump(m_assembler.jge()); -#else - return jge32(left, right); -#endif - } - - Jump jgePtr(RegisterID reg, ImmPtr ptr) - { -#if PLATFORM(X86_64) - intptr_t imm = ptr.asIntptr(); - if (CAN_SIGN_EXTEND_32_64(imm)) { - compareImm64ForBranch(reg, imm); - return Jump(m_assembler.jge()); - } else { - move(ptr, scratchRegister); - return jgePtr(reg, scratchRegister); - } -#else - return jge32(reg, Imm32(ptr)); -#endif - } - - Jump jge32(RegisterID left, RegisterID right) - { - m_assembler.cmpl_rr(right, left); - return Jump(m_assembler.jge()); - } - - Jump jge32(RegisterID left, Imm32 right) - { - compareImm32ForBranch(left, right.m_value); - return Jump(m_assembler.jge()); - } - - Jump jlPtr(RegisterID left, RegisterID right) - { -#if PLATFORM(X86_64) - m_assembler.cmpq_rr(right, left); - return Jump(m_assembler.jl()); -#else - return jl32(left, right); -#endif - } - - Jump jlPtr(RegisterID reg, ImmPtr ptr) - { -#if PLATFORM(X86_64) - intptr_t imm = ptr.asIntptr(); - if (CAN_SIGN_EXTEND_32_64(imm)) { - compareImm64ForBranch(reg, imm); - return Jump(m_assembler.jl()); - } else { - move(ptr, scratchRegister); - return jlPtr(reg, scratchRegister); - } -#else - return jl32(reg, Imm32(ptr)); -#endif - } - - Jump jl32(RegisterID left, RegisterID right) - { - m_assembler.cmpl_rr(right, left); - return Jump(m_assembler.jl()); - } - - Jump jl32(RegisterID left, Imm32 right) - { - compareImm32ForBranch(left, right.m_value); - return Jump(m_assembler.jl()); - } - - Jump jlePtr(RegisterID left, RegisterID right) - { -#if PLATFORM(X86_64) - m_assembler.cmpq_rr(right, left); - return Jump(m_assembler.jle()); -#else - return jle32(left, right); -#endif - } - - Jump jlePtr(RegisterID reg, ImmPtr ptr) - { -#if PLATFORM(X86_64) - intptr_t imm = ptr.asIntptr(); - if (CAN_SIGN_EXTEND_32_64(imm)) { - compareImm64ForBranch(reg, imm); - return Jump(m_assembler.jle()); - } else { - move(ptr, scratchRegister); - return jlePtr(reg, scratchRegister); - } -#else - return jle32(reg, Imm32(ptr)); -#endif - } - - Jump jle32(RegisterID left, RegisterID right) - { - m_assembler.cmpl_rr(right, left); - return Jump(m_assembler.jle()); - } - - Jump jle32(RegisterID left, Imm32 right) - { - compareImm32ForBranch(left, right.m_value); - return Jump(m_assembler.jle()); - } - - Jump jnePtr(RegisterID op1, RegisterID op2) - { -#if PLATFORM(X86_64) - m_assembler.cmpq_rr(op1, op2); - return Jump(m_assembler.jne()); -#else - return jne32(op1, op2); -#endif - } - - Jump jnePtr(RegisterID reg, Address address) - { -#if PLATFORM(X86_64) - m_assembler.cmpq_rm(reg, address.offset, address.base); -#else - m_assembler.cmpl_rm(reg, address.offset, address.base); -#endif - return Jump(m_assembler.jne()); - } - - Jump jnePtr(RegisterID reg, AbsoluteAddress address) - { -#if PLATFORM(X86_64) - move(ImmPtr(address.m_ptr), scratchRegister); - return jnePtr(reg, Address(scratchRegister)); -#else - m_assembler.cmpl_rm(reg, address.m_ptr); - return Jump(m_assembler.jne()); -#endif - } - - Jump jnePtr(RegisterID reg, ImmPtr ptr) - { -#if PLATFORM(X86_64) - intptr_t imm = ptr.asIntptr(); - if (CAN_SIGN_EXTEND_32_64(imm)) { - compareImm64ForBranchEquality(reg, imm); - return Jump(m_assembler.jne()); - } else { - move(ptr, scratchRegister); - return jnePtr(scratchRegister, reg); - } -#else - return jne32(reg, Imm32(ptr)); -#endif - } - - Jump jnePtr(Address address, ImmPtr imm) - { -#if PLATFORM(X86_64) - move(imm, scratchRegister); - return jnePtr(scratchRegister, address); -#else - return jne32(address, Imm32(imm)); -#endif - } - -#if !PLATFORM(X86_64) - Jump jnePtr(AbsoluteAddress address, ImmPtr imm) - { - m_assembler.cmpl_im(imm.asIntptr(), address.m_ptr); - return Jump(m_assembler.jne()); - } -#endif - - Jump jnePtrWithPatch(RegisterID reg, DataLabelPtr& dataLabel, ImmPtr initialValue = ImmPtr(0)) - { -#if PLATFORM(X86_64) - m_assembler.movq_i64r(initialValue.asIntptr(), scratchRegister); - dataLabel = DataLabelPtr(this); - return jnePtr(scratchRegister, reg); -#else - m_assembler.cmpl_ir_force32(initialValue.asIntptr(), reg); - dataLabel = DataLabelPtr(this); - return Jump(m_assembler.jne()); -#endif - } - - Jump jnePtrWithPatch(Address address, DataLabelPtr& dataLabel, ImmPtr initialValue = ImmPtr(0)) - { -#if PLATFORM(X86_64) - m_assembler.movq_i64r(initialValue.asIntptr(), scratchRegister); - dataLabel = DataLabelPtr(this); - return jnePtr(scratchRegister, address); -#else - m_assembler.cmpl_im_force32(initialValue.asIntptr(), address.offset, address.base); - dataLabel = DataLabelPtr(this); - return Jump(m_assembler.jne()); -#endif - } - - Jump jne32(RegisterID op1, RegisterID op2) - { - m_assembler.cmpl_rr(op1, op2); - return Jump(m_assembler.jne()); - } - - Jump jne32(RegisterID reg, Imm32 imm) - { - compareImm32ForBranchEquality(reg, imm.m_value); - return Jump(m_assembler.jne()); - } - - Jump jne32(Address address, Imm32 imm) - { - compareImm32ForBranchEquality(address, imm.m_value); - return Jump(m_assembler.jne()); - } - - Jump jne32(Address address, RegisterID reg) - { - m_assembler.cmpl_rm(reg, address.offset, address.base); - return Jump(m_assembler.jne()); - } - - Jump jnzPtr(RegisterID reg, Imm32 mask = Imm32(-1)) - { -#if PLATFORM(X86_64) - testImm64(reg, mask); - return Jump(m_assembler.jne()); -#else - return jnz32(reg, mask); -#endif - } - - Jump jnzPtr(RegisterID reg, ImmPtr mask) - { -#if PLATFORM(X86_64) - move(mask, scratchRegister); - m_assembler.testq_rr(scratchRegister, reg); - return Jump(m_assembler.jne()); -#else - return jnz32(reg, Imm32(mask)); -#endif - } - - Jump jnzPtr(Address address, Imm32 mask = Imm32(-1)) - { -#if PLATFORM(X86_64) - testImm64(address, mask); - return Jump(m_assembler.jne()); -#else - return jnz32(address, mask); -#endif - } - - Jump jnz32(RegisterID reg, Imm32 mask = Imm32(-1)) - { - testImm32(reg, mask); - return Jump(m_assembler.jne()); - } - - Jump jnz32(Address address, Imm32 mask = Imm32(-1)) - { - testImm32(address, mask); - return Jump(m_assembler.jne()); - } - - Jump jzPtr(RegisterID reg, Imm32 mask = Imm32(-1)) - { -#if PLATFORM(X86_64) - testImm64(reg, mask); - return Jump(m_assembler.je()); -#else - return jz32(reg, mask); -#endif - } - - Jump jzPtr(RegisterID reg, ImmPtr mask) - { -#if PLATFORM(X86_64) - move(mask, scratchRegister); - m_assembler.testq_rr(scratchRegister, reg); - return Jump(m_assembler.je()); -#else - return jz32(reg, Imm32(mask)); -#endif - } - - Jump jzPtr(Address address, Imm32 mask = Imm32(-1)) - { -#if PLATFORM(X86_64) - testImm64(address, mask); - return Jump(m_assembler.je()); -#else - return jz32(address, mask); -#endif - } - - Jump jzPtr(BaseIndex address, Imm32 mask = Imm32(-1)) - { -#if PLATFORM(X86_64) - testImm64(address, mask); - return Jump(m_assembler.je()); -#else - return jz32(address, mask); -#endif - } - - Jump jz32(RegisterID reg, Imm32 mask = Imm32(-1)) - { - testImm32(reg, mask); - return Jump(m_assembler.je()); - } - - Jump jz32(Address address, Imm32 mask = Imm32(-1)) - { - testImm32(address, mask); - return Jump(m_assembler.je()); - } - - Jump jz32(BaseIndex address, Imm32 mask = Imm32(-1)) - { - testImm32(address, mask); - return Jump(m_assembler.je()); - } - - Jump jump() - { - return Jump(m_assembler.jmp()); - } - - - // Backwards, local control flow operations: - // - // These operations provide a shorter notation for local - // backwards branches, which may be both more convenient - // for the user, and for the programmer, and for the - // assembler (allowing shorter values to be used in - // relative offsets). - // - // The code sequence: - // - // Label topOfLoop(this); - // // ... - // jne32(reg1, reg2, topOfLoop); - // - // Is equivalent to the longer, potentially less efficient form: - // - // Label topOfLoop(this); - // // ... - // jne32(reg1, reg2).linkTo(topOfLoop); - - void jae32(RegisterID left, Address right, Label target) - { - jae32(left, right).linkTo(target, this); - } - - void je32(RegisterID op1, Imm32 imm, Label target) - { - je32(op1, imm).linkTo(target, this); - } - - void je16(RegisterID op1, BaseIndex op2, Label target) - { - je16(op1, op2).linkTo(target, this); - } - - void jl32(RegisterID left, Imm32 right, Label target) - { - jl32(left, right).linkTo(target, this); - } - - void jle32(RegisterID left, RegisterID right, Label target) - { - jle32(left, right).linkTo(target, this); - } - - void jnePtr(RegisterID op1, ImmPtr imm, Label target) - { - jnePtr(op1, imm).linkTo(target, this); - } - - void jne32(RegisterID op1, RegisterID op2, Label target) - { - jne32(op1, op2).linkTo(target, this); - } - - void jne32(RegisterID op1, Imm32 imm, Label target) - { - jne32(op1, imm).linkTo(target, this); - } - - void jzPtr(RegisterID reg, Label target) - { - jzPtr(reg).linkTo(target, this); - } - - void jump(Label target) - { - m_assembler.link(m_assembler.jmp(), target.m_label); - } - - void jump(RegisterID target) - { - m_assembler.jmp_r(target); - } - - // Address is a memory location containing the address to jump to - void jump(Address address) - { - m_assembler.jmp_m(address.offset, address.base); - } - - - // 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 jnzSubPtr(Imm32 imm, RegisterID dest) - { - subPtr(imm, dest); - return Jump(m_assembler.jne()); - } - - Jump jnzSub32(Imm32 imm, RegisterID dest) - { - sub32(imm, dest); - return Jump(m_assembler.jne()); - } - - Jump joAddPtr(RegisterID src, RegisterID dest) - { - addPtr(src, dest); - return Jump(m_assembler.jo()); - } - - Jump joAdd32(RegisterID src, RegisterID dest) - { - add32(src, dest); - return Jump(m_assembler.jo()); - } - - Jump joAdd32(Imm32 imm, RegisterID dest) - { - add32(imm, dest); - return Jump(m_assembler.jo()); - } - - Jump joMul32(Imm32 imm, RegisterID src, RegisterID dest) - { - mul32(imm, src, dest); - return Jump(m_assembler.jo()); - } - - Jump joSub32(Imm32 imm, RegisterID dest) - { - sub32(imm, dest); - return Jump(m_assembler.jo()); - } - - Jump jzSubPtr(Imm32 imm, RegisterID dest) - { - subPtr(imm, dest); - return Jump(m_assembler.je()); - } - - Jump jzSub32(Imm32 imm, RegisterID dest) - { - sub32(imm, dest); - return Jump(m_assembler.je()); - } - - - // Miscellaneous operations: - - void breakpoint() - { - m_assembler.int3(); - } - - Jump call() - { - return Jump(m_assembler.call()); - } - - // FIXME: why does this return a Jump object? - it can't be linked. - // This may be to get a reference to the return address of the call. - // - // This should probably be handled by a separate label type to a regular - // jump. Todo: add a CallLabel type, for the regular call - can be linked - // like a jump (possibly a subclass of jump?, or possibly casts to a Jump). - // Also add a CallReturnLabel type for this to return (just a more JmpDsty - // form of label, can get the void* after the code has been linked, but can't - // try to link it like a Jump object), and let the CallLabel be cast into a - // CallReturnLabel. - Jump call(RegisterID target) - { - return Jump(m_assembler.call(target)); - } - - Label label() - { - return Label(this); - } - - Label align() - { - m_assembler.align(16); - return Label(this); - } - - ptrdiff_t differenceBetween(Label from, Jump to) - { - return X86Assembler::getDifferenceBetweenLabels(from.m_label, to.m_jmp); - } - - ptrdiff_t differenceBetween(Label from, Label to) - { - return X86Assembler::getDifferenceBetweenLabels(from.m_label, to.m_label); - } - - ptrdiff_t differenceBetween(Label from, DataLabelPtr to) - { - return X86Assembler::getDifferenceBetweenLabels(from.m_label, to.m_label); - } - - ptrdiff_t differenceBetween(Label from, DataLabel32 to) - { - return X86Assembler::getDifferenceBetweenLabels(from.m_label, to.m_label); - } - - ptrdiff_t differenceBetween(DataLabelPtr from, Jump to) - { - return X86Assembler::getDifferenceBetweenLabels(from.m_label, to.m_jmp); - } - - void ret() - { - m_assembler.ret(); - } - - void sete32(RegisterID src, RegisterID srcDest) - { - m_assembler.cmpl_rr(srcDest, src); - m_assembler.sete_r(srcDest); - m_assembler.movzbl_rr(srcDest, srcDest); - } - - void sete32(Imm32 imm, RegisterID srcDest) - { - compareImm32ForBranchEquality(srcDest, imm.m_value); - m_assembler.sete_r(srcDest); - m_assembler.movzbl_rr(srcDest, srcDest); - } - - void setne32(RegisterID src, RegisterID srcDest) - { - m_assembler.cmpl_rr(srcDest, src); - m_assembler.setne_r(srcDest); - m_assembler.movzbl_rr(srcDest, srcDest); - } - - void setne32(Imm32 imm, RegisterID srcDest) - { - compareImm32ForBranchEquality(srcDest, imm.m_value); - m_assembler.setne_r(srcDest); - m_assembler.movzbl_rr(srcDest, srcDest); - } - - // FIXME: - // The mask should be optional... paerhaps the argument order should be - // dest-src, operations always have a dest? ... possibly not true, considering - // asm ops like test, or pseudo ops like pop(). - void setnz32(Address address, Imm32 mask, RegisterID dest) - { - testImm32(address, mask); - m_assembler.setnz_r(dest); - m_assembler.movzbl_rr(dest, dest); - } - - void setz32(Address address, Imm32 mask, RegisterID dest) - { - testImm32(address, mask); - m_assembler.setz_r(dest); - m_assembler.movzbl_rr(dest, dest); - } }; } // namespace JSC diff --git a/src/3rdparty/webkit/JavaScriptCore/assembler/MacroAssemblerCodeRef.h b/src/3rdparty/webkit/JavaScriptCore/assembler/MacroAssemblerCodeRef.h new file mode 100644 index 0000000..0603060 --- /dev/null +++ b/src/3rdparty/webkit/JavaScriptCore/assembler/MacroAssemblerCodeRef.h @@ -0,0 +1,156 @@ +/* + * Copyright (C) 2009 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. ``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 + * 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 MacroAssemblerCodeRef_h +#define MacroAssemblerCodeRef_h + +#include + +#include "ExecutableAllocator.h" +#include "PassRefPtr.h" +#include "RefPtr.h" +#include "UnusedParam.h" + +#if ENABLE(ASSEMBLER) + +namespace JSC { + +// FunctionPtr: +// +// FunctionPtr should be used to wrap pointers to C/C++ functions in JSC +// (particularly, the stub functions). +class FunctionPtr { +public: + FunctionPtr() + : m_value(0) + { + } + + template + explicit FunctionPtr(FunctionType* value) + : m_value(reinterpret_cast(value)) + { + ASSERT(m_value); + } + + void* value() const { return m_value; } + void* executableAddress() const { return m_value; } + + +private: + void* m_value; +}; + +// ReturnAddressPtr: +// +// ReturnAddressPtr should be used to wrap return addresses generated by processor +// 'call' instructions exectued in JIT code. We use return addresses to look up +// exception and optimization information, and to repatch the call instruction +// that is the source of the return address. +class ReturnAddressPtr { +public: + ReturnAddressPtr() + : m_value(0) + { + } + + explicit ReturnAddressPtr(void* value) + : m_value(value) + { + ASSERT(m_value); + } + + void* value() const { return m_value; } + +private: + void* m_value; +}; + +// MacroAssemblerCodePtr: +// +// MacroAssemblerCodePtr should be used to wrap pointers to JIT generated code. +class MacroAssemblerCodePtr { +public: + MacroAssemblerCodePtr() + : m_value(0) + { + } + + explicit MacroAssemblerCodePtr(void* value) + : m_value(value) + { + ASSERT(m_value); + } + + explicit MacroAssemblerCodePtr(ReturnAddressPtr ra) + : m_value(ra.value()) + { + ASSERT(m_value); + } + + void* executableAddress() const { return m_value; } + void* dataLocation() const { ASSERT(m_value); return m_value; } + +private: + void* m_value; +}; + +// MacroAssemblerCodeRef: +// +// A reference to a section of JIT generated code. A CodeRef consists of a +// pointer to the code, and a ref pointer to the pool from within which it +// was allocated. +class MacroAssemblerCodeRef { +public: + MacroAssemblerCodeRef() +#ifndef NDEBUG + : m_size(0) +#endif + { + } + + MacroAssemblerCodeRef(void* code, PassRefPtr executablePool, size_t size) + : m_code(code) + , m_executablePool(executablePool) + { +#ifndef NDEBUG + m_size = size; +#else + UNUSED_PARAM(size); +#endif + } + + MacroAssemblerCodePtr m_code; + RefPtr m_executablePool; +#ifndef NDEBUG + size_t m_size; +#endif +}; + +} // namespace JSC + +#endif // ENABLE(ASSEMBLER) + +#endif // MacroAssemblerCodeRef_h diff --git a/src/3rdparty/webkit/JavaScriptCore/assembler/MacroAssemblerX86.h b/src/3rdparty/webkit/JavaScriptCore/assembler/MacroAssemblerX86.h new file mode 100644 index 0000000..801bf61 --- /dev/null +++ b/src/3rdparty/webkit/JavaScriptCore/assembler/MacroAssemblerX86.h @@ -0,0 +1,164 @@ +/* + * Copyright (C) 2008 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. ``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 + * 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 MacroAssemblerX86_h +#define MacroAssemblerX86_h + +#include + +#if ENABLE(ASSEMBLER) && PLATFORM(X86) + +#include "MacroAssemblerX86Common.h" + +namespace JSC { + +class MacroAssemblerX86 : public MacroAssemblerX86Common { +public: + MacroAssemblerX86() + : m_isSSE2Present(isSSE2Present()) + { + } + + static const Scale ScalePtr = TimesFour; + + using MacroAssemblerX86Common::add32; + using MacroAssemblerX86Common::and32; + using MacroAssemblerX86Common::sub32; + using MacroAssemblerX86Common::or32; + using MacroAssemblerX86Common::load32; + using MacroAssemblerX86Common::store32; + using MacroAssemblerX86Common::branch32; + using MacroAssemblerX86Common::call; + + void add32(Imm32 imm, RegisterID src, RegisterID dest) + { + m_assembler.leal_mr(imm.m_value, src, dest); + } + + void add32(Imm32 imm, AbsoluteAddress address) + { + m_assembler.addl_im(imm.m_value, address.m_ptr); + } + + void addWithCarry32(Imm32 imm, AbsoluteAddress address) + { + m_assembler.adcl_im(imm.m_value, address.m_ptr); + } + + void and32(Imm32 imm, AbsoluteAddress address) + { + m_assembler.andl_im(imm.m_value, address.m_ptr); + } + + void or32(Imm32 imm, AbsoluteAddress address) + { + m_assembler.orl_im(imm.m_value, address.m_ptr); + } + + void sub32(Imm32 imm, AbsoluteAddress address) + { + m_assembler.subl_im(imm.m_value, address.m_ptr); + } + + void load32(void* address, RegisterID dest) + { + m_assembler.movl_mr(address, dest); + } + + void store32(Imm32 imm, void* address) + { + m_assembler.movl_i32m(imm.m_value, address); + } + + void store32(RegisterID src, void* address) + { + m_assembler.movl_rm(src, address); + } + + Jump branch32(Condition cond, AbsoluteAddress left, RegisterID right) + { + m_assembler.cmpl_rm(right, left.m_ptr); + return Jump(m_assembler.jCC(x86Condition(cond))); + } + + Jump branch32(Condition cond, AbsoluteAddress left, Imm32 right) + { + m_assembler.cmpl_im(right.m_value, left.m_ptr); + return Jump(m_assembler.jCC(x86Condition(cond))); + } + + Call call() + { + return Call(m_assembler.call(), Call::Linkable); + } + + Call tailRecursiveCall() + { + return Call::fromTailJump(jump()); + } + + Call makeTailRecursiveCall(Jump oldJump) + { + return Call::fromTailJump(oldJump); + } + + + DataLabelPtr moveWithPatch(ImmPtr initialValue, RegisterID dest) + { + m_assembler.movl_i32r(initialValue.asIntptr(), dest); + return DataLabelPtr(this); + } + + Jump branchPtrWithPatch(Condition cond, RegisterID left, DataLabelPtr& dataLabel, ImmPtr initialRightValue = ImmPtr(0)) + { + m_assembler.cmpl_ir_force32(initialRightValue.asIntptr(), left); + dataLabel = DataLabelPtr(this); + return Jump(m_assembler.jCC(x86Condition(cond))); + } + + Jump branchPtrWithPatch(Condition cond, Address left, DataLabelPtr& dataLabel, ImmPtr initialRightValue = ImmPtr(0)) + { + m_assembler.cmpl_im_force32(initialRightValue.asIntptr(), left.offset, left.base); + dataLabel = DataLabelPtr(this); + return Jump(m_assembler.jCC(x86Condition(cond))); + } + + DataLabelPtr storePtrWithPatch(ImmPtr initialValue, ImplicitAddress address) + { + m_assembler.movl_i32m(initialValue.asIntptr(), address.offset, address.base); + return DataLabelPtr(this); + } + + bool supportsFloatingPoint() const { return m_isSSE2Present; } + +private: + const bool m_isSSE2Present; +}; + +} // namespace JSC + +#endif // ENABLE(ASSEMBLER) + +#endif // MacroAssemblerX86_h diff --git a/src/3rdparty/webkit/JavaScriptCore/assembler/MacroAssemblerX86Common.h b/src/3rdparty/webkit/JavaScriptCore/assembler/MacroAssemblerX86Common.h new file mode 100644 index 0000000..cea691e --- /dev/null +++ b/src/3rdparty/webkit/JavaScriptCore/assembler/MacroAssemblerX86Common.h @@ -0,0 +1,780 @@ +/* + * Copyright (C) 2008 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. ``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 + * 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 MacroAssemblerX86Common_h +#define MacroAssemblerX86Common_h + +#include + +#if ENABLE(ASSEMBLER) + +#include "X86Assembler.h" +#include "AbstractMacroAssembler.h" + +namespace JSC { + +class MacroAssemblerX86Common : public AbstractMacroAssembler { +public: + + enum Condition { + Equal = X86Assembler::ConditionE, + NotEqual = X86Assembler::ConditionNE, + Above = X86Assembler::ConditionA, + AboveOrEqual = X86Assembler::ConditionAE, + Below = X86Assembler::ConditionB, + BelowOrEqual = X86Assembler::ConditionBE, + GreaterThan = X86Assembler::ConditionG, + GreaterThanOrEqual = X86Assembler::ConditionGE, + LessThan = X86Assembler::ConditionL, + LessThanOrEqual = X86Assembler::ConditionLE, + Overflow = X86Assembler::ConditionO, + Signed = X86Assembler::ConditionS, + Zero = X86Assembler::ConditionE, + NonZero = X86Assembler::ConditionNE + }; + + enum DoubleCondition { + DoubleEqual = X86Assembler::ConditionE, + DoubleGreaterThan = X86Assembler::ConditionA, + DoubleGreaterThanOrEqual = X86Assembler::ConditionAE, + DoubleLessThan = X86Assembler::ConditionB, + DoubleLessThanOrEqual = X86Assembler::ConditionBE, + }; + + static const RegisterID stackPointerRegister = X86::esp; + + // 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.addl_rr(src, dest); + } + + void add32(Imm32 imm, Address address) + { + m_assembler.addl_im(imm.m_value, address.offset, address.base); + } + + void add32(Imm32 imm, RegisterID dest) + { + m_assembler.addl_ir(imm.m_value, dest); + } + + void add32(Address src, RegisterID dest) + { + m_assembler.addl_mr(src.offset, src.base, dest); + } + + void and32(RegisterID src, RegisterID dest) + { + m_assembler.andl_rr(src, dest); + } + + void and32(Imm32 imm, RegisterID dest) + { + m_assembler.andl_ir(imm.m_value, dest); + } + + void and32(Imm32 imm, Address address) + { + m_assembler.andl_im(imm.m_value, address.offset, address.base); + } + + void lshift32(Imm32 imm, RegisterID dest) + { + m_assembler.shll_i8r(imm.m_value, dest); + } + + void lshift32(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 != X86::ecx) { + swap(shift_amount, X86::ecx); + + // E.g. transform "shll %eax, %eax" -> "xchgl %eax, %ecx; shll %ecx, %ecx; xchgl %eax, %ecx" + if (dest == shift_amount) + m_assembler.shll_CLr(X86::ecx); + // E.g. transform "shll %eax, %ecx" -> "xchgl %eax, %ecx; shll %ecx, %eax; xchgl %eax, %ecx" + else if (dest == X86::ecx) + m_assembler.shll_CLr(shift_amount); + // E.g. transform "shll %eax, %ebx" -> "xchgl %eax, %ecx; shll %ecx, %ebx; xchgl %eax, %ecx" + else + m_assembler.shll_CLr(dest); + + swap(shift_amount, X86::ecx); + } else + m_assembler.shll_CLr(dest); + } + + void mul32(RegisterID src, RegisterID dest) + { + m_assembler.imull_rr(src, dest); + } + + void mul32(Imm32 imm, RegisterID src, RegisterID dest) + { + m_assembler.imull_i32r(src, imm.m_value, dest); + } + + void not32(RegisterID srcDest) + { + m_assembler.notl_r(srcDest); + } + + void or32(RegisterID src, RegisterID dest) + { + m_assembler.orl_rr(src, dest); + } + + void or32(Imm32 imm, RegisterID dest) + { + m_assembler.orl_ir(imm.m_value, dest); + } + + void or32(Imm32 imm, Address address) + { + m_assembler.orl_im(imm.m_value, address.offset, address.base); + } + + void rshift32(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 != X86::ecx) { + swap(shift_amount, X86::ecx); + + // E.g. transform "shll %eax, %eax" -> "xchgl %eax, %ecx; shll %ecx, %ecx; xchgl %eax, %ecx" + if (dest == shift_amount) + m_assembler.sarl_CLr(X86::ecx); + // E.g. transform "shll %eax, %ecx" -> "xchgl %eax, %ecx; shll %ecx, %eax; xchgl %eax, %ecx" + else if (dest == X86::ecx) + m_assembler.sarl_CLr(shift_amount); + // E.g. transform "shll %eax, %ebx" -> "xchgl %eax, %ecx; shll %ecx, %ebx; xchgl %eax, %ecx" + else + m_assembler.sarl_CLr(dest); + + swap(shift_amount, X86::ecx); + } else + m_assembler.sarl_CLr(dest); + } + + void rshift32(Imm32 imm, RegisterID dest) + { + m_assembler.sarl_i8r(imm.m_value, dest); + } + + void sub32(RegisterID src, RegisterID dest) + { + m_assembler.subl_rr(src, dest); + } + + void sub32(Imm32 imm, RegisterID dest) + { + m_assembler.subl_ir(imm.m_value, dest); + } + + void sub32(Imm32 imm, Address address) + { + m_assembler.subl_im(imm.m_value, address.offset, address.base); + } + + void sub32(Address src, RegisterID dest) + { + m_assembler.subl_mr(src.offset, src.base, dest); + } + + void xor32(RegisterID src, RegisterID dest) + { + m_assembler.xorl_rr(src, dest); + } + + void xor32(Imm32 imm, RegisterID srcDest) + { + m_assembler.xorl_ir(imm.m_value, srcDest); + } + + + // 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. + + void load32(ImplicitAddress address, RegisterID dest) + { + m_assembler.movl_mr(address.offset, address.base, dest); + } + + void load32(BaseIndex address, RegisterID dest) + { + m_assembler.movl_mr(address.offset, address.base, address.index, address.scale, dest); + } + + DataLabel32 load32WithAddressOffsetPatch(Address address, RegisterID dest) + { + m_assembler.movl_mr_disp32(address.offset, address.base, dest); + return DataLabel32(this); + } + + void load16(BaseIndex address, RegisterID dest) + { + m_assembler.movzwl_mr(address.offset, address.base, address.index, address.scale, dest); + } + + DataLabel32 store32WithAddressOffsetPatch(RegisterID src, Address address) + { + m_assembler.movl_rm_disp32(src, address.offset, address.base); + return DataLabel32(this); + } + + void store32(RegisterID src, ImplicitAddress address) + { + m_assembler.movl_rm(src, address.offset, address.base); + } + + void store32(RegisterID src, BaseIndex address) + { + m_assembler.movl_rm(src, address.offset, address.base, address.index, address.scale); + } + + void store32(Imm32 imm, ImplicitAddress address) + { + m_assembler.movl_i32m(imm.m_value, address.offset, address.base); + } + + + // Floating-point operation: + // + // Presently only supports SSE, not x87 floating point. + + void loadDouble(ImplicitAddress address, FPRegisterID dest) + { + ASSERT(isSSE2Present()); + m_assembler.movsd_mr(address.offset, address.base, dest); + } + + void storeDouble(FPRegisterID src, ImplicitAddress address) + { + ASSERT(isSSE2Present()); + m_assembler.movsd_rm(src, address.offset, address.base); + } + + void addDouble(FPRegisterID src, FPRegisterID dest) + { + ASSERT(isSSE2Present()); + m_assembler.addsd_rr(src, dest); + } + + void addDouble(Address src, FPRegisterID dest) + { + ASSERT(isSSE2Present()); + m_assembler.addsd_mr(src.offset, src.base, dest); + } + + void subDouble(FPRegisterID src, FPRegisterID dest) + { + ASSERT(isSSE2Present()); + m_assembler.subsd_rr(src, dest); + } + + void subDouble(Address src, FPRegisterID dest) + { + ASSERT(isSSE2Present()); + m_assembler.subsd_mr(src.offset, src.base, dest); + } + + void mulDouble(FPRegisterID src, FPRegisterID dest) + { + ASSERT(isSSE2Present()); + m_assembler.mulsd_rr(src, dest); + } + + void mulDouble(Address src, FPRegisterID dest) + { + ASSERT(isSSE2Present()); + m_assembler.mulsd_mr(src.offset, src.base, dest); + } + + void convertInt32ToDouble(RegisterID src, FPRegisterID dest) + { + ASSERT(isSSE2Present()); + m_assembler.cvtsi2sd_rr(src, dest); + } + + Jump branchDouble(DoubleCondition cond, FPRegisterID left, FPRegisterID right) + { + ASSERT(isSSE2Present()); + m_assembler.ucomisd_rr(right, left); + return Jump(m_assembler.jCC(x86Condition(cond))); + } + + // 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_MIN). + Jump branchTruncateDoubleToInt32(FPRegisterID src, RegisterID dest) + { + ASSERT(isSSE2Present()); + m_assembler.cvttsd2si_rr(src, dest); + return branch32(Equal, dest, Imm32(0x80000000)); + } + + + // 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.pop_r(dest); + } + + void push(RegisterID src) + { + m_assembler.push_r(src); + } + + void push(Address address) + { + m_assembler.push_m(address.offset, address.base); + } + + void push(Imm32 imm) + { + m_assembler.push_i32(imm.m_value); + } + + + // Register move operations: + // + // Move values in registers. + + void move(Imm32 imm, RegisterID dest) + { + // Note: on 64-bit the Imm32 value is zero extended into the register, it + // may be useful to have a separate version that sign extends the value? + if (!imm.m_value) + m_assembler.xorl_rr(dest, dest); + else + m_assembler.movl_i32r(imm.m_value, dest); + } + +#if PLATFORM(X86_64) + void move(RegisterID src, RegisterID dest) + { + // Note: on 64-bit this is is a full register move; perhaps it would be + // useful to have separate move32 & movePtr, with move32 zero extending? + m_assembler.movq_rr(src, dest); + } + + void move(ImmPtr imm, RegisterID dest) + { + if (CAN_SIGN_EXTEND_U32_64(imm.asIntptr())) + m_assembler.movl_i32r(static_cast(imm.asIntptr()), dest); + else + m_assembler.movq_i64r(imm.asIntptr(), dest); + } + + void swap(RegisterID reg1, RegisterID reg2) + { + m_assembler.xchgq_rr(reg1, reg2); + } + + void signExtend32ToPtr(RegisterID src, RegisterID dest) + { + m_assembler.movsxd_rr(src, dest); + } + + void zeroExtend32ToPtr(RegisterID src, RegisterID dest) + { + m_assembler.movl_rr(src, dest); + } +#else + void move(RegisterID src, RegisterID dest) + { + if (src != dest) + m_assembler.movl_rr(src, dest); + } + + void move(ImmPtr imm, RegisterID dest) + { + m_assembler.movl_i32r(imm.asIntptr(), dest); + } + + void swap(RegisterID reg1, RegisterID reg2) + { + if (reg1 != reg2) + m_assembler.xchgl_rr(reg1, reg2); + } + + void signExtend32ToPtr(RegisterID src, RegisterID dest) + { + move(src, dest); + } + + void zeroExtend32ToPtr(RegisterID src, RegisterID dest) + { + move(src, dest); + } +#endif + + + // 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. + +public: + Jump branch32(Condition cond, RegisterID left, RegisterID right) + { + m_assembler.cmpl_rr(right, left); + return Jump(m_assembler.jCC(x86Condition(cond))); + } + + Jump branch32(Condition cond, RegisterID left, Imm32 right) + { + if (((cond == Equal) || (cond == NotEqual)) && !right.m_value) + m_assembler.testl_rr(left, left); + else + m_assembler.cmpl_ir(right.m_value, left); + return Jump(m_assembler.jCC(x86Condition(cond))); + } + + Jump branch32(Condition cond, RegisterID left, Address right) + { + m_assembler.cmpl_mr(right.offset, right.base, left); + return Jump(m_assembler.jCC(x86Condition(cond))); + } + + Jump branch32(Condition cond, Address left, RegisterID right) + { + m_assembler.cmpl_rm(right, left.offset, left.base); + return Jump(m_assembler.jCC(x86Condition(cond))); + } + + Jump branch32(Condition cond, Address left, Imm32 right) + { + m_assembler.cmpl_im(right.m_value, left.offset, left.base); + return Jump(m_assembler.jCC(x86Condition(cond))); + } + + Jump branch32(Condition cond, BaseIndex left, Imm32 right) + { + m_assembler.cmpl_im(right.m_value, left.offset, left.base, left.index, left.scale); + return Jump(m_assembler.jCC(x86Condition(cond))); + } + + Jump branch16(Condition cond, BaseIndex left, RegisterID right) + { + m_assembler.cmpw_rm(right, left.offset, left.base, left.index, left.scale); + return Jump(m_assembler.jCC(x86Condition(cond))); + } + + Jump branch16(Condition cond, BaseIndex left, Imm32 right) + { + ASSERT(!(right.m_value & 0xFFFF0000)); + + m_assembler.cmpw_im(right.m_value, left.offset, left.base, left.index, left.scale); + return Jump(m_assembler.jCC(x86Condition(cond))); + } + + Jump branchTest32(Condition cond, RegisterID reg, RegisterID mask) + { + ASSERT((cond == Zero) || (cond == NonZero)); + m_assembler.testl_rr(reg, mask); + return Jump(m_assembler.jCC(x86Condition(cond))); + } + + Jump branchTest32(Condition cond, RegisterID reg, Imm32 mask = Imm32(-1)) + { + ASSERT((cond == Zero) || (cond == NonZero)); + // if we are only interested in the low seven bits, this can be tested with a testb + if (mask.m_value == -1) + m_assembler.testl_rr(reg, reg); + else if ((mask.m_value & ~0x7f) == 0) + m_assembler.testb_i8r(mask.m_value, reg); + else + m_assembler.testl_i32r(mask.m_value, reg); + return Jump(m_assembler.jCC(x86Condition(cond))); + } + + Jump branchTest32(Condition cond, Address address, Imm32 mask = Imm32(-1)) + { + ASSERT((cond == Zero) || (cond == NonZero)); + if (mask.m_value == -1) + m_assembler.cmpl_im(0, address.offset, address.base); + else + m_assembler.testl_i32m(mask.m_value, address.offset, address.base); + return Jump(m_assembler.jCC(x86Condition(cond))); + } + + Jump branchTest32(Condition cond, BaseIndex address, Imm32 mask = Imm32(-1)) + { + ASSERT((cond == Zero) || (cond == NonZero)); + if (mask.m_value == -1) + m_assembler.cmpl_im(0, address.offset, address.base, address.index, address.scale); + else + m_assembler.testl_i32m(mask.m_value, address.offset, address.base, address.index, address.scale); + return Jump(m_assembler.jCC(x86Condition(cond))); + } + + Jump jump() + { + return Jump(m_assembler.jmp()); + } + + void jump(RegisterID target) + { + m_assembler.jmp_r(target); + } + + // Address is a memory location containing the address to jump to + void jump(Address address) + { + m_assembler.jmp_m(address.offset, address.base); + } + + + // 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)); + add32(src, dest); + return Jump(m_assembler.jCC(x86Condition(cond))); + } + + Jump branchAdd32(Condition cond, Imm32 imm, RegisterID dest) + { + ASSERT((cond == Overflow) || (cond == Signed) || (cond == Zero) || (cond == NonZero)); + add32(imm, dest); + return Jump(m_assembler.jCC(x86Condition(cond))); + } + + Jump branchMul32(Condition cond, RegisterID src, RegisterID dest) + { + ASSERT(cond == Overflow); + mul32(src, dest); + return Jump(m_assembler.jCC(x86Condition(cond))); + } + + Jump branchMul32(Condition cond, Imm32 imm, RegisterID src, RegisterID dest) + { + ASSERT(cond == Overflow); + mul32(imm, src, dest); + return Jump(m_assembler.jCC(x86Condition(cond))); + } + + Jump branchSub32(Condition cond, RegisterID src, RegisterID dest) + { + ASSERT((cond == Overflow) || (cond == Signed) || (cond == Zero) || (cond == NonZero)); + sub32(src, dest); + return Jump(m_assembler.jCC(x86Condition(cond))); + } + + Jump branchSub32(Condition cond, Imm32 imm, RegisterID dest) + { + ASSERT((cond == Overflow) || (cond == Signed) || (cond == Zero) || (cond == NonZero)); + sub32(imm, dest); + return Jump(m_assembler.jCC(x86Condition(cond))); + } + + + // Miscellaneous operations: + + void breakpoint() + { + m_assembler.int3(); + } + + Call nearCall() + { + return Call(m_assembler.call(), Call::LinkableNear); + } + + Call call(RegisterID target) + { + return Call(m_assembler.call(target), Call::None); + } + + void call(Address address) + { + m_assembler.call_m(address.offset, address.base); + } + + void ret() + { + m_assembler.ret(); + } + + void set32(Condition cond, RegisterID left, RegisterID right, RegisterID dest) + { + m_assembler.cmpl_rr(right, left); + m_assembler.setCC_r(x86Condition(cond), dest); + m_assembler.movzbl_rr(dest, dest); + } + + void set32(Condition cond, RegisterID left, Imm32 right, RegisterID dest) + { + if (((cond == Equal) || (cond == NotEqual)) && !right.m_value) + m_assembler.testl_rr(left, left); + else + m_assembler.cmpl_ir(right.m_value, left); + m_assembler.setCC_r(x86Condition(cond), dest); + m_assembler.movzbl_rr(dest, dest); + } + + // FIXME: + // The mask should be optional... paerhaps the argument order should be + // dest-src, operations always have a dest? ... possibly not true, considering + // asm ops like test, or pseudo ops like pop(). + void setTest32(Condition cond, Address address, Imm32 mask, RegisterID dest) + { + if (mask.m_value == -1) + m_assembler.cmpl_im(0, address.offset, address.base); + else + m_assembler.testl_i32m(mask.m_value, address.offset, address.base); + m_assembler.setCC_r(x86Condition(cond), dest); + m_assembler.movzbl_rr(dest, dest); + } + +protected: + X86Assembler::Condition x86Condition(Condition cond) + { + return static_cast(cond); + } + + X86Assembler::Condition x86Condition(DoubleCondition cond) + { + return static_cast(cond); + } + +private: + // Only MacroAssemblerX86 should be using the following method; SSE2 is always available on + // x86_64, and clients & subclasses of MacroAssembler should be using 'supportsFloatingPoint()'. + friend class MacroAssemblerX86; + +#if PLATFORM(X86) +#if PLATFORM(MAC) + + // All X86 Macs are guaranteed to support at least SSE2, + static bool isSSE2Present() + { + return true; + } + +#else // PLATFORM(MAC) + + enum SSE2CheckState { + NotCheckedSSE2, + HasSSE2, + NoSSE2 + }; + + static bool isSSE2Present() + { + if (s_sse2CheckState == NotCheckedSSE2) { + // Default the flags value to zero; if the compiler is + // not MSVC or GCC we will read this as SSE2 not present. + int flags = 0; +#if COMPILER(MSVC) + _asm { + mov eax, 1 // cpuid function 1 gives us the standard feature set + cpuid; + mov flags, edx; + } +#elif COMPILER(GCC) + asm ( + "movl $0x1, %%eax;" + "pushl %%ebx;" + "cpuid;" + "popl %%ebx;" + "movl %%edx, %0;" + : "=g" (flags) + : + : "%eax", "%ecx", "%edx" + ); +#endif + static const int SSE2FeatureBit = 1 << 26; + s_sse2CheckState = (flags & SSE2FeatureBit) ? HasSSE2 : NoSSE2; + } + // Only check once. + ASSERT(s_sse2CheckState != NotCheckedSSE2); + + return s_sse2CheckState == HasSSE2; + } + + static SSE2CheckState s_sse2CheckState; + +#endif // PLATFORM(MAC) +#elif !defined(NDEBUG) // PLATFORM(X86) + + // On x86-64 we should never be checking for SSE2 in a non-debug build, + // but non debug add this method to keep the asserts above happy. + static bool isSSE2Present() + { + return true; + } + +#endif +}; + +} // namespace JSC + +#endif // ENABLE(ASSEMBLER) + +#endif // MacroAssemblerX86Common_h diff --git a/src/3rdparty/webkit/JavaScriptCore/assembler/MacroAssemblerX86_64.h b/src/3rdparty/webkit/JavaScriptCore/assembler/MacroAssemblerX86_64.h new file mode 100644 index 0000000..4da7fe6 --- /dev/null +++ b/src/3rdparty/webkit/JavaScriptCore/assembler/MacroAssemblerX86_64.h @@ -0,0 +1,446 @@ +/* + * Copyright (C) 2008 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. ``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 + * 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 MacroAssemblerX86_64_h +#define MacroAssemblerX86_64_h + +#include + +#if ENABLE(ASSEMBLER) && PLATFORM(X86_64) + +#include "MacroAssemblerX86Common.h" + +namespace JSC { + +class MacroAssemblerX86_64 : public MacroAssemblerX86Common { +protected: + static const X86::RegisterID scratchRegister = X86::r11; + +public: + static const Scale ScalePtr = TimesEight; + + using MacroAssemblerX86Common::add32; + using MacroAssemblerX86Common::and32; + using MacroAssemblerX86Common::or32; + using MacroAssemblerX86Common::sub32; + using MacroAssemblerX86Common::load32; + using MacroAssemblerX86Common::store32; + using MacroAssemblerX86Common::call; + + void add32(Imm32 imm, AbsoluteAddress address) + { + move(ImmPtr(address.m_ptr), scratchRegister); + add32(imm, Address(scratchRegister)); + } + + void and32(Imm32 imm, AbsoluteAddress address) + { + move(ImmPtr(address.m_ptr), scratchRegister); + and32(imm, Address(scratchRegister)); + } + + void or32(Imm32 imm, AbsoluteAddress address) + { + move(ImmPtr(address.m_ptr), scratchRegister); + or32(imm, Address(scratchRegister)); + } + + void sub32(Imm32 imm, AbsoluteAddress address) + { + move(ImmPtr(address.m_ptr), scratchRegister); + sub32(imm, Address(scratchRegister)); + } + + void load32(void* address, RegisterID dest) + { + if (dest == X86::eax) + m_assembler.movl_mEAX(address); + else { + move(X86::eax, dest); + m_assembler.movl_mEAX(address); + swap(X86::eax, dest); + } + } + + void store32(Imm32 imm, void* address) + { + move(X86::eax, scratchRegister); + move(imm, X86::eax); + m_assembler.movl_EAXm(address); + move(scratchRegister, X86::eax); + } + + Call call() + { + DataLabelPtr label = moveWithPatch(ImmPtr(0), scratchRegister); + Call result = Call(m_assembler.call(scratchRegister), Call::Linkable); + ASSERT(differenceBetween(label, result) == REPTACH_OFFSET_CALL_R11); + return result; + } + + Call tailRecursiveCall() + { + DataLabelPtr label = moveWithPatch(ImmPtr(0), scratchRegister); + Jump newJump = Jump(m_assembler.jmp_r(scratchRegister)); + ASSERT(differenceBetween(label, newJump) == REPTACH_OFFSET_CALL_R11); + return Call::fromTailJump(newJump); + } + + Call makeTailRecursiveCall(Jump oldJump) + { + oldJump.link(this); + DataLabelPtr label = moveWithPatch(ImmPtr(0), scratchRegister); + Jump newJump = Jump(m_assembler.jmp_r(scratchRegister)); + ASSERT(differenceBetween(label, newJump) == REPTACH_OFFSET_CALL_R11); + return Call::fromTailJump(newJump); + } + + + void addPtr(RegisterID src, RegisterID dest) + { + m_assembler.addq_rr(src, dest); + } + + void addPtr(Imm32 imm, RegisterID srcDest) + { + m_assembler.addq_ir(imm.m_value, srcDest); + } + + void addPtr(ImmPtr imm, RegisterID dest) + { + move(imm, scratchRegister); + m_assembler.addq_rr(scratchRegister, dest); + } + + void addPtr(Imm32 imm, RegisterID src, RegisterID dest) + { + m_assembler.leaq_mr(imm.m_value, src, dest); + } + + void addPtr(Imm32 imm, Address address) + { + m_assembler.addq_im(imm.m_value, address.offset, address.base); + } + + void addPtr(Imm32 imm, AbsoluteAddress address) + { + move(ImmPtr(address.m_ptr), scratchRegister); + addPtr(imm, Address(scratchRegister)); + } + + void andPtr(RegisterID src, RegisterID dest) + { + m_assembler.andq_rr(src, dest); + } + + void andPtr(Imm32 imm, RegisterID srcDest) + { + m_assembler.andq_ir(imm.m_value, srcDest); + } + + void orPtr(RegisterID src, RegisterID dest) + { + m_assembler.orq_rr(src, dest); + } + + void orPtr(ImmPtr imm, RegisterID dest) + { + move(imm, scratchRegister); + m_assembler.orq_rr(scratchRegister, dest); + } + + void orPtr(Imm32 imm, RegisterID dest) + { + m_assembler.orq_ir(imm.m_value, dest); + } + + void rshiftPtr(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 != X86::ecx) { + swap(shift_amount, X86::ecx); + + // E.g. transform "shll %eax, %eax" -> "xchgl %eax, %ecx; shll %ecx, %ecx; xchgl %eax, %ecx" + if (dest == shift_amount) + m_assembler.sarq_CLr(X86::ecx); + // E.g. transform "shll %eax, %ecx" -> "xchgl %eax, %ecx; shll %ecx, %eax; xchgl %eax, %ecx" + else if (dest == X86::ecx) + m_assembler.sarq_CLr(shift_amount); + // E.g. transform "shll %eax, %ebx" -> "xchgl %eax, %ecx; shll %ecx, %ebx; xchgl %eax, %ecx" + else + m_assembler.sarq_CLr(dest); + + swap(shift_amount, X86::ecx); + } else + m_assembler.sarq_CLr(dest); + } + + void rshiftPtr(Imm32 imm, RegisterID dest) + { + m_assembler.sarq_i8r(imm.m_value, dest); + } + + void subPtr(RegisterID src, RegisterID dest) + { + m_assembler.subq_rr(src, dest); + } + + void subPtr(Imm32 imm, RegisterID dest) + { + m_assembler.subq_ir(imm.m_value, dest); + } + + void subPtr(ImmPtr imm, RegisterID dest) + { + move(imm, scratchRegister); + m_assembler.subq_rr(scratchRegister, dest); + } + + void xorPtr(RegisterID src, RegisterID dest) + { + m_assembler.xorq_rr(src, dest); + } + + void xorPtr(Imm32 imm, RegisterID srcDest) + { + m_assembler.xorq_ir(imm.m_value, srcDest); + } + + + void loadPtr(ImplicitAddress address, RegisterID dest) + { + m_assembler.movq_mr(address.offset, address.base, dest); + } + + void loadPtr(BaseIndex address, RegisterID dest) + { + m_assembler.movq_mr(address.offset, address.base, address.index, address.scale, dest); + } + + void loadPtr(void* address, RegisterID dest) + { + if (dest == X86::eax) + m_assembler.movq_mEAX(address); + else { + move(X86::eax, dest); + m_assembler.movq_mEAX(address); + swap(X86::eax, dest); + } + } + + DataLabel32 loadPtrWithAddressOffsetPatch(Address address, RegisterID dest) + { + m_assembler.movq_mr_disp32(address.offset, address.base, dest); + return DataLabel32(this); + } + + void storePtr(RegisterID src, ImplicitAddress address) + { + m_assembler.movq_rm(src, address.offset, address.base); + } + + void storePtr(RegisterID src, BaseIndex address) + { + m_assembler.movq_rm(src, address.offset, address.base, address.index, address.scale); + } + + void storePtr(RegisterID src, void* address) + { + if (src == X86::eax) + m_assembler.movq_EAXm(address); + else { + swap(X86::eax, src); + m_assembler.movq_EAXm(address); + swap(X86::eax, src); + } + } + + void storePtr(ImmPtr imm, ImplicitAddress address) + { + intptr_t ptr = imm.asIntptr(); + if (CAN_SIGN_EXTEND_32_64(ptr)) + m_assembler.movq_i32m(static_cast(ptr), address.offset, address.base); + else { + move(imm, scratchRegister); + storePtr(scratchRegister, address); + } + } + + DataLabel32 storePtrWithAddressOffsetPatch(RegisterID src, Address address) + { + m_assembler.movq_rm_disp32(src, address.offset, address.base); + return DataLabel32(this); + } + + void movePtrToDouble(RegisterID src, FPRegisterID dest) + { + m_assembler.movq_rr(src, dest); + } + + void moveDoubleToPtr(FPRegisterID src, RegisterID dest) + { + m_assembler.movq_rr(src, dest); + } + + void setPtr(Condition cond, RegisterID left, Imm32 right, RegisterID dest) + { + if (((cond == Equal) || (cond == NotEqual)) && !right.m_value) + m_assembler.testq_rr(left, left); + else + m_assembler.cmpq_ir(right.m_value, left); + m_assembler.setCC_r(x86Condition(cond), dest); + m_assembler.movzbl_rr(dest, dest); + } + + Jump branchPtr(Condition cond, RegisterID left, RegisterID right) + { + m_assembler.cmpq_rr(right, left); + return Jump(m_assembler.jCC(x86Condition(cond))); + } + + Jump branchPtr(Condition cond, RegisterID left, ImmPtr right) + { + intptr_t imm = right.asIntptr(); + if (CAN_SIGN_EXTEND_32_64(imm)) { + if (!imm) + m_assembler.testq_rr(left, left); + else + m_assembler.cmpq_ir(imm, left); + return Jump(m_assembler.jCC(x86Condition(cond))); + } else { + move(right, scratchRegister); + return branchPtr(cond, left, scratchRegister); + } + } + + Jump branchPtr(Condition cond, RegisterID left, Address right) + { + m_assembler.cmpq_mr(right.offset, right.base, left); + return Jump(m_assembler.jCC(x86Condition(cond))); + } + + Jump branchPtr(Condition cond, AbsoluteAddress left, RegisterID right) + { + move(ImmPtr(left.m_ptr), scratchRegister); + return branchPtr(cond, Address(scratchRegister), right); + } + + Jump branchPtr(Condition cond, Address left, RegisterID right) + { + m_assembler.cmpq_rm(right, left.offset, left.base); + return Jump(m_assembler.jCC(x86Condition(cond))); + } + + Jump branchPtr(Condition cond, Address left, ImmPtr right) + { + move(right, scratchRegister); + return branchPtr(cond, left, scratchRegister); + } + + Jump branchTestPtr(Condition cond, RegisterID reg, RegisterID mask) + { + m_assembler.testq_rr(reg, mask); + return Jump(m_assembler.jCC(x86Condition(cond))); + } + + Jump branchTestPtr(Condition cond, RegisterID reg, Imm32 mask = Imm32(-1)) + { + // if we are only interested in the low seven bits, this can be tested with a testb + if (mask.m_value == -1) + m_assembler.testq_rr(reg, reg); + else if ((mask.m_value & ~0x7f) == 0) + m_assembler.testb_i8r(mask.m_value, reg); + else + m_assembler.testq_i32r(mask.m_value, reg); + return Jump(m_assembler.jCC(x86Condition(cond))); + } + + Jump branchTestPtr(Condition cond, Address address, Imm32 mask = Imm32(-1)) + { + if (mask.m_value == -1) + m_assembler.cmpq_im(0, address.offset, address.base); + else + m_assembler.testq_i32m(mask.m_value, address.offset, address.base); + return Jump(m_assembler.jCC(x86Condition(cond))); + } + + Jump branchTestPtr(Condition cond, BaseIndex address, Imm32 mask = Imm32(-1)) + { + if (mask.m_value == -1) + m_assembler.cmpq_im(0, address.offset, address.base, address.index, address.scale); + else + m_assembler.testq_i32m(mask.m_value, address.offset, address.base, address.index, address.scale); + return Jump(m_assembler.jCC(x86Condition(cond))); + } + + + Jump branchAddPtr(Condition cond, RegisterID src, RegisterID dest) + { + ASSERT((cond == Overflow) || (cond == Zero) || (cond == NonZero)); + addPtr(src, dest); + return Jump(m_assembler.jCC(x86Condition(cond))); + } + + Jump branchSubPtr(Condition cond, Imm32 imm, RegisterID dest) + { + ASSERT((cond == Overflow) || (cond == Zero) || (cond == NonZero)); + subPtr(imm, dest); + return Jump(m_assembler.jCC(x86Condition(cond))); + } + + DataLabelPtr moveWithPatch(ImmPtr initialValue, RegisterID dest) + { + m_assembler.movq_i64r(initialValue.asIntptr(), dest); + return DataLabelPtr(this); + } + + Jump branchPtrWithPatch(Condition cond, RegisterID left, DataLabelPtr& dataLabel, ImmPtr initialRightValue = ImmPtr(0)) + { + dataLabel = moveWithPatch(initialRightValue, scratchRegister); + return branchPtr(cond, left, scratchRegister); + } + + Jump branchPtrWithPatch(Condition cond, Address left, DataLabelPtr& dataLabel, ImmPtr initialRightValue = ImmPtr(0)) + { + dataLabel = moveWithPatch(initialRightValue, scratchRegister); + return branchPtr(cond, left, scratchRegister); + } + + DataLabelPtr storePtrWithPatch(ImmPtr initialValue, ImplicitAddress address) + { + DataLabelPtr label = moveWithPatch(initialValue, scratchRegister); + storePtr(scratchRegister, address); + return label; + } + + bool supportsFloatingPoint() const { return true; } +}; + +} // namespace JSC + +#endif // ENABLE(ASSEMBLER) + +#endif // MacroAssemblerX86_64_h diff --git a/src/3rdparty/webkit/JavaScriptCore/assembler/X86Assembler.h b/src/3rdparty/webkit/JavaScriptCore/assembler/X86Assembler.h index 3b0ce65..7a8b58d 100644 --- a/src/3rdparty/webkit/JavaScriptCore/assembler/X86Assembler.h +++ b/src/3rdparty/webkit/JavaScriptCore/assembler/X86Assembler.h @@ -82,8 +82,32 @@ class X86Assembler { public: typedef X86::RegisterID RegisterID; typedef X86::XMMRegisterID XMMRegisterID; + typedef XMMRegisterID FPRegisterID; typedef enum { + ConditionO, + ConditionNO, + ConditionB, + ConditionAE, + ConditionE, + ConditionNE, + ConditionBE, + ConditionA, + ConditionS, + ConditionNS, + ConditionP, + ConditionNP, + ConditionL, + ConditionGE, + ConditionLE, + ConditionG, + + ConditionC = ConditionB, + ConditionNC = ConditionAE, + } Condition; + +private: + typedef enum { OP_ADD_EvGv = 0x01, OP_ADD_GvEv = 0x03, OP_OR_EvGv = 0x09, @@ -145,31 +169,30 @@ public: OP2_ADDSD_VsdWsd = 0x58, OP2_MULSD_VsdWsd = 0x59, OP2_SUBSD_VsdWsd = 0x5C, + OP2_MOVD_VdEd = 0x6E, OP2_MOVD_EdVd = 0x7E, - OP2_JO_rel32 = 0x80, - OP2_JB_rel32 = 0x82, - OP2_JAE_rel32 = 0x83, - OP2_JE_rel32 = 0x84, - OP2_JNE_rel32 = 0x85, - OP2_JBE_rel32 = 0x86, - OP2_JA_rel32 = 0x87, - OP2_JS_rel32 = 0x88, - OP2_JP_rel32 = 0x8A, - OP2_JL_rel32 = 0x8C, - OP2_JGE_rel32 = 0x8D, - OP2_JLE_rel32 = 0x8E, - OP2_JG_rel32 = 0x8F, - OP_SETE = 0x94, - OP_SETNE = 0x95, + OP2_JCC_rel32 = 0x80, + OP_SETCC = 0x90, OP2_IMUL_GvEv = 0xAF, OP2_MOVZX_GvEb = 0xB6, OP2_MOVZX_GvEw = 0xB7, OP2_PEXTRW_GdUdIb = 0xC5, } TwoByteOpcodeID; + TwoByteOpcodeID jccRel32(Condition cond) + { + return (TwoByteOpcodeID)(OP2_JCC_rel32 + cond); + } + + TwoByteOpcodeID setccOpcode(Condition cond) + { + return (TwoByteOpcodeID)(OP_SETCC + cond); + } + typedef enum { GROUP1_OP_ADD = 0, GROUP1_OP_OR = 1, + GROUP1_OP_ADC = 2, GROUP1_OP_AND = 4, GROUP1_OP_SUB = 5, GROUP1_OP_XOR = 6, @@ -191,9 +214,6 @@ public: GROUP11_MOV = 0, } GroupOpcodeID; - // Opaque label types - -private: class X86InstructionFormatter; public: @@ -221,16 +241,22 @@ public: 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; + int m_offset : 31; + bool m_used : 1; }; X86Assembler() @@ -269,6 +295,19 @@ public: // Arithmetic operations: +#if !PLATFORM(X86_64) + void adcl_im(int imm, void* addr) + { + if (CAN_SIGN_EXTEND_8_32(imm)) { + m_formatter.oneByteOp(OP_GROUP1_EvIb, GROUP1_OP_ADC, addr); + m_formatter.immediate8(imm); + } else { + m_formatter.oneByteOp(OP_GROUP1_EvIz, GROUP1_OP_ADC, addr); + m_formatter.immediate32(imm); + } + } +#endif + void addl_rr(RegisterID src, RegisterID dst) { m_formatter.oneByteOp(OP_ADD_EvGv, src, dst); @@ -317,6 +356,17 @@ public: m_formatter.immediate32(imm); } } + + void addq_im(int imm, int offset, RegisterID base) + { + if (CAN_SIGN_EXTEND_8_32(imm)) { + m_formatter.oneByteOp64(OP_GROUP1_EvIb, GROUP1_OP_ADD, base, offset); + m_formatter.immediate8(imm); + } else { + m_formatter.oneByteOp64(OP_GROUP1_EvIz, GROUP1_OP_ADD, base, offset); + m_formatter.immediate32(imm); + } + } #else void addl_im(int imm, void* addr) { @@ -346,6 +396,17 @@ public: } } + void andl_im(int imm, int offset, RegisterID base) + { + if (CAN_SIGN_EXTEND_8_32(imm)) { + m_formatter.oneByteOp(OP_GROUP1_EvIb, GROUP1_OP_AND, base, offset); + m_formatter.immediate8(imm); + } else { + m_formatter.oneByteOp(OP_GROUP1_EvIz, GROUP1_OP_AND, base, offset); + m_formatter.immediate32(imm); + } + } + #if PLATFORM(X86_64) void andq_rr(RegisterID src, RegisterID dst) { @@ -362,6 +423,17 @@ public: m_formatter.immediate32(imm); } } +#else + void andl_im(int imm, void* addr) + { + if (CAN_SIGN_EXTEND_8_32(imm)) { + m_formatter.oneByteOp(OP_GROUP1_EvIb, GROUP1_OP_AND, addr); + m_formatter.immediate8(imm); + } else { + m_formatter.oneByteOp(OP_GROUP1_EvIz, GROUP1_OP_AND, addr); + m_formatter.immediate32(imm); + } + } #endif void notl_r(RegisterID dst) @@ -390,6 +462,17 @@ public: } } + void orl_im(int imm, int offset, RegisterID base) + { + if (CAN_SIGN_EXTEND_8_32(imm)) { + m_formatter.oneByteOp(OP_GROUP1_EvIb, GROUP1_OP_OR, base, offset); + m_formatter.immediate8(imm); + } else { + m_formatter.oneByteOp(OP_GROUP1_EvIz, GROUP1_OP_OR, base, offset); + m_formatter.immediate32(imm); + } + } + #if PLATFORM(X86_64) void orq_rr(RegisterID src, RegisterID dst) { @@ -406,6 +489,17 @@ public: m_formatter.immediate32(imm); } } +#else + void orl_im(int imm, void* addr) + { + if (CAN_SIGN_EXTEND_8_32(imm)) { + m_formatter.oneByteOp(OP_GROUP1_EvIb, GROUP1_OP_OR, addr); + m_formatter.immediate8(imm); + } else { + m_formatter.oneByteOp(OP_GROUP1_EvIz, GROUP1_OP_OR, addr); + m_formatter.immediate32(imm); + } + } #endif void subl_rr(RegisterID src, RegisterID dst) @@ -441,6 +535,11 @@ public: } #if PLATFORM(X86_64) + void subq_rr(RegisterID src, RegisterID dst) + { + m_formatter.oneByteOp64(OP_SUB_EvGv, src, dst); + } + void subq_ir(int imm, RegisterID dst) { if (CAN_SIGN_EXTEND_8_32(imm)) { @@ -634,6 +733,11 @@ public: m_formatter.oneByteOp64(OP_CMP_EvGv, src, base, offset); } + void cmpq_mr(int offset, RegisterID base, RegisterID src) + { + m_formatter.oneByteOp64(OP_CMP_GvEv, src, base, offset); + } + void cmpq_ir(int imm, RegisterID dst) { if (CAN_SIGN_EXTEND_8_32(imm)) { @@ -690,6 +794,19 @@ public: m_formatter.oneByteOp(OP_CMP_EvGv, src, base, index, scale, offset); } + void cmpw_im(int imm, int offset, RegisterID base, RegisterID index, int scale) + { + if (CAN_SIGN_EXTEND_8_32(imm)) { + m_formatter.prefix(PRE_OPERAND_SIZE); + m_formatter.oneByteOp(OP_GROUP1_EvIb, GROUP1_OP_CMP, base, index, scale, offset); + m_formatter.immediate8(imm); + } else { + m_formatter.prefix(PRE_OPERAND_SIZE); + m_formatter.oneByteOp(OP_GROUP1_EvIz, GROUP1_OP_CMP, base, index, scale, offset); + m_formatter.immediate16(imm); + } + } + void testl_rr(RegisterID src, RegisterID dst) { m_formatter.oneByteOp(OP_TEST_EvGv, src, dst); @@ -738,15 +855,26 @@ public: } #endif + void testw_rr(RegisterID src, RegisterID dst) + { + m_formatter.prefix(PRE_OPERAND_SIZE); + m_formatter.oneByteOp(OP_TEST_EvGv, src, dst); + } + void testb_i8r(int imm, RegisterID dst) { m_formatter.oneByteOp8(OP_GROUP3_EbIb, GROUP3_OP_TEST, dst); m_formatter.immediate8(imm); } + void setCC_r(Condition cond, RegisterID dst) + { + m_formatter.twoByteOp8(setccOpcode(cond), (GroupOpcodeID)0, dst); + } + void sete_r(RegisterID dst) { - m_formatter.twoByteOp8(OP_SETE, (GroupOpcodeID)0, dst); + m_formatter.twoByteOp8(setccOpcode(ConditionE), (GroupOpcodeID)0, dst); } void setz_r(RegisterID dst) @@ -756,7 +884,7 @@ public: void setne_r(RegisterID dst) { - m_formatter.twoByteOp8(OP_SETNE, (GroupOpcodeID)0, dst); + m_formatter.twoByteOp8(setccOpcode(ConditionNE), (GroupOpcodeID)0, dst); } void setnz_r(RegisterID dst) @@ -877,6 +1005,12 @@ public: m_formatter.immediate64(reinterpret_cast(addr)); } + void movq_EAXm(void* addr) + { + m_formatter.oneByteOp64(OP_MOV_OvEAX); + m_formatter.immediate64(reinterpret_cast(addr)); + } + void movq_mr(int offset, RegisterID base, RegisterID dst) { m_formatter.oneByteOp64(OP_MOV_GvEv, dst, base, offset); @@ -892,6 +1026,12 @@ public: m_formatter.oneByteOp64(OP_MOV_GvEv, dst, base, index, scale, offset); } + void movq_i32m(int imm, int offset, RegisterID base) + { + m_formatter.oneByteOp64(OP_GROUP11_EvIz, GROUP11_MOV, base, offset); + m_formatter.immediate32(imm); + } + void movq_i64r(int64_t imm, RegisterID dst) { m_formatter.oneByteOp64(OP_MOV_EAXIv, dst); @@ -905,6 +1045,14 @@ public: #else + void movl_rm(RegisterID src, void* addr) + { + if (src == X86::eax) + movl_EAXm(addr); + else + m_formatter.oneByteOp(OP_MOV_EvGv, src, addr); + } + void movl_mr(void* addr, RegisterID dst) { if (dst == X86::eax) @@ -942,6 +1090,12 @@ public: { m_formatter.oneByteOp(OP_LEA, dst, base, offset); } +#if PLATFORM(X86_64) + void leaq_mr(int offset, RegisterID base, RegisterID dst) + { + m_formatter.oneByteOp64(OP_LEA, dst, base, offset); + } +#endif // Flow control: @@ -956,6 +1110,11 @@ public: m_formatter.oneByteOp(OP_GROUP5_Ev, GROUP5_OP_CALLN, dst); return JmpSrc(m_formatter.size()); } + + void call_m(int offset, RegisterID base) + { + m_formatter.oneByteOp(OP_GROUP5_Ev, GROUP5_OP_CALLN, base, offset); + } JmpSrc jmp() { @@ -963,9 +1122,13 @@ public: return m_formatter.immediateRel32(); } - void jmp_r(RegisterID dst) + // Return a JmpSrc so we have a label to the jump, so we can use this + // To make a tail recursive call on x86-64. The MacroAssembler + // really shouldn't wrap this as a Jump, since it can't be linked. :-/ + JmpSrc jmp_r(RegisterID dst) { m_formatter.oneByteOp(OP_GROUP5_Ev, GROUP5_OP_JMPN, dst); + return JmpSrc(m_formatter.size()); } void jmp_m(int offset, RegisterID base) @@ -975,7 +1138,7 @@ public: JmpSrc jne() { - m_formatter.twoByteOp(OP2_JNE_rel32); + m_formatter.twoByteOp(jccRel32(ConditionNE)); return m_formatter.immediateRel32(); } @@ -986,73 +1149,79 @@ public: JmpSrc je() { - m_formatter.twoByteOp(OP2_JE_rel32); + m_formatter.twoByteOp(jccRel32(ConditionE)); return m_formatter.immediateRel32(); } JmpSrc jl() { - m_formatter.twoByteOp(OP2_JL_rel32); + m_formatter.twoByteOp(jccRel32(ConditionL)); return m_formatter.immediateRel32(); } JmpSrc jb() { - m_formatter.twoByteOp(OP2_JB_rel32); + m_formatter.twoByteOp(jccRel32(ConditionB)); return m_formatter.immediateRel32(); } JmpSrc jle() { - m_formatter.twoByteOp(OP2_JLE_rel32); + m_formatter.twoByteOp(jccRel32(ConditionLE)); return m_formatter.immediateRel32(); } JmpSrc jbe() { - m_formatter.twoByteOp(OP2_JBE_rel32); + m_formatter.twoByteOp(jccRel32(ConditionBE)); return m_formatter.immediateRel32(); } JmpSrc jge() { - m_formatter.twoByteOp(OP2_JGE_rel32); + m_formatter.twoByteOp(jccRel32(ConditionGE)); return m_formatter.immediateRel32(); } JmpSrc jg() { - m_formatter.twoByteOp(OP2_JG_rel32); + m_formatter.twoByteOp(jccRel32(ConditionG)); return m_formatter.immediateRel32(); } JmpSrc ja() { - m_formatter.twoByteOp(OP2_JA_rel32); + m_formatter.twoByteOp(jccRel32(ConditionA)); return m_formatter.immediateRel32(); } JmpSrc jae() { - m_formatter.twoByteOp(OP2_JAE_rel32); + m_formatter.twoByteOp(jccRel32(ConditionAE)); return m_formatter.immediateRel32(); } JmpSrc jo() { - m_formatter.twoByteOp(OP2_JO_rel32); + m_formatter.twoByteOp(jccRel32(ConditionO)); return m_formatter.immediateRel32(); } JmpSrc jp() { - m_formatter.twoByteOp(OP2_JP_rel32); + m_formatter.twoByteOp(jccRel32(ConditionP)); return m_formatter.immediateRel32(); } JmpSrc js() { - m_formatter.twoByteOp(OP2_JS_rel32); + m_formatter.twoByteOp(jccRel32(ConditionS)); + return m_formatter.immediateRel32(); + } + + JmpSrc jCC(Condition cond) + { + m_formatter.twoByteOp(jccRel32(cond)); return m_formatter.immediateRel32(); } @@ -1088,6 +1257,20 @@ public: m_formatter.twoByteOp(OP2_MOVD_EdVd, (RegisterID)src, dst); } +#if PLATFORM(X86_64) + void movq_rr(XMMRegisterID src, RegisterID dst) + { + m_formatter.prefix(PRE_SSE_66); + m_formatter.twoByteOp64(OP2_MOVD_EdVd, (RegisterID)src, dst); + } + + void movq_rr(RegisterID src, XMMRegisterID dst) + { + m_formatter.prefix(PRE_SSE_66); + m_formatter.twoByteOp64(OP2_MOVD_VdEd, (RegisterID)dst, src); + } +#endif + void movsd_rm(XMMRegisterID src, int offset, RegisterID base) { m_formatter.prefix(PRE_SSE_F2); @@ -1131,7 +1314,7 @@ public: m_formatter.twoByteOp(OP2_SUBSD_VsdWsd, (RegisterID)dst, base, offset); } - void ucomis_rr(XMMRegisterID src, XMMRegisterID dst) + void ucomisd_rr(XMMRegisterID src, XMMRegisterID dst) { m_formatter.prefix(PRE_SSE_66); m_formatter.twoByteOp(OP2_UCOMISD_VsdWsd, (RegisterID)dst, (RegisterID)src); @@ -1170,31 +1353,95 @@ public: } // 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 link(JmpSrc from, JmpDst to) + void linkJump(JmpSrc from, JmpDst to) { - ASSERT(to.m_offset != -1); ASSERT(from.m_offset != -1); - - reinterpret_cast(reinterpret_cast(m_formatter.data()) + from.m_offset)[-1] = to.m_offset - from.m_offset; + ASSERT(to.m_offset != -1); + + char* code = reinterpret_cast(m_formatter.data()); + patchRel32(code + from.m_offset, code + to.m_offset); } - static void patchAddress(void* code, JmpDst position, void* value) + static void linkJump(void* code, JmpSrc from, void* to) { - ASSERT(position.m_offset != -1); - - reinterpret_cast(reinterpret_cast(code) + position.m_offset)[-1] = value; + ASSERT(from.m_offset != -1); + + patchRel32(reinterpret_cast(code) + from.m_offset, to); } - - static void link(void* code, JmpSrc from, void* to) + + static void linkCall(void* code, JmpSrc from, void* to) { ASSERT(from.m_offset != -1); - - reinterpret_cast(reinterpret_cast(code) + from.m_offset)[-1] = reinterpret_cast(to) - (reinterpret_cast(code) + from.m_offset); + + patchRel32(reinterpret_cast(code) + from.m_offset, to); + } + +#if PLATFORM(X86_64) + static void patchPointerForCall(void* where, void* value) + { + reinterpret_cast(where)[-1] = value; + } +#endif + + static void patchPointer(void* code, JmpDst where, void* value) + { + ASSERT(where.m_offset != -1); + + patchPointer(reinterpret_cast(code) + where.m_offset, value); + } + + static void relinkJump(void* from, void* to) + { + ExecutableAllocator::MakeWritable unprotect(reinterpret_cast(from) - sizeof(int32_t), sizeof(int32_t)); + patchRel32(from, to); } + static void relinkCall(void* from, void* to) + { + ExecutableAllocator::MakeWritable unprotect(reinterpret_cast(from) - sizeof(int32_t), sizeof(int32_t)); + patchRel32(from, to); + } + + static void repatchInt32(void* where, int32_t value) + { + ExecutableAllocator::MakeWritable unprotect(reinterpret_cast(where) - sizeof(int32_t), sizeof(int32_t)); + patchInt32(where, value); + } + + static void repatchPointer(void* where, void* value) + { + ExecutableAllocator::MakeWritable unprotect(reinterpret_cast(where) - sizeof(void*), sizeof(void*)); + patchPointer(where, value); + } + + static void repatchLoadPtrToLEA(void* where) + { +#if PLATFORM(X86_64) + // On x86-64 pointer memory accesses require a 64-bit operand, and as such a REX prefix. + // Skip over the prefix byte. + where = reinterpret_cast(where) + 1; +#endif + ExecutableAllocator::MakeWritable unprotect(where, 1); + *reinterpret_cast(where) = static_cast(OP_LEA); + } + + static unsigned getCallReturnOffset(JmpSrc call) + { + ASSERT(call.m_offset >= 0); + return call.m_offset; + } + static void* getRelocatedAddress(void* code, JmpSrc jump) { + ASSERT(jump.m_offset != -1); + return reinterpret_cast(reinterpret_cast(code) + jump.m_offset); } @@ -1220,23 +1467,6 @@ public: return dst.m_offset - src.m_offset; } - static void patchImmediate(intptr_t where, int32_t value) - { - reinterpret_cast(where)[-1] = value; - } - - static void patchPointer(intptr_t where, intptr_t value) - { - reinterpret_cast(where)[-1] = value; - } - - static void patchBranchOffset(intptr_t where, void* destination) - { - intptr_t offset = reinterpret_cast(destination) - where; - ASSERT(offset == static_cast(offset)); - reinterpret_cast(where)[-1] = static_cast(offset); - } - void* executableCopy(ExecutablePool* allocator) { void* copy = m_formatter.executableCopy(allocator); @@ -1246,6 +1476,24 @@ public: private: + static void patchPointer(void* where, void* value) + { + reinterpret_cast(where)[-1] = value; + } + + static void patchInt32(void* where, int32_t value) + { + reinterpret_cast(where)[-1] = value; + } + + static void patchRel32(void* from, void* to) + { + intptr_t offset = reinterpret_cast(to) - reinterpret_cast(from); + ASSERT(offset == static_cast(offset)); + + patchInt32(from, offset); + } + class X86InstructionFormatter { static const int maxInstructionSize = 16; @@ -1415,6 +1663,15 @@ private: m_buffer.putByteUnchecked(opcode); memoryModRM(reg, base, index, scale, offset); } + + void twoByteOp64(TwoByteOpcodeID opcode, int reg, RegisterID rm) + { + m_buffer.ensureSpace(maxInstructionSize); + emitRexW(reg, 0, rm); + m_buffer.putByteUnchecked(OP_2BYTE_ESCAPE); + m_buffer.putByteUnchecked(opcode); + registerModRM(reg, rm); + } #endif // Byte-operands: @@ -1478,6 +1735,11 @@ private: m_buffer.putByteUnchecked(imm); } + void immediate16(int imm) + { + m_buffer.putShortUnchecked(imm); + } + void immediate32(int imm) { m_buffer.putIntUnchecked(imm); @@ -1572,13 +1834,8 @@ private: { ASSERT(mode != ModRmRegister); - // Encode sacle of (1,2,4,8) -> (0,1,2,3) - int shift = 0; - while (scale >>= 1) - shift++; - putModRm(mode, reg, hasSib); - m_buffer.putByteUnchecked((shift << 6) | ((index & 7) << 3) | (base & 7)); + m_buffer.putByteUnchecked((scale << 6) | ((index & 7) << 3) | (base & 7)); } void registerModRM(int reg, RegisterID rm) diff --git a/src/3rdparty/webkit/JavaScriptCore/bytecode/CodeBlock.cpp b/src/3rdparty/webkit/JavaScriptCore/bytecode/CodeBlock.cpp index 9207c8a..d2b122a 100644 --- a/src/3rdparty/webkit/JavaScriptCore/bytecode/CodeBlock.cpp +++ b/src/3rdparty/webkit/JavaScriptCore/bytecode/CodeBlock.cpp @@ -55,15 +55,15 @@ static UString escapeQuotes(const UString& str) return result; } -static UString valueToSourceString(ExecState* exec, JSValuePtr val) +static UString valueToSourceString(ExecState* exec, JSValue val) { - if (val->isString()) { + if (val.isString()) { UString result("\""); - result += escapeQuotes(val->toString(exec)) + "\""; + result += escapeQuotes(val.toString(exec)) + "\""; return result; } - return val->toString(exec); + return val.toString(exec); } static CString registerName(int r) @@ -74,7 +74,7 @@ static CString registerName(int r) return (UString("r") + UString::from(r)).UTF8String(); } -static CString constantName(ExecState* exec, int k, JSValuePtr value) +static CString constantName(ExecState* exec, int k, JSValue value) { return (valueToSourceString(exec, value) + "(@k" + UString::from(k) + ")").UTF8String(); } @@ -357,7 +357,7 @@ void CodeBlock::dump(ExecState* exec) const unsigned registerIndex = m_numVars; size_t i = 0; do { - printf(" r%u = %s\n", registerIndex, valueToSourceString(exec, m_constantRegisters[i].jsValue(exec)).ascii()); + printf(" r%u = %s\n", registerIndex, valueToSourceString(exec, m_constantRegisters[i].jsValue()).ascii()); ++i; ++registerIndex; } while (i < m_constantRegisters.size()); @@ -497,6 +497,10 @@ void CodeBlock::dump(ExecState* exec, const Vector::const_iterator& printf("[%4d] create_arguments\n", location); break; } + case op_init_arguments: { + printf("[%4d] init_arguments\n", location); + break; + } case op_convert_this: { int r0 = (++it)->u.operand; printf("[%4d] convert_this %s\n", location, registerName(r0).c_str()); @@ -703,7 +707,7 @@ void CodeBlock::dump(ExecState* exec, const Vector::const_iterator& } case op_resolve_global: { int r0 = (++it)->u.operand; - JSValuePtr scope = JSValuePtr((++it)->u.jsCell); + JSValue scope = JSValue((++it)->u.jsCell); int id0 = (++it)->u.operand; printf("[%4d] resolve_global\t %s, %s, %s\n", location, registerName(r0).c_str(), valueToSourceString(exec, scope).ascii(), idName(id0, m_identifiers[id0]).c_str()); it += 2; @@ -724,15 +728,14 @@ void CodeBlock::dump(ExecState* exec, const Vector::const_iterator& break; } case op_get_global_var: { - int r0 = it[1].u.operand; - JSValuePtr scope = JSValuePtr(it[2].u.jsCell); - int index = it[3].u.operand; + 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(r0).c_str(), valueToSourceString(exec, scope).ascii(), index); - it += OPCODE_LENGTH(op_get_global_var); break; } case op_put_global_var: { - JSValuePtr scope = JSValuePtr((++it)->u.jsCell); + 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(r0).c_str()); @@ -824,6 +827,10 @@ void CodeBlock::dump(ExecState* exec, const Vector::const_iterator& printf("[%4d] put_setter\t %s, %s, %s\n", location, registerName(r0).c_str(), idName(id0, m_identifiers[id0]).c_str(), registerName(r1).c_str()); break; } + case op_method_check: { + printf("[%4d] op_method_check\n", location); + break; + } case op_del_by_id: { int r0 = (++it)->u.operand; int r1 = (++it)->u.operand; @@ -889,6 +896,13 @@ void CodeBlock::dump(ExecState* exec, const Vector::const_iterator& printConditionalJump(begin, it, location, "jneq_null"); break; } + case op_jneq_ptr: { + 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(r0).c_str(), registerName(r1).c_str(), offset, locationForOffset(begin, it, offset)); + break; + } case op_jnless: { int r0 = (++it)->u.operand; int r1 = (++it)->u.operand; @@ -896,6 +910,13 @@ void CodeBlock::dump(ExecState* exec, const Vector::const_iterator& printf("[%4d] jnless\t\t %s, %s, %d(->%d)\n", location, registerName(r0).c_str(), registerName(r1).c_str(), offset, locationForOffset(begin, it, 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(r0).c_str(), registerName(r1).c_str(), offset, locationForOffset(begin, it, offset)); + break; + } case op_loop_if_less: { int r0 = (++it)->u.operand; int r1 = (++it)->u.operand; @@ -959,6 +980,18 @@ void CodeBlock::dump(ExecState* exec, const Vector::const_iterator& printf("[%4d] call_eval\t %s, %s, %d, %d\n", location, registerName(dst).c_str(), registerName(func).c_str(), argCount, registerOffset); break; } + case op_call_varargs: { + int dst = (++it)->u.operand; + 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(dst).c_str(), registerName(func).c_str(), registerName(argCount).c_str(), registerOffset); + break; + } + case op_load_varargs: { + printUnaryOp(location, it, "load_varargs"); + break; + } case op_tear_off_activation: { int r0 = (++it)->u.operand; printf("[%4d] tear_off_activation\t %s\n", location, registerName(r0).c_str()); @@ -989,6 +1022,19 @@ void CodeBlock::dump(ExecState* exec, const Vector::const_iterator& printf("[%4d] construct_verify\t %s, %s\n", location, registerName(r0).c_str(), registerName(r1).c_str()); break; } + case op_strcat: { + int r0 = (++it)->u.operand; + int r1 = (++it)->u.operand; + int count = (++it)->u.operand; + printf("[%4d] op_strcat\t %s, %s, %d\n", location, registerName(r0).c_str(), registerName(r1).c_str(), count); + break; + } + case op_to_primitive: { + int r0 = (++it)->u.operand; + int r1 = (++it)->u.operand; + printf("[%4d] op_to_primitive\t %s, %s\n", location, registerName(r0).c_str(), registerName(r1).c_str()); + break; + } case op_get_pnames: { int r0 = (++it)->u.operand; int r1 = (++it)->u.operand; @@ -1091,8 +1137,7 @@ static HashSet liveCodeBlockSet; macro(linkedCallerList) \ macro(identifiers) \ macro(functionExpressions) \ - macro(constantRegisters) \ - macro(pcVector) + macro(constantRegisters) #define FOR_EACH_MEMBER_VECTOR_RARE_DATA(macro) \ macro(regexps) \ @@ -1107,7 +1152,8 @@ static HashSet liveCodeBlockSet; #define FOR_EACH_MEMBER_VECTOR_EXCEPTION_INFO(macro) \ macro(expressionInfo) \ macro(lineInfo) \ - macro(getByIdExceptionInfo) + macro(getByIdExceptionInfo) \ + macro(pcVector) template static size_t sizeInBytes(const Vector& vector) @@ -1232,6 +1278,7 @@ CodeBlock::CodeBlock(ScopeNode* ownerNode, CodeType codeType, PassRefPtrneedsActivation()) , m_usesEval(ownerNode->usesEval()) + , m_isNumericCompareFunction(false) , m_codeType(codeType) , m_source(sourceProvider) , m_sourceOffset(sourceOffset) @@ -1267,6 +1314,11 @@ CodeBlock::~CodeBlock() callLinkInfo->callee->removeCaller(callLinkInfo); } + for (size_t size = m_methodCallLinkInfos.size(), i = 0; i < size; ++i) { + if (Structure* structure = m_methodCallLinkInfos[i].cachedStructure) + structure->deref(); + } + unlinkCallers(); #endif @@ -1380,9 +1432,10 @@ void CodeBlock::mark() m_rareData->m_functions[i]->body()->mark(); for (size_t i = 0; i < m_rareData->m_unexpectedConstants.size(); ++i) { - if (!m_rareData->m_unexpectedConstants[i]->marked()) - m_rareData->m_unexpectedConstants[i]->mark(); + if (!m_rareData->m_unexpectedConstants[i].marked()) + m_rareData->m_unexpectedConstants[i].mark(); } + m_rareData->m_evalCodeCache.mark(); } } @@ -1392,6 +1445,17 @@ void CodeBlock::reparseForExceptionInfoIfNecessary(CallFrame* callFrame) return; ScopeChainNode* scopeChain = callFrame->scopeChain(); + if (m_needsFullScopeChain) { + ScopeChain sc(scopeChain); + int scopeDelta = sc.localDepth(); + if (m_codeType == EvalCode) + scopeDelta -= static_cast(this)->baseScopeDepth(); + else if (m_codeType == FunctionCode) + scopeDelta++; // Compilation of function code assumes activation is not on the scope chain yet. + ASSERT(scopeDelta >= 0); + while (scopeDelta--) + scopeChain = scopeChain->next; + } switch (m_codeType) { case FunctionCode: { @@ -1399,19 +1463,43 @@ void CodeBlock::reparseForExceptionInfoIfNecessary(CallFrame* callFrame) RefPtr newFunctionBody = m_globalData->parser->reparse(m_globalData, ownerFunctionBodyNode); ASSERT(newFunctionBody); newFunctionBody->finishParsing(ownerFunctionBodyNode->copyParameters(), ownerFunctionBodyNode->parameterCount()); - CodeBlock& newCodeBlock = newFunctionBody->bytecodeForExceptionInfoReparse(scopeChain); + + m_globalData->scopeNodeBeingReparsed = newFunctionBody.get(); + + CodeBlock& newCodeBlock = newFunctionBody->bytecodeForExceptionInfoReparse(scopeChain, this); ASSERT(newCodeBlock.m_exceptionInfo); ASSERT(newCodeBlock.m_instructionCount == m_instructionCount); + +#if ENABLE(JIT) + JIT::compile(m_globalData, &newCodeBlock); + ASSERT(newFunctionBody->generatedJITCode().size() == ownerNode()->generatedJITCode().size()); +#endif + m_exceptionInfo.set(newCodeBlock.m_exceptionInfo.release()); + + m_globalData->scopeNodeBeingReparsed = 0; + break; } case EvalCode: { EvalNode* ownerEvalNode = static_cast(m_ownerNode); RefPtr newEvalBody = m_globalData->parser->reparse(m_globalData, ownerEvalNode); - EvalCodeBlock& newCodeBlock = newEvalBody->bytecodeForExceptionInfoReparse(scopeChain); + + m_globalData->scopeNodeBeingReparsed = newEvalBody.get(); + + EvalCodeBlock& newCodeBlock = newEvalBody->bytecodeForExceptionInfoReparse(scopeChain, this); ASSERT(newCodeBlock.m_exceptionInfo); ASSERT(newCodeBlock.m_instructionCount == m_instructionCount); + +#if ENABLE(JIT) + JIT::compile(m_globalData, &newCodeBlock); + ASSERT(newEvalBody->generatedJITCode().size() == ownerNode()->generatedJITCode().size()); +#endif + m_exceptionInfo.set(newCodeBlock.m_exceptionInfo.release()); + + m_globalData->scopeNodeBeingReparsed = 0; + break; } default: @@ -1554,10 +1642,54 @@ bool CodeBlock::functionRegisterForBytecodeOffset(unsigned bytecodeOffset, int& functionRegisterIndex = m_rareData->m_functionRegisterInfos[low - 1].functionRegisterIndex; return true; } +#endif + +#if !ENABLE(JIT) +bool CodeBlock::hasGlobalResolveInstructionAtBytecodeOffset(unsigned bytecodeOffset) +{ + if (m_globalResolveInstructions.isEmpty()) + return false; + + int low = 0; + int high = m_globalResolveInstructions.size(); + while (low < high) { + int mid = low + (high - low) / 2; + if (m_globalResolveInstructions[mid] <= bytecodeOffset) + low = mid + 1; + else + high = mid; + } -void CodeBlock::setJITCode(JITCodeRef& jitCode) + if (!low || m_globalResolveInstructions[low - 1] != bytecodeOffset) + return false; + return true; +} +#else +bool CodeBlock::hasGlobalResolveInfoAtBytecodeOffset(unsigned bytecodeOffset) +{ + if (m_globalResolveInfos.isEmpty()) + return false; + + int low = 0; + int high = m_globalResolveInfos.size(); + while (low < high) { + int mid = low + (high - low) / 2; + if (m_globalResolveInfos[mid].bytecodeOffset <= bytecodeOffset) + low = mid + 1; + else + high = mid; + } + + if (!low || m_globalResolveInfos[low - 1].bytecodeOffset != bytecodeOffset) + return false; + return true; +} +#endif + +#if ENABLE(JIT) +void CodeBlock::setJITCode(JITCode jitCode) { - m_jitCode = jitCode; + ownerNode()->setJITCode(jitCode); #if !ENABLE(OPCODE_SAMPLING) if (!BytecodeGenerator::dumpsGeneratedCode()) m_instructions.clear(); diff --git a/src/3rdparty/webkit/JavaScriptCore/bytecode/CodeBlock.h b/src/3rdparty/webkit/JavaScriptCore/bytecode/CodeBlock.h index 517bd27..ac29c6c 100644 --- a/src/3rdparty/webkit/JavaScriptCore/bytecode/CodeBlock.h +++ b/src/3rdparty/webkit/JavaScriptCore/bytecode/CodeBlock.h @@ -32,6 +32,7 @@ #include "EvalCodeCache.h" #include "Instruction.h" +#include "JITCode.h" #include "JSGlobalObject.h" #include "JumpTable.h" #include "Nodes.h" @@ -58,29 +59,10 @@ namespace JSC { uint32_t target; uint32_t scopeDepth; #if ENABLE(JIT) - void* nativeCode; + MacroAssembler::CodeLocationLabel nativeCode; #endif }; -#if ENABLE(JIT) - // The code, and the associated pool from which it was allocated. - struct JITCodeRef { - void* code; - RefPtr executablePool; - - JITCodeRef() - : code(0) - { - } - - JITCodeRef(void* code, PassRefPtr executablePool) - : code(code) - , executablePool(executablePool) - { - } - }; -#endif - struct ExpressionRangeInfo { enum { MaxOffset = (1 << 7) - 1, @@ -108,19 +90,15 @@ namespace JSC { #if ENABLE(JIT) struct CallLinkInfo { CallLinkInfo() - : callReturnLocation(0) - , hotPathBegin(0) - , hotPathOther(0) - , coldPathOther(0) - , callee(0) + : callee(0) { } unsigned bytecodeIndex; - void* callReturnLocation; - void* hotPathBegin; - void* hotPathOther; - void* coldPathOther; + MacroAssembler::CodeLocationNearCall callReturnLocation; + MacroAssembler::CodeLocationDataLabelPtr hotPathBegin; + MacroAssembler::CodeLocationNearCall hotPathOther; + MacroAssembler::CodeLocationLabel coldPathOther; CodeBlock* callee; unsigned position; @@ -128,6 +106,17 @@ namespace JSC { bool isLinked() { return callee; } }; + struct MethodCallLinkInfo { + MethodCallLinkInfo() + : cachedStructure(0) + { + } + + MacroAssembler::CodeLocationCall callReturnLocation; + MacroAssembler::CodeLocationDataLabelPtr structureLabel; + Structure* cachedStructure; + }; + struct FunctionRegisterInfo { FunctionRegisterInfo(unsigned bytecodeOffset, int functionRegisterIndex) : bytecodeOffset(bytecodeOffset) @@ -140,24 +129,30 @@ namespace JSC { }; struct GlobalResolveInfo { - GlobalResolveInfo() + GlobalResolveInfo(unsigned bytecodeOffset) : structure(0) , offset(0) + , bytecodeOffset(bytecodeOffset) { } Structure* structure; unsigned offset; + unsigned bytecodeOffset; }; - struct PC { - PC(ptrdiff_t nativePCOffset, unsigned bytecodeIndex) - : nativePCOffset(nativePCOffset) + // This structure is used to map from a call return location + // (given as an offset in bytes into the JIT code) back to + // the bytecode index of the corresponding bytecode operation. + // This is then used to look up the corresponding handler. + struct CallReturnOffsetToBytecodeIndex { + CallReturnOffsetToBytecodeIndex(unsigned callReturnOffset, unsigned bytecodeIndex) + : callReturnOffset(callReturnOffset) , bytecodeIndex(bytecodeIndex) { } - ptrdiff_t nativePCOffset; + unsigned callReturnOffset; unsigned bytecodeIndex; }; @@ -165,17 +160,22 @@ namespace JSC { inline void* getStructureStubInfoReturnLocation(StructureStubInfo* structureStubInfo) { - return structureStubInfo->callReturnLocation; + return structureStubInfo->callReturnLocation.calleeReturnAddressValue(); } inline void* getCallLinkInfoReturnLocation(CallLinkInfo* callLinkInfo) { - return callLinkInfo->callReturnLocation; + return callLinkInfo->callReturnLocation.calleeReturnAddressValue(); + } + + inline void* getMethodCallLinkInfoReturnLocation(MethodCallLinkInfo* methodCallLinkInfo) + { + return methodCallLinkInfo->callReturnLocation.calleeReturnAddressValue(); } - inline ptrdiff_t getNativePCOffset(PC* pc) + inline unsigned getCallReturnOffset(CallReturnOffsetToBytecodeIndex* pc) { - return pc->nativePCOffset; + return pc->callReturnOffset; } // Binary chop algorithm, calls valueAtPosition on pre-sorted elements in array, @@ -242,7 +242,7 @@ namespace JSC { return true; if (isConstantRegisterIndex(index)) - return !JSImmediate::isImmediate(getConstant(index)); + return getConstant(index).isCell(); return false; } @@ -252,9 +252,9 @@ namespace JSC { return index >= m_numVars && index < m_numVars + m_numConstants; } - ALWAYS_INLINE JSValuePtr getConstant(int index) + ALWAYS_INLINE JSValue getConstant(int index) { - return m_constantRegisters[index - m_numVars].getJSValue(); + return m_constantRegisters[index - m_numVars].jsValue(); } ALWAYS_INLINE bool isTemporaryRegisterIndex(int index) @@ -297,24 +297,31 @@ namespace JSC { return *(binaryChop(m_callLinkInfos.begin(), m_callLinkInfos.size(), returnAddress)); } - unsigned getBytecodeIndex(void* nativePC) + MethodCallLinkInfo& getMethodCallLinkInfo(void* returnAddress) { - ptrdiff_t nativePCOffset = reinterpret_cast(nativePC) - reinterpret_cast(m_jitCode.code); - return binaryChop(m_pcVector.begin(), m_pcVector.size(), nativePCOffset)->bytecodeIndex; + return *(binaryChop(m_methodCallLinkInfos.begin(), m_methodCallLinkInfos.size(), returnAddress)); } + unsigned getBytecodeIndex(CallFrame* callFrame, void* nativePC) + { + reparseForExceptionInfoIfNecessary(callFrame); + return binaryChop(m_exceptionInfo->m_callReturnIndexVector.begin(), m_exceptionInfo->m_callReturnIndexVector.size(), ownerNode()->generatedJITCode().offsetOf(nativePC))->bytecodeIndex; + } + bool functionRegisterForBytecodeOffset(unsigned bytecodeOffset, int& functionRegisterIndex); #endif + void setIsNumericCompareFunction(bool isNumericCompareFunction) { m_isNumericCompareFunction = isNumericCompareFunction; } + bool isNumericCompareFunction() { return m_isNumericCompareFunction; } + Vector& instructions() { return m_instructions; } #ifndef NDEBUG void setInstructionCount(unsigned instructionCount) { m_instructionCount = instructionCount; } #endif #if ENABLE(JIT) - void setJITCode(JITCodeRef& jitCode); - void* jitCode() { return m_jitCode.code; } - ExecutablePool* executablePool() { return m_jitCode.executablePool.get(); } + void setJITCode(JITCode); + ExecutablePool* executablePool() { return ownerNode()->getExecutablePool(); } #endif ScopeNode* ownerNode() const { return m_ownerNode; } @@ -343,22 +350,25 @@ namespace JSC { #if !ENABLE(JIT) void addPropertyAccessInstruction(unsigned propertyAccessInstruction) { m_propertyAccessInstructions.append(propertyAccessInstruction); } - void addGlobalResolveInstruction(unsigned globalResolveInstructions) { m_globalResolveInstructions.append(globalResolveInstructions); } + void addGlobalResolveInstruction(unsigned globalResolveInstruction) { m_globalResolveInstructions.append(globalResolveInstruction); } + bool hasGlobalResolveInstructionAtBytecodeOffset(unsigned bytecodeOffset); #else 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]; } - void addGlobalResolveInfo() { m_globalResolveInfos.append(GlobalResolveInfo()); } + void addGlobalResolveInfo(unsigned globalResolveInstruction) { m_globalResolveInfos.append(GlobalResolveInfo(globalResolveInstruction)); } GlobalResolveInfo& globalResolveInfo(int index) { return m_globalResolveInfos[index]; } + bool hasGlobalResolveInfoAtBytecodeOffset(unsigned bytecodeOffset); size_t numberOfCallLinkInfos() const { return m_callLinkInfos.size(); } void addCallLinkInfo() { m_callLinkInfos.append(CallLinkInfo()); } CallLinkInfo& callLinkInfo(int index) { return m_callLinkInfos[index]; } - void addFunctionRegisterInfo(unsigned bytecodeOffset, int functionIndex) { createRareDataIfNecessary(); m_rareData->m_functionRegisterInfos.append(FunctionRegisterInfo(bytecodeOffset, functionIndex)); } + void addMethodCallLinkInfos(unsigned n) { m_methodCallLinkInfos.grow(n); } + MethodCallLinkInfo& methodCallLinkInfo(int index) { return m_methodCallLinkInfos[index]; } - Vector& pcVector() { return m_pcVector; } + void addFunctionRegisterInfo(unsigned bytecodeOffset, int functionIndex) { createRareDataIfNecessary(); m_rareData->m_functionRegisterInfos.append(FunctionRegisterInfo(bytecodeOffset, functionIndex)); } #endif // Exception handling support @@ -367,6 +377,7 @@ namespace JSC { void addExceptionHandler(const HandlerInfo& hanler) { createRareDataIfNecessary(); return m_rareData->m_exceptionHandlers.append(hanler); } HandlerInfo& exceptionHandler(int index) { ASSERT(m_rareData); return m_rareData->m_exceptionHandlers[index]; } + bool hasExceptionInfo() const { return m_exceptionInfo; } void clearExceptionInfo() { m_exceptionInfo.clear(); } void addExpressionInfo(const ExpressionRangeInfo& expressionInfo) { ASSERT(m_exceptionInfo); m_exceptionInfo->m_expressionInfo.append(expressionInfo); } @@ -376,6 +387,10 @@ namespace JSC { void addLineInfo(const LineInfo& lineInfo) { ASSERT(m_exceptionInfo); m_exceptionInfo->m_lineInfo.append(lineInfo); } LineInfo& lastLineInfo() { ASSERT(m_exceptionInfo); return m_exceptionInfo->m_lineInfo.last(); } +#if ENABLE(JIT) + Vector& callReturnIndexVector() { ASSERT(m_exceptionInfo); return m_exceptionInfo->m_callReturnIndexVector; } +#endif + // Constant Pool size_t numberOfIdentifiers() const { return m_identifiers.size(); } @@ -392,8 +407,10 @@ namespace JSC { unsigned addFunction(FuncDeclNode* n) { createRareDataIfNecessary(); unsigned size = m_rareData->m_functions.size(); m_rareData->m_functions.append(n); return size; } FuncDeclNode* function(int index) const { ASSERT(m_rareData); return m_rareData->m_functions[index].get(); } - unsigned addUnexpectedConstant(JSValuePtr v) { createRareDataIfNecessary(); unsigned size = m_rareData->m_unexpectedConstants.size(); m_rareData->m_unexpectedConstants.append(v); return size; } - JSValuePtr unexpectedConstant(int index) const { ASSERT(m_rareData); return m_rareData->m_unexpectedConstants[index]; } + bool hasFunctions() const { return m_functionExpressions.size() || (m_rareData && m_rareData->m_functions.size()); } + + unsigned addUnexpectedConstant(JSValue v) { createRareDataIfNecessary(); unsigned size = m_rareData->m_unexpectedConstants.size(); m_rareData->m_unexpectedConstants.append(v); return size; } + JSValue unexpectedConstant(int index) const { ASSERT(m_rareData); return m_rareData->m_unexpectedConstants[index]; } unsigned addRegExp(RegExp* r) { createRareDataIfNecessary(); unsigned size = m_rareData->m_regexps.size(); m_rareData->m_regexps.append(r); return size; } RegExp* regexp(int index) const { ASSERT(m_rareData); return m_rareData->m_regexps[index].get(); } @@ -451,15 +468,13 @@ namespace JSC { #ifndef NDEBUG unsigned m_instructionCount; #endif -#if ENABLE(JIT) - JITCodeRef m_jitCode; -#endif int m_thisRegister; bool m_needsFullScopeChain; bool m_usesEval; bool m_usesArguments; + bool m_isNumericCompareFunction; CodeType m_codeType; @@ -473,9 +488,8 @@ namespace JSC { Vector m_structureStubInfos; Vector m_globalResolveInfos; Vector m_callLinkInfos; + Vector m_methodCallLinkInfos; Vector m_linkedCallerList; - - Vector m_pcVector; #endif Vector m_jumpTargets; @@ -491,6 +505,10 @@ namespace JSC { Vector m_expressionInfo; Vector m_lineInfo; Vector m_getByIdExceptionInfo; + +#if ENABLE(JIT) + Vector m_callReturnIndexVector; +#endif }; OwnPtr m_exceptionInfo; @@ -499,7 +517,7 @@ namespace JSC { // Rare Constants Vector > m_functions; - Vector m_unexpectedConstants; + Vector m_unexpectedConstants; Vector > m_regexps; // Jump Tables @@ -542,10 +560,16 @@ namespace JSC { class EvalCodeBlock : public ProgramCodeBlock { public: - EvalCodeBlock(ScopeNode* ownerNode, JSGlobalObject* globalObject, PassRefPtr sourceProvider) + EvalCodeBlock(ScopeNode* ownerNode, JSGlobalObject* globalObject, PassRefPtr sourceProvider, int baseScopeDepth) : ProgramCodeBlock(ownerNode, EvalCode, globalObject, sourceProvider) + , m_baseScopeDepth(baseScopeDepth) { } + + int baseScopeDepth() const { return m_baseScopeDepth; } + + private: + int m_baseScopeDepth; }; } // namespace JSC diff --git a/src/3rdparty/webkit/JavaScriptCore/bytecode/EvalCodeCache.h b/src/3rdparty/webkit/JavaScriptCore/bytecode/EvalCodeCache.h index 29be295..f0ce73e 100644 --- a/src/3rdparty/webkit/JavaScriptCore/bytecode/EvalCodeCache.h +++ b/src/3rdparty/webkit/JavaScriptCore/bytecode/EvalCodeCache.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2008 Apple Inc. All rights reserved. + * Copyright (C) 2008, 2009 Apple Inc. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -41,7 +41,7 @@ namespace JSC { class EvalCodeCache { public: - PassRefPtr get(ExecState* exec, const UString& evalSource, ScopeChainNode* scopeChain, JSValuePtr& exceptionValue) + PassRefPtr get(ExecState* exec, const UString& evalSource, ScopeChainNode* scopeChain, JSValue& exceptionValue) { RefPtr evalNode; @@ -68,11 +68,18 @@ namespace JSC { bool isEmpty() const { return m_cacheMap.isEmpty(); } + void mark() + { + EvalCacheMap::iterator end = m_cacheMap.end(); + for (EvalCacheMap::iterator ptr = m_cacheMap.begin(); ptr != end; ++ptr) + ptr->second->mark(); + } private: static const int maxCacheableSourceLength = 256; static const int maxCacheEntries = 64; - HashMap, RefPtr > m_cacheMap; + typedef HashMap, RefPtr > EvalCacheMap; + EvalCacheMap m_cacheMap; }; } // namespace JSC diff --git a/src/3rdparty/webkit/JavaScriptCore/bytecode/Instruction.h b/src/3rdparty/webkit/JavaScriptCore/bytecode/Instruction.h index 81a7fa0..24ba490 100644 --- a/src/3rdparty/webkit/JavaScriptCore/bytecode/Instruction.h +++ b/src/3rdparty/webkit/JavaScriptCore/bytecode/Instruction.h @@ -29,14 +29,25 @@ #ifndef Instruction_h #define Instruction_h +#include "MacroAssembler.h" #include "Opcode.h" #include "Structure.h" #include -#define POLYMORPHIC_LIST_CACHE_SIZE 4 +#define POLYMORPHIC_LIST_CACHE_SIZE 8 namespace JSC { + // *Sigh*, If the JIT is enabled we need to track the stubRountine (of type MacroAssembler::CodeLocationLabel), + // If the JIT is not in use we don't actually need the variable (that said, if the JIT is not in use we don't + // curently actually use PolymorphicAccessStructureLists, which we should). Anyway, this seems like the best + // solution for now - will need to something smarter if/when we actually want mixed-mode operation. +#if ENABLE(JIT) + typedef MacroAssembler::CodeLocationLabel PolymorphicAccessStructureListStubRoutineType; +#else + typedef void* PolymorphicAccessStructureListStubRoutineType; +#endif + class JSCell; class Structure; class StructureChain; @@ -45,14 +56,14 @@ namespace JSC { struct PolymorphicAccessStructureList { struct PolymorphicStubInfo { bool isChain; - void* stubRoutine; + PolymorphicAccessStructureListStubRoutineType stubRoutine; Structure* base; union { Structure* proto; StructureChain* chain; } u; - void set(void* _stubRoutine, Structure* _base) + void set(PolymorphicAccessStructureListStubRoutineType _stubRoutine, Structure* _base) { stubRoutine = _stubRoutine; base = _base; @@ -60,7 +71,7 @@ namespace JSC { isChain = false; } - void set(void* _stubRoutine, Structure* _base, Structure* _proto) + void set(PolymorphicAccessStructureListStubRoutineType _stubRoutine, Structure* _base, Structure* _proto) { stubRoutine = _stubRoutine; base = _base; @@ -68,7 +79,7 @@ namespace JSC { isChain = false; } - void set(void* _stubRoutine, Structure* _base, StructureChain* _chain) + void set(PolymorphicAccessStructureListStubRoutineType _stubRoutine, Structure* _base, StructureChain* _chain) { stubRoutine = _stubRoutine; base = _base; @@ -77,17 +88,17 @@ namespace JSC { } } list[POLYMORPHIC_LIST_CACHE_SIZE]; - PolymorphicAccessStructureList(void* stubRoutine, Structure* firstBase) + PolymorphicAccessStructureList(PolymorphicAccessStructureListStubRoutineType stubRoutine, Structure* firstBase) { list[0].set(stubRoutine, firstBase); } - PolymorphicAccessStructureList(void* stubRoutine, Structure* firstBase, Structure* firstProto) + PolymorphicAccessStructureList(PolymorphicAccessStructureListStubRoutineType stubRoutine, Structure* firstBase, Structure* firstProto) { list[0].set(stubRoutine, firstBase, firstProto); } - PolymorphicAccessStructureList(void* stubRoutine, Structure* firstBase, StructureChain* firstChain) + PolymorphicAccessStructureList(PolymorphicAccessStructureListStubRoutineType stubRoutine, Structure* firstBase, StructureChain* firstChain) { list[0].set(stubRoutine, firstBase, firstChain); } @@ -111,11 +122,20 @@ namespace JSC { }; struct Instruction { - Instruction(Opcode opcode) { u.opcode = opcode; } + Instruction(Opcode opcode) + { +#if !HAVE(COMPUTED_GOTO) + // 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; +#endif + u.opcode = opcode; + } + Instruction(int operand) { // We have to initialize one of the pointer members to ensure that - // the entire struct is initialised in 64-bit. + // the entire struct is initialized in 64-bit. u.jsCell = 0; u.operand = operand; } diff --git a/src/3rdparty/webkit/JavaScriptCore/bytecode/JumpTable.h b/src/3rdparty/webkit/JavaScriptCore/bytecode/JumpTable.h index 44e224d..eee773c 100644 --- a/src/3rdparty/webkit/JavaScriptCore/bytecode/JumpTable.h +++ b/src/3rdparty/webkit/JavaScriptCore/bytecode/JumpTable.h @@ -30,6 +30,7 @@ #ifndef JumpTable_h #define JumpTable_h +#include "MacroAssembler.h" #include "UString.h" #include #include @@ -39,7 +40,7 @@ namespace JSC { struct OffsetLocation { int32_t branchOffset; #if ENABLE(JIT) - void* ctiOffset; + MacroAssembler::CodeLocationLabel ctiOffset; #endif }; @@ -47,7 +48,7 @@ namespace JSC { typedef HashMap, OffsetLocation> StringOffsetTable; StringOffsetTable offsetTable; #if ENABLE(JIT) - void* ctiDefault; // FIXME: it should not be necessary to store this. + MacroAssembler::CodeLocationLabel ctiDefault; // FIXME: it should not be necessary to store this. #endif inline int32_t offsetForValue(UString::Rep* value, int32_t defaultOffset) @@ -60,7 +61,7 @@ namespace JSC { } #if ENABLE(JIT) - inline void* ctiForValue(UString::Rep* value) + inline MacroAssembler::CodeLocationLabel ctiForValue(UString::Rep* value) { StringOffsetTable::const_iterator end = offsetTable.end(); StringOffsetTable::const_iterator loc = offsetTable.find(value); @@ -76,8 +77,8 @@ namespace JSC { Vector branchOffsets; int32_t min; #if ENABLE(JIT) - Vector ctiOffsets; - void* ctiDefault; + Vector ctiOffsets; + MacroAssembler::CodeLocationLabel ctiDefault; #endif int32_t offsetForValue(int32_t value, int32_t defaultOffset); @@ -88,7 +89,7 @@ namespace JSC { } #if ENABLE(JIT) - inline void* ctiForValue(int32_t value) + inline MacroAssembler::CodeLocationLabel ctiForValue(int32_t value) { if (value >= min && static_cast(value - min) < ctiOffsets.size()) return ctiOffsets[value - min]; diff --git a/src/3rdparty/webkit/JavaScriptCore/bytecode/Opcode.h b/src/3rdparty/webkit/JavaScriptCore/bytecode/Opcode.h index e9c8f78..f4421df 100644 --- a/src/3rdparty/webkit/JavaScriptCore/bytecode/Opcode.h +++ b/src/3rdparty/webkit/JavaScriptCore/bytecode/Opcode.h @@ -40,6 +40,7 @@ namespace JSC { #define FOR_EACH_OPCODE_ID(macro) \ macro(op_enter, 1) \ macro(op_enter_with_activation, 2) \ + macro(op_init_arguments, 1) \ macro(op_create_arguments, 1) \ macro(op_convert_this, 2) \ \ @@ -94,7 +95,7 @@ namespace JSC { macro(op_resolve_global, 6) \ macro(op_get_scoped_var, 4) \ macro(op_put_scoped_var, 4) \ - macro(op_get_global_var, 6) \ + macro(op_get_global_var, 4) \ macro(op_put_global_var, 4) \ macro(op_resolve_base, 3) \ macro(op_resolve_with_base, 4) \ @@ -125,7 +126,9 @@ namespace JSC { macro(op_jfalse, 3) \ macro(op_jeq_null, 3) \ macro(op_jneq_null, 3) \ + macro(op_jneq_ptr, 4) \ macro(op_jnless, 4) \ + macro(op_jnlesseq, 4) \ macro(op_jmp_scopes, 3) \ macro(op_loop, 2) \ macro(op_loop_if_true, 3) \ @@ -139,12 +142,17 @@ namespace JSC { macro(op_new_func_exp, 3) \ macro(op_call, 5) \ macro(op_call_eval, 5) \ + macro(op_call_varargs, 5) \ + macro(op_load_varargs, 3) \ macro(op_tear_off_activation, 2) \ macro(op_tear_off_arguments, 1) \ macro(op_ret, 2) \ + macro(op_method_check, 1) \ \ macro(op_construct, 7) \ macro(op_construct_verify, 3) \ + macro(op_strcat, 4) \ + macro(op_to_primitive, 3) \ \ macro(op_get_pnames, 3) \ macro(op_next_pname, 4) \ diff --git a/src/3rdparty/webkit/JavaScriptCore/bytecode/SamplingTool.cpp b/src/3rdparty/webkit/JavaScriptCore/bytecode/SamplingTool.cpp index ffb9132..8651723 100644 --- a/src/3rdparty/webkit/JavaScriptCore/bytecode/SamplingTool.cpp +++ b/src/3rdparty/webkit/JavaScriptCore/bytecode/SamplingTool.cpp @@ -39,24 +39,57 @@ namespace JSC { -void ScopeSampleRecord::sample(CodeBlock* codeBlock, Instruction* vPC) +#if ENABLE(SAMPLING_FLAGS) + +void SamplingFlags::sample() { - if (!m_samples) { - m_size = codeBlock->instructions().size(); - m_samples = static_cast(calloc(m_size, sizeof(int))); - m_codeBlock = codeBlock; + uint32_t mask = 1 << 31; + unsigned index; + + for (index = 0; index < 32; ++index) { + if (mask & s_flags) + break; + mask >>= 1; } - ++m_sampleCount; + s_flagCounts[32 - index]++; +} - unsigned offest = vPC - codeBlock->instructions().begin(); - // Since we don't read and write codeBlock and vPC atomically, this check - // can fail if we sample mid op_call / op_ret. - if (offest < m_size) { - m_samples[offest]++; - m_opcodeSampleCount++; - } +void SamplingFlags::start() +{ + for (unsigned i = 0; i <= 32; ++i) + s_flagCounts[i] = 0; } +void SamplingFlags::stop() +{ + uint64_t total = 0; + for (unsigned i = 0; i <= 32; ++i) + total += s_flagCounts[i]; + + if (total) { + printf("\nSamplingFlags: sample counts with flags set: (%lld total)\n", total); + for (unsigned i = 0; i <= 32; ++i) { + if (s_flagCounts[i]) + printf(" [ %02d ] : %lld\t\t(%03.2f%%)\n", i, s_flagCounts[i], (100.0 * s_flagCounts[i]) / total); + } + printf("\n"); + } else + printf("\nSamplingFlags: no samples.\n\n"); +} +uint64_t SamplingFlags::s_flagCounts[33]; + +#else +void SamplingFlags::start() {} +void SamplingFlags::stop() {} +#endif + +/* + Start with flag 16 set. + By doing this the monitoring of lower valued flags will be masked out + until flag 16 is explictly cleared. +*/ +uint32_t SamplingFlags::s_flags = 1 << 15; + #if PLATFORM(WIN_OS) @@ -82,62 +115,113 @@ static inline unsigned hertz2us(unsigned hertz) return 1000000 / hertz; } -void SamplingTool::run() + +SamplingTool* SamplingTool::s_samplingTool = 0; + + +bool SamplingThread::s_running = false; +unsigned SamplingThread::s_hertz = 10000; +ThreadIdentifier SamplingThread::s_samplingThread; + +void* SamplingThread::threadStartFunc(void*) { - while (m_running) { - sleepForMicroseconds(hertz2us(m_hertz)); + while (s_running) { + sleepForMicroseconds(hertz2us(s_hertz)); - Sample sample(m_sample, m_codeBlock); - ++m_sampleCount; +#if ENABLE(SAMPLING_FLAGS) + SamplingFlags::sample(); +#endif +#if ENABLE(OPCODE_SAMPLING) + SamplingTool::sample(); +#endif + } - if (sample.isNull()) - continue; + return 0; +} - if (!sample.inHostFunction()) { - unsigned opcodeID = m_interpreter->getOpcodeID(sample.vPC()[0].u.opcode); - ++m_opcodeSampleCount; - ++m_opcodeSamples[opcodeID]; +void SamplingThread::start(unsigned hertz) +{ + ASSERT(!s_running); + s_running = true; + s_hertz = hertz; - if (sample.inCTIFunction()) - m_opcodeSamplesInCTIFunctions[opcodeID]++; - } + s_samplingThread = createThread(threadStartFunc, 0, "JavaScriptCore::Sampler"); +} + +void SamplingThread::stop() +{ + ASSERT(s_running); + s_running = false; + waitForThreadCompletion(s_samplingThread, 0); +} + + +void ScopeSampleRecord::sample(CodeBlock* codeBlock, Instruction* vPC) +{ + if (!m_samples) { + m_size = codeBlock->instructions().size(); + m_samples = static_cast(calloc(m_size, sizeof(int))); + m_codeBlock = codeBlock; + } + + ++m_sampleCount; + + unsigned offest = vPC - codeBlock->instructions().begin(); + // Since we don't read and write codeBlock and vPC atomically, this check + // can fail if we sample mid op_call / op_ret. + if (offest < m_size) { + m_samples[offest]++; + m_opcodeSampleCount++; + } +} + +void SamplingTool::doRun() +{ + Sample sample(m_sample, m_codeBlock); + ++m_sampleCount; + + if (sample.isNull()) + return; + + if (!sample.inHostFunction()) { + unsigned opcodeID = m_interpreter->getOpcodeID(sample.vPC()[0].u.opcode); + + ++m_opcodeSampleCount; + ++m_opcodeSamples[opcodeID]; + + if (sample.inCTIFunction()) + m_opcodeSamplesInCTIFunctions[opcodeID]++; + } #if ENABLE(CODEBLOCK_SAMPLING) + if (CodeBlock* codeBlock = sample.codeBlock()) { MutexLocker locker(m_scopeSampleMapMutex); - ScopeSampleRecord* record = m_scopeSampleMap->get(sample.codeBlock()->ownerNode); + ScopeSampleRecord* record = m_scopeSampleMap->get(codeBlock->ownerNode()); ASSERT(record); - record->sample(sample.codeBlock(), sample.vPC()); -#endif + record->sample(codeBlock, sample.vPC()); } +#endif } -void* SamplingTool::threadStartFunc(void* samplingTool) +void SamplingTool::sample() { - reinterpret_cast(samplingTool)->run(); - return 0; + s_samplingTool->doRun(); } void SamplingTool::notifyOfScope(ScopeNode* scope) { +#if ENABLE(CODEBLOCK_SAMPLING) MutexLocker locker(m_scopeSampleMapMutex); m_scopeSampleMap->set(scope, new ScopeSampleRecord(scope)); +#else + UNUSED_PARAM(scope); +#endif } -void SamplingTool::start(unsigned hertz) -{ - ASSERT(!m_running); - m_running = true; - m_hertz = hertz; - - m_samplingThread = createThread(threadStartFunc, this, "JavaScriptCore::Sampler"); -} - -void SamplingTool::stop() +void SamplingTool::setup() { - ASSERT(m_running); - m_running = false; - waitForThreadCompletion(m_samplingThread, 0); + s_samplingTool = this; } #if ENABLE(OPCODE_SAMPLING) @@ -153,14 +237,6 @@ struct LineCountInfo { unsigned count; }; -static int compareLineCountInfoSampling(const void* left, const void* right) -{ - const LineCountInfo* leftLineCount = reinterpret_cast(left); - const LineCountInfo* rightLineCount = reinterpret_cast(right); - - return (leftLineCount->line > rightLineCount->line) ? 1 : (leftLineCount->line < rightLineCount->line) ? -1 : 0; -} - static int compareOpcodeIndicesSampling(const void* left, const void* right) { const OpcodeSampleInfo* leftSampleInfo = reinterpret_cast(left); @@ -169,6 +245,15 @@ static int compareOpcodeIndicesSampling(const void* left, const void* right) return (leftSampleInfo->count < rightSampleInfo->count) ? 1 : (leftSampleInfo->count > rightSampleInfo->count) ? -1 : 0; } +#if ENABLE(CODEBLOCK_SAMPLING) +static int compareLineCountInfoSampling(const void* left, const void* right) +{ + const LineCountInfo* leftLineCount = reinterpret_cast(left); + const LineCountInfo* rightLineCount = reinterpret_cast(right); + + return (leftLineCount->line > rightLineCount->line) ? 1 : (leftLineCount->line < rightLineCount->line) ? -1 : 0; +} + static int compareScopeSampleRecords(const void* left, const void* right) { const ScopeSampleRecord* const leftValue = *static_cast(left); @@ -176,6 +261,7 @@ static int compareScopeSampleRecords(const void* left, const void* right) return (leftValue->m_sampleCount < rightValue->m_sampleCount) ? 1 : (leftValue->m_sampleCount > rightValue->m_sampleCount) ? -1 : 0; } +#endif void SamplingTool::dump(ExecState* exec) { @@ -227,6 +313,8 @@ void SamplingTool::dump(ExecState* exec) printf("\tcti count:\tsamples inside a CTI function called by this opcode\n"); printf("\tcti %% of self:\tcti count / sample count\n"); +#if ENABLE(CODEBLOCK_SAMPLING) + // (3) Build and sort 'codeBlockSamples' array. int scopeCount = m_scopeSampleMap->size(); @@ -248,8 +336,8 @@ void SamplingTool::dump(ExecState* exec) double blockPercent = (record->m_sampleCount * 100.0) / m_sampleCount; if (blockPercent >= 1) { - Instruction* code = codeBlock->instructions().begin(); - printf("#%d: %s:%d: %d / %lld (%.3f%%)\n", i + 1, record->m_scope->sourceURL().UTF8String().c_str(), codeBlock->lineNumberForBytecodeOffset(0), record->m_sampleCount, m_sampleCount, blockPercent); + //Instruction* code = codeBlock->instructions().begin(); + printf("#%d: %s:%d: %d / %lld (%.3f%%)\n", i + 1, record->m_scope->sourceURL().UTF8String().c_str(), codeBlock->lineNumberForBytecodeOffset(exec, 0), record->m_sampleCount, m_sampleCount, blockPercent); if (i < 10) { HashMap lineCounts; codeBlock->dump(exec); @@ -259,9 +347,7 @@ void SamplingTool::dump(ExecState* exec) int count = record->m_samples[op]; if (count) { printf(" [% 4d] has sample count: % 4d\n", op, count); - // It is okay to pass 0 as the CallFrame for lineNumberForBytecodeOffset since - // we ensure exception information when Sampling is enabled. - unsigned line = codeBlock->lineNumberForBytecodeOffset(0, op); + unsigned line = codeBlock->lineNumberForBytecodeOffset(exec, op); lineCounts.set(line, (lineCounts.contains(line) ? lineCounts.get(line) : 0) + count); } } @@ -287,6 +373,9 @@ void SamplingTool::dump(ExecState* exec) } } } +#else + UNUSED_PARAM(exec); +#endif } #else @@ -297,4 +386,21 @@ void SamplingTool::dump(ExecState*) #endif +void AbstractSamplingCounter::dump() +{ +#if ENABLE(SAMPLING_COUNTERS) + if (s_abstractSamplingCounterChain != &s_abstractSamplingCounterChainEnd) { + printf("\nSampling Counter Values:\n"); + for (AbstractSamplingCounter* currCounter = s_abstractSamplingCounterChain; (currCounter != &s_abstractSamplingCounterChainEnd); currCounter = currCounter->m_next) + printf("\t%s\t: %lld\n", currCounter->m_name, currCounter->m_counter); + printf("\n\n"); + } + s_completed = true; +#endif +} + +AbstractSamplingCounter AbstractSamplingCounter::s_abstractSamplingCounterChainEnd; +AbstractSamplingCounter* AbstractSamplingCounter::s_abstractSamplingCounterChain = &s_abstractSamplingCounterChainEnd; +bool AbstractSamplingCounter::s_completed = false; + } // namespace JSC diff --git a/src/3rdparty/webkit/JavaScriptCore/bytecode/SamplingTool.h b/src/3rdparty/webkit/JavaScriptCore/bytecode/SamplingTool.h index daf99d2..7d7dc9c 100644 --- a/src/3rdparty/webkit/JavaScriptCore/bytecode/SamplingTool.h +++ b/src/3rdparty/webkit/JavaScriptCore/bytecode/SamplingTool.h @@ -38,6 +38,54 @@ namespace JSC { + class SamplingFlags { + friend class JIT; + public: + static void start(); + static void stop(); + +#if ENABLE(SAMPLING_FLAGS) + static void setFlag(unsigned flag) + { + ASSERT(flag >= 1); + ASSERT(flag <= 32); + s_flags |= 1u << (flag - 1); + } + + static void clearFlag(unsigned flag) + { + ASSERT(flag >= 1); + ASSERT(flag <= 32); + s_flags &= ~(1u << (flag - 1)); + } + + static void sample(); + + class ScopedFlag { + public: + ScopedFlag(int flag) + : m_flag(flag) + { + setFlag(flag); + } + + ~ScopedFlag() + { + clearFlag(m_flag); + } + + private: + int m_flag; + }; + +#endif + private: + static uint32_t s_flags; +#if ENABLE(SAMPLING_FLAGS) + static uint64_t s_flagCounts[33]; +#endif + }; + class CodeBlock; class ExecState; class Interpreter; @@ -73,6 +121,19 @@ namespace JSC { typedef WTF::HashMap ScopeSampleRecordMap; + class SamplingThread { + public: + // Sampling thread state. + static bool s_running; + static unsigned s_hertz; + static ThreadIdentifier s_samplingThread; + + static void start(unsigned hertz=10000); + static void stop(); + + static void* threadStartFunc(void*); + }; + class SamplingTool { public: friend class CallRecord; @@ -127,12 +188,13 @@ namespace JSC { SamplingTool(Interpreter* interpreter) : m_interpreter(interpreter) - , m_running(false) , m_codeBlock(0) , m_sample(0) , m_sampleCount(0) , m_opcodeSampleCount(0) +#if ENABLE(CODEBLOCK_SAMPLING) , m_scopeSampleMap(new ScopeSampleRecordMap()) +#endif { memset(m_opcodeSamples, 0, sizeof(m_opcodeSamples)); memset(m_opcodeSamplesInCTIFunctions, 0, sizeof(m_opcodeSamplesInCTIFunctions)); @@ -140,11 +202,12 @@ namespace JSC { ~SamplingTool() { +#if ENABLE(CODEBLOCK_SAMPLING) deleteAllValues(*m_scopeSampleMap); +#endif } - void start(unsigned hertz=10000); - void stop(); + void setup(); void dump(ExecState*); void notifyOfScope(ScopeNode* scope); @@ -159,12 +222,14 @@ namespace JSC { CodeBlock** codeBlockSlot() { return &m_codeBlock; } intptr_t* sampleSlot() { return &m_sample; } - unsigned encodeSample(Instruction* vPC, bool inCTIFunction = false, bool inHostFunction = false) + void* encodeSample(Instruction* vPC, bool inCTIFunction = false, bool inHostFunction = false) { ASSERT(!(reinterpret_cast(vPC) & 0x3)); - return reinterpret_cast(vPC) | (static_cast(inCTIFunction) << 1) | static_cast(inHostFunction); + return reinterpret_cast(reinterpret_cast(vPC) | (static_cast(inCTIFunction) << 1) | static_cast(inHostFunction)); } + static void sample(); + private: class Sample { public: @@ -174,7 +239,7 @@ namespace JSC { { } - bool isNull() { return !m_sample || !m_codeBlock; } + bool isNull() { return !m_sample; } CodeBlock* codeBlock() { return m_codeBlock; } Instruction* vPC() { return reinterpret_cast(m_sample & ~0x3); } bool inHostFunction() { return m_sample & 0x1; } @@ -184,17 +249,12 @@ namespace JSC { intptr_t m_sample; CodeBlock* m_codeBlock; }; - - static void* threadStartFunc(void*); - void run(); + + void doRun(); + static SamplingTool* s_samplingTool; Interpreter* m_interpreter; - // Sampling thread state. - bool m_running; - unsigned m_hertz; - ThreadIdentifier m_samplingThread; - // State tracked by the main thread, used by the sampling thread. CodeBlock* m_codeBlock; intptr_t m_sample; @@ -205,9 +265,147 @@ namespace JSC { unsigned m_opcodeSamples[numOpcodeIDs]; unsigned m_opcodeSamplesInCTIFunctions[numOpcodeIDs]; +#if ENABLE(CODEBLOCK_SAMPLING) Mutex m_scopeSampleMapMutex; OwnPtr m_scopeSampleMap; +#endif + }; + + // AbstractSamplingCounter: + // + // Implements a named set of counters, printed on exit if ENABLE(SAMPLING_COUNTERS). + // See subclasses below, SamplingCounter, GlobalSamplingCounter and DeletableSamplingCounter. + class AbstractSamplingCounter { + friend class JIT; + friend class DeletableSamplingCounter; + public: + void count(uint32_t count = 1) + { + m_counter += count; + } + + static void dump(); + + protected: + // Effectively the contructor, however called lazily in the case of GlobalSamplingCounter. + void init(const char* name) + { + m_counter = 0; + m_name = name; + + // Set m_next to point to the head of the chain, and inform whatever is + // currently at the head that this node will now hold the pointer to it. + m_next = s_abstractSamplingCounterChain; + s_abstractSamplingCounterChain->m_referer = &m_next; + // Add this node to the head of the list. + s_abstractSamplingCounterChain = this; + m_referer = &s_abstractSamplingCounterChain; + } + + int64_t m_counter; + const char* m_name; + AbstractSamplingCounter* m_next; + // This is a pointer to the pointer to this node in the chain; used to + // allow fast linked list deletion. + AbstractSamplingCounter** m_referer; + // Null object used to detect end of static chain. + static AbstractSamplingCounter s_abstractSamplingCounterChainEnd; + static AbstractSamplingCounter* s_abstractSamplingCounterChain; + static bool s_completed; + }; + +#if ENABLE(SAMPLING_COUNTERS) + // SamplingCounter: + // + // This class is suitable and (hopefully!) convenient for cases where a counter is + // required within the scope of a single function. It can be instantiated as a + // static variable since it contains a constructor but not a destructor (static + // variables in WebKit cannot have destructors). + // + // For example: + // + // void someFunction() + // { + // static SamplingCounter countMe("This is my counter. There are many like it, but this one is mine."); + // countMe.count(); + // // ... + // } + // + class SamplingCounter : public AbstractSamplingCounter { + public: + SamplingCounter(const char* name) { init(name); } + }; + + // GlobalSamplingCounter: + // + // This class is suitable for use where a counter is to be declared globally, + // since it contains neither a constructor nor destructor. Instead, ensure + // that 'name()' is called to provide the counter with a name (and also to + // allow it to be printed out on exit). + // + // GlobalSamplingCounter globalCounter; + // + // void firstFunction() + // { + // // Put this within a function that is definitely called! + // // (Or alternatively alongside all calls to 'count()'). + // globalCounter.name("I Name You Destroyer."); + // globalCounter.count(); + // // ... + // } + // + // void secondFunction() + // { + // globalCounter.count(); + // // ... + // } + // + class GlobalSamplingCounter : public AbstractSamplingCounter { + public: + void name(const char* name) + { + // Global objects should be mapped in zero filled memory, so this should + // be a safe (albeit not necessarily threadsafe) check for 'first call'. + if (!m_next) + init(name); + } + }; + + // DeletableSamplingCounter: + // + // The above classes (SamplingCounter, GlobalSamplingCounter), are intended for + // use within a global or static scope, and as such cannot have a destructor. + // This means there is no convenient way for them to remove themselves from the + // static list of counters, and should an instance of either class be freed + // before 'dump()' has walked over the list it will potentially walk over an + // invalid pointer. + // + // This class is intended for use where the counter may possibly be deleted before + // the program exits. Should this occur, the counter will print it's value to + // stderr, and remove itself from the static list. Example: + // + // DeletableSamplingCounter* counter = new DeletableSamplingCounter("The Counter With No Name"); + // counter->count(); + // delete counter; + // + class DeletableSamplingCounter : public AbstractSamplingCounter { + public: + DeletableSamplingCounter(const char* name) { init(name); } + + ~DeletableSamplingCounter() + { + if (!s_completed) + fprintf(stderr, "DeletableSamplingCounter \"%s\" deleted early (with count %lld)\n", m_name, m_counter); + // Our m_referer pointer should know where the pointer to this node is, + // and m_next should know that this node is the previous node in the list. + ASSERT(*m_referer == this); + ASSERT(m_next->m_referer == &m_next); + // Remove this node from the list, and inform m_next that we have done so. + m_next->m_referer = m_referer; + *m_referer = m_next; + } }; +#endif } // namespace JSC diff --git a/src/3rdparty/webkit/JavaScriptCore/bytecode/StructureStubInfo.h b/src/3rdparty/webkit/JavaScriptCore/bytecode/StructureStubInfo.h index a9e0678..24fcb7d 100644 --- a/src/3rdparty/webkit/JavaScriptCore/bytecode/StructureStubInfo.h +++ b/src/3rdparty/webkit/JavaScriptCore/bytecode/StructureStubInfo.h @@ -26,19 +26,18 @@ #ifndef StructureStubInfo_h #define StructureStubInfo_h +#if ENABLE(JIT) + #include "Instruction.h" +#include "MacroAssembler.h" #include "Opcode.h" #include "Structure.h" namespace JSC { -#if ENABLE(JIT) struct StructureStubInfo { StructureStubInfo(OpcodeID opcodeID) : opcodeID(opcodeID) - , stubRoutine(0) - , callReturnLocation(0) - , hotPathBegin(0) { } @@ -145,12 +144,13 @@ namespace JSC { } putByIdReplace; } u; - void* stubRoutine; - void* callReturnLocation; - void* hotPathBegin; + MacroAssembler::CodeLocationLabel stubRoutine; + MacroAssembler::CodeLocationCall callReturnLocation; + MacroAssembler::CodeLocationLabel hotPathBegin; }; -#endif } // namespace JSC +#endif + #endif // StructureStubInfo_h diff --git a/src/3rdparty/webkit/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp b/src/3rdparty/webkit/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp index 91279b8..21a3016 100644 --- a/src/3rdparty/webkit/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp +++ b/src/3rdparty/webkit/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp @@ -31,6 +31,7 @@ #include "BytecodeGenerator.h" #include "BatchedTransitionOptimizer.h" +#include "PrototypeFunction.h" #include "JSFunction.h" #include "Interpreter.h" #include "UString.h" @@ -115,7 +116,7 @@ namespace JSC { */ #ifndef NDEBUG -bool BytecodeGenerator::s_dumpsGeneratedCode = false; +static bool s_dumpsGeneratedCode = false; #endif void BytecodeGenerator::setDumpsGeneratedCode(bool dumpsGeneratedCode) @@ -145,14 +146,14 @@ void BytecodeGenerator::generate() #ifndef NDEBUG m_codeBlock->setInstructionCount(m_codeBlock->instructions().size()); - if (s_dumpsGeneratedCode) { - JSGlobalObject* globalObject = m_scopeChain->globalObject(); - m_codeBlock->dump(globalObject->globalExec()); - } + if (s_dumpsGeneratedCode) + m_codeBlock->dump(m_scopeChain->globalObject()->globalExec()); #endif if ((m_codeType == FunctionCode && !m_codeBlock->needsFullScopeChain() && !m_codeBlock->usesArguments()) || m_codeType == EvalCode) symbolTable().clear(); + + m_codeBlock->setIsNumericCompareFunction(instructions() == m_globalData->numericCompareFunction(m_scopeChain->globalObject()->globalExec())); #if !ENABLE(OPCODE_SAMPLING) if (!m_regeneratingForExceptionInfo && (m_codeType == FunctionCode || m_codeType == EvalCode)) @@ -211,7 +212,6 @@ void BytecodeGenerator::allocateConstants(size_t count) BytecodeGenerator::BytecodeGenerator(ProgramNode* programNode, const Debugger* debugger, const ScopeChain& scopeChain, SymbolTable* symbolTable, ProgramCodeBlock* codeBlock) : m_shouldEmitDebugHooks(!!debugger) , m_shouldEmitProfileHooks(scopeChain.globalObject()->supportsProfiling()) - , m_regeneratingForExceptionInfo(false) , m_scopeChain(&scopeChain) , m_symbolTable(symbolTable) , m_scopeNode(programNode) @@ -222,9 +222,12 @@ BytecodeGenerator::BytecodeGenerator(ProgramNode* programNode, const Debugger* d , m_baseScopeDepth(0) , m_codeType(GlobalCode) , m_nextGlobalIndex(-1) + , m_globalConstantIndex(0) , m_globalData(&scopeChain.globalObject()->globalExec()->globalData()) , m_lastOpcodeID(op_end) , m_emitNodeDepth(0) + , m_regeneratingForExceptionInfo(false) + , m_codeBlockBeingRegeneratedFrom(0) { if (m_shouldEmitDebugHooks) m_codeBlock->setNeedsFullScopeChain(true); @@ -259,7 +262,7 @@ BytecodeGenerator::BytecodeGenerator(ProgramNode* programNode, const Debugger* d m_nextGlobalIndex -= symbolTable->size(); for (size_t i = 0; i < functionStack.size(); ++i) { - FuncDeclNode* funcDecl = functionStack[i].get(); + FuncDeclNode* funcDecl = functionStack[i]; globalObject->removeDirect(funcDecl->m_ident); // Make sure our new function is not shadowed by an old property. emitNewFunction(addGlobalVar(funcDecl->m_ident, false), funcDecl); } @@ -275,7 +278,7 @@ BytecodeGenerator::BytecodeGenerator(ProgramNode* programNode, const Debugger* d emitLoad(newVars[i], jsUndefined()); } else { for (size_t i = 0; i < functionStack.size(); ++i) { - FuncDeclNode* funcDecl = functionStack[i].get(); + FuncDeclNode* funcDecl = functionStack[i]; globalObject->putWithAttributes(exec, funcDecl->m_ident, funcDecl->makeFunction(exec, scopeChain.node()), DontDelete); } for (size_t i = 0; i < varStack.size(); ++i) { @@ -294,7 +297,6 @@ BytecodeGenerator::BytecodeGenerator(ProgramNode* programNode, const Debugger* d BytecodeGenerator::BytecodeGenerator(FunctionBodyNode* functionBody, const Debugger* debugger, const ScopeChain& scopeChain, SymbolTable* symbolTable, CodeBlock* codeBlock) : m_shouldEmitDebugHooks(!!debugger) , m_shouldEmitProfileHooks(scopeChain.globalObject()->supportsProfiling()) - , m_regeneratingForExceptionInfo(false) , m_scopeChain(&scopeChain) , m_symbolTable(symbolTable) , m_scopeNode(functionBody) @@ -303,9 +305,12 @@ BytecodeGenerator::BytecodeGenerator(FunctionBodyNode* functionBody, const Debug , m_dynamicScopeDepth(0) , m_baseScopeDepth(0) , m_codeType(FunctionCode) + , m_globalConstantIndex(0) , m_globalData(&scopeChain.globalObject()->globalExec()->globalData()) , m_lastOpcodeID(op_end) , m_emitNodeDepth(0) + , m_regeneratingForExceptionInfo(false) + , m_codeBlockBeingRegeneratedFrom(0) { if (m_shouldEmitDebugHooks) m_codeBlock->setNeedsFullScopeChain(true); @@ -327,12 +332,19 @@ BytecodeGenerator::BytecodeGenerator(FunctionBodyNode* functionBody, const Debug } else emitOpcode(op_enter); - if (usesArguments) - emitOpcode(op_create_arguments); + if (usesArguments) { + emitOpcode(op_init_arguments); + + // The debugger currently retrieves the arguments object from an activation rather than pulling + // it from a call frame. In the long-term it should stop doing that (), + // but for now we force eager creation of the arguments object when debugging. + if (m_shouldEmitDebugHooks) + emitOpcode(op_create_arguments); + } const DeclarationStacks::FunctionStack& functionStack = functionBody->functionStack(); for (size_t i = 0; i < functionStack.size(); ++i) { - FuncDeclNode* funcDecl = functionStack[i].get(); + FuncDeclNode* funcDecl = functionStack[i]; const Identifier& ident = funcDecl->m_ident; m_functions.add(ident.ustring().rep()); emitNewFunction(addVar(ident, false), funcDecl); @@ -366,7 +378,6 @@ BytecodeGenerator::BytecodeGenerator(FunctionBodyNode* functionBody, const Debug BytecodeGenerator::BytecodeGenerator(EvalNode* evalNode, const Debugger* debugger, const ScopeChain& scopeChain, SymbolTable* symbolTable, EvalCodeBlock* codeBlock) : m_shouldEmitDebugHooks(!!debugger) , m_shouldEmitProfileHooks(scopeChain.globalObject()->supportsProfiling()) - , m_regeneratingForExceptionInfo(false) , m_scopeChain(&scopeChain) , m_symbolTable(symbolTable) , m_scopeNode(evalNode) @@ -374,11 +385,14 @@ BytecodeGenerator::BytecodeGenerator(EvalNode* evalNode, const Debugger* debugge , m_thisRegister(RegisterFile::ProgramCodeThisRegister) , m_finallyDepth(0) , m_dynamicScopeDepth(0) - , m_baseScopeDepth(scopeChain.localDepth()) + , m_baseScopeDepth(codeBlock->baseScopeDepth()) , m_codeType(EvalCode) + , m_globalConstantIndex(0) , m_globalData(&scopeChain.globalObject()->globalExec()->globalData()) , m_lastOpcodeID(op_end) , m_emitNodeDepth(0) + , m_regeneratingForExceptionInfo(false) + , m_codeBlockBeingRegeneratedFrom(0) { if (m_shouldEmitDebugHooks || m_baseScopeDepth) m_codeBlock->setNeedsFullScopeChain(true); @@ -421,6 +435,36 @@ RegisterID* BytecodeGenerator::registerFor(const Identifier& ident) if (entry.isNull()) return 0; + if (ident == propertyNames().arguments) + createArgumentsIfNecessary(); + + return ®isterFor(entry.getIndex()); +} + +bool BytecodeGenerator::willResolveToArguments(const Identifier& ident) +{ + if (ident != propertyNames().arguments) + return false; + + if (!shouldOptimizeLocals()) + return false; + + SymbolTableEntry entry = symbolTable().get(ident.ustring().rep()); + if (entry.isNull()) + return false; + + if (m_codeBlock->usesArguments() && m_codeType == FunctionCode) + return true; + + return false; +} + +RegisterID* BytecodeGenerator::uncheckedRegisterForArguments() +{ + ASSERT(willResolveToArguments(propertyNames().arguments)); + + SymbolTableEntry entry = symbolTable().get(propertyNames().arguments.ustring().rep()); + ASSERT(!entry.isNull()); return ®isterFor(entry.getIndex()); } @@ -645,6 +689,21 @@ PassRefPtr