- 14 Nov, 2013 1 commit
-
-
oliver@apple.com authored
https://bugs.webkit.org/show_bug.cgi?id=124359 Reviewed by Geoffrey Garen. Source/JavaScriptCore: Add --cloop to build-jsc, build-webkit and friends. Also make CLoop build and work again - This meant adding a couple of missing ENABLE(DFG_JIT) blocks, and fixing a few other references. * Configurations/FeatureDefines.xcconfig: * bytecode/BytecodeLivenessAnalysis.cpp: (JSC::computeUsesForBytecodeOffset): (JSC::computeDefsForBytecodeOffset): * bytecode/DFGExitProfile.cpp: * dfg/DFGCapabilities.cpp: * dfg/DFGCompilationKey.cpp: * dfg/DFGCompilationMode.cpp: * jit/JITExceptions.cpp: (JSC::genericUnwind): Source/WebCore: Add cloop configuration info to WebCore FeatureDefines so that it's consistent with JSC * Configurations/FeatureDefines.xcconfig: Source/WTF: Make building with the CLoop forcibly enabled manually disable the JITs * wtf/Platform.h: Tools: Add --cloop support to forcibly enable to CLoop build * Scripts/build-jsc: * Scripts/build-webkit: git-svn-id: http://svn.webkit.org/repository/webkit/trunk@159321 268f45cc-cd09-0410-ab3c-d52691b4dbfc
-
- 29 Aug, 2013 5 commits
-
-
fpizlo@apple.com authored
https://bugs.webkit.org/show_bug.cgi?id=120489 Reviewed by Geoffrey Garen. If the baseline JIT hits an OSR entry trigger into the DFG and we already have a DFG compilation but we've also started one or more FTL compilations, then we shouldn't get confused. Previously we would have gotten confused because we would see an in-process deferred compile (the FTL compile) and also an optimized replacement (the DFG code). If the baseline JIT hits an OSR entry trigger into the DFG and we previously did two things in this order: triggered a tier-up compilation from the DFG into the FTL, and then jettisoned the DFG code because it exited a bunch, then we shouldn't be confused by the presence of an in-process deferred compile (the FTL compile). Previously we would have waited for that compile to finish; but the more sensible thing to do is to let it complete and then invalidate it, while at the same time enqueueing a DFG compile to create a new, more valid, DFG code block. If the DFG JIT hits a loop OSR entry trigger (into the FTL) and it has already triggered an FTL compile for replacement, then it should fire off a second compile instead of thinking that it can wait for that one to finish. Or vice-versa. We need to allow for two FTL compiles to be enqueued at the same time (one for replacement and one for OSR entry in a loop). Then there's also the problem that DFG::compile() is almost certainly going to be the hook for triggering both DFG compiles and the two kinds of FTL compiles, but right now there is no way to tell it which one you want. This fixes these problems and removes a bunch of potential confusion by making the key for a compile in the DFG::Worklist be a CompilationMode (one of DFGMode, FTLMode, or FTLForOSREntryMode). That mode is also passed to DFG::compile(). Awkwardly, this still leaves us in a no DFG->FTL tier-up situation - so DFG::compile() is always passed DFGMode and then it might do an FTL compile if possible. Fixing that is a bigger issue for a later changeset. * CMakeLists.txt: * GNUmakefile.list.am: * JavaScriptCore.vcxproj/JavaScriptCore.vcxproj: * JavaScriptCore.xcodeproj/project.pbxproj: * Target.pri: * bytecode/CodeBlock.cpp: (JSC::CodeBlock::checkIfOptimizationThresholdReached): * dfg/DFGCompilationKey.cpp: Added. (JSC::DFG::CompilationKey::dump): * dfg/DFGCompilationKey.h: Added. (JSC::DFG::CompilationKey::CompilationKey): (JSC::DFG::CompilationKey::operator!): (JSC::DFG::CompilationKey::isHashTableDeletedValue): (JSC::DFG::CompilationKey::profiledBlock): (JSC::DFG::CompilationKey::mode): (JSC::DFG::CompilationKey::operator==): (JSC::DFG::CompilationKey::hash): (JSC::DFG::CompilationKeyHash::hash): (JSC::DFG::CompilationKeyHash::equal): * dfg/DFGCompilationMode.cpp: Added. (WTF::printInternal): * dfg/DFGCompilationMode.h: Added. * dfg/DFGDriver.cpp: (JSC::DFG::compileImpl): (JSC::DFG::compile): * dfg/DFGDriver.h: * dfg/DFGPlan.cpp: (JSC::DFG::Plan::Plan): (JSC::DFG::Plan::key): * dfg/DFGPlan.h: * dfg/DFGWorklist.cpp: (JSC::DFG::Worklist::enqueue): (JSC::DFG::Worklist::compilationState): (JSC::DFG::Worklist::completeAllReadyPlansForVM): (JSC::DFG::Worklist::runThread): * dfg/DFGWorklist.h: * jit/JITStubs.cpp: (JSC::DEFINE_STUB_FUNCTION): git-svn-id: http://svn.webkit.org/repository/webkit/trunk@154854 268f45cc-cd09-0410-ab3c-d52691b4dbfc
-
http://trac.webkit.org/changeset/154833fpizlo@apple.com authored
Rubber stamped by Oliver Hunt. * dfg/DFGDriver.h: git-svn-id: http://svn.webkit.org/repository/webkit/trunk@154838 268f45cc-cd09-0410-ab3c-d52691b4dbfc
-
fpizlo@apple.com authored
https://bugs.webkit.org/show_bug.cgi?id=120453 Reviewed by Oliver Hunt. Instead of saying: codeBlock->prepareForExecution(stuff, BaselineJIT, more stuff) we should just say: JIT::compile(stuff, codeBlock, more stuff); And similarly for the LLInt and DFG. This kills a bunch of code, since CodeBlock::prepareForExecution() is just a wrapper that uses the JITType argument to call into the appropriate execution engine, which is what the user wanted to do in the first place. * CMakeLists.txt: * GNUmakefile.list.am: * JavaScriptCore.vcxproj/JavaScriptCore.vcxproj: * JavaScriptCore.xcodeproj/project.pbxproj: * Target.pri: * bytecode/CodeBlock.cpp: * bytecode/CodeBlock.h: * dfg/DFGDriver.cpp: (JSC::DFG::compileImpl): (JSC::DFG::compile): * dfg/DFGDriver.h: (JSC::DFG::tryCompile): * dfg/DFGOSRExitPreparation.cpp: (JSC::DFG::prepareCodeOriginForOSRExit): * dfg/DFGWorklist.cpp: (JSC::DFG::globalWorklist): * dfg/DFGWorklist.h: * jit/JIT.cpp: (JSC::JIT::privateCompile): * jit/JIT.h: (JSC::JIT::compile): * jit/JITStubs.cpp: (JSC::DEFINE_STUB_FUNCTION): * llint/LLIntEntrypoint.cpp: Copied from Source/JavaScriptCore/llint/LLIntEntrypoints.cpp. (JSC::LLInt::setFunctionEntrypoint): (JSC::LLInt::setEvalEntrypoint): (JSC::LLInt::setProgramEntrypoint): (JSC::LLInt::setEntrypoint): * llint/LLIntEntrypoint.h: Copied from Source/JavaScriptCore/llint/LLIntEntrypoints.h. * llint/LLIntEntrypoints.cpp: Removed. * llint/LLIntEntrypoints.h: Removed. * llint/LLIntSlowPaths.cpp: (JSC::LLInt::jitCompileAndSetHeuristics): * runtime/Executable.cpp: (JSC::ScriptExecutable::prepareForExecutionImpl): git-svn-id: http://svn.webkit.org/repository/webkit/trunk@154833 268f45cc-cd09-0410-ab3c-d52691b4dbfc
-
fpizlo@apple.com authored
https://bugs.webkit.org/show_bug.cgi?id=120326 Reviewed by Oliver Hunt. Rolling r154804 back in after fixing no-LLInt build. Previously Executable owned the code for generating JIT code; you always had to go through Executable. But often you also had to go through CodeBlock, because ScriptExecutable couldn't have virtual methods, but CodeBlock could. So you'd ask CodeBlock to do something, which would dispatch through a virtual method that would select the appropriate Executable subtype's method. This all meant that the same code would often be duplicated, because most of the work needed to compile something was identical regardless of code type. But then we tried to fix this, by having templatized helpers in ExecutionHarness.h and JITDriver.h. The result was that if you wanted to find out what happened when you asked for something to be compiled, you'd go on a wild ride that started with CodeBlock, touched upon Executable, and then ricocheted into either ExecutionHarness or JITDriver (likely both). Another awkwardness was that for concurrent compiles, the DFG::Worklist had super-special inside knowledge of what JITStubs.cpp's cti_optimize would have done once the compilation finished. Also, most of the DFG JIT drivers assumed that they couldn't install the JITCode into the CodeBlock directly - instead they would return it via a reference, which happened to be a reference to the JITCode pointer in Executable. This was super weird. Finally, there was no notion of compiling code into a special CodeBlock that wasn't used for handling calls into an Executable. I'd like this for FTL OSR entry. This patch solves these problems by reducing all of that complexity into just three primitives: - Executable::newCodeBlock(). This gives you a new code block, either for call or for construct, and either to serve as the baseline code or the optimized code. The new code block is then owned by the caller; Executable doesn't register it anywhere. The new code block has no JITCode and isn't callable, but it has all of the bytecode. - CodeBlock::prepareForExecution(). This takes the CodeBlock's bytecode and produces a JITCode, and then installs the JITCode into the CodeBlock. This method takes a JITType, and always compiles with that JIT. If you ask for JITCode::InterpreterThunk then you'll get JITCode that just points to the LLInt entrypoints. Once this returns, it is possible to call into the CodeBlock if you do so manually - but the Executable still won't know about it so JS calls to that Executable will still be routed to whatever CodeBlock is associated with the Executable. - Executable::installCode(). This takes a CodeBlock and makes it the code-for- entry for that Executable. This involves unlinking the Executable's last CodeBlock, if there was one. This also tells the GC about any effect on memory usage and does a bunch of weird data structure rewiring, since Executable caches some of CodeBlock's fields for the benefit of virtual call fast paths. This functionality is then wrapped around three convenience methods: - Executable::prepareForExecution(). If there is no code block for that Executable, then one is created (newCodeBlock()), compiled (CodeBlock::prepareForExecution()) and installed (installCode()). - CodeBlock::newReplacement(). Asks the Executable for a new CodeBlock that can serve as an optimized replacement of the current one. - CodeBlock::install(). Asks the Executable to install this code block. This patch allows me to kill *a lot* of code and to remove a lot of specializations for functions vs. not-functions, and a lot of places where we pass around JITCode references and such. ExecutionHarness and JITDriver are both gone. Overall this patch has more red than green. It also allows me to work on FTL OSR entry and tier-up: - FTL tier-up: this will involve DFGOperations.cpp asking the DFG::Worklist to do some compilation, but it will require the DFG::Worklist to do something different than what JITStubs.cpp would want, once the compilation finishes. This patch introduces a callback mechanism for that purpose. - FTL OSR entry: this will involve creating a special auto-jettisoned CodeBlock that is used only for FTL OSR entry. The new set of primitives allows for this: Executable can vend you a fresh new CodeBlock, and you can ask that CodeBlock to compile itself with any JIT of your choosing. Or you can take that CodeBlock and compile it yourself. Previously the act of producing a CodeBlock-for-optimization and the act of compiling code for it were tightly coupled; now you can separate them and you can create such auto-jettisoned CodeBlocks that are used for a one-shot OSR entry. * CMakeLists.txt: * GNUmakefile.list.am: * JavaScriptCore.vcxproj/JavaScriptCore.vcxproj: * JavaScriptCore.xcodeproj/project.pbxproj: * Target.pri: * bytecode/CodeBlock.cpp: (JSC::CodeBlock::unlinkIncomingCalls): (JSC::CodeBlock::prepareForExecutionImpl): (JSC::CodeBlock::prepareForExecution): (JSC::CodeBlock::prepareForExecutionAsynchronously): (JSC::CodeBlock::install): (JSC::CodeBlock::newReplacement): (JSC::FunctionCodeBlock::jettisonImpl): * bytecode/CodeBlock.h: (JSC::CodeBlock::hasBaselineJITProfiling): * bytecode/DeferredCompilationCallback.cpp: Added. (JSC::DeferredCompilationCallback::DeferredCompilationCallback): (JSC::DeferredCompilationCallback::~DeferredCompilationCallback): * bytecode/DeferredCompilationCallback.h: Added. * dfg/DFGDriver.cpp: (JSC::DFG::tryCompile): * dfg/DFGDriver.h: (JSC::DFG::tryCompile): * dfg/DFGFailedFinalizer.cpp: (JSC::DFG::FailedFinalizer::finalize): (JSC::DFG::FailedFinalizer::finalizeFunction): * dfg/DFGFailedFinalizer.h: * dfg/DFGFinalizer.h: * dfg/DFGJITFinalizer.cpp: (JSC::DFG::JITFinalizer::finalize): (JSC::DFG::JITFinalizer::finalizeFunction): * dfg/DFGJITFinalizer.h: * dfg/DFGOSRExitPreparation.cpp: (JSC::DFG::prepareCodeOriginForOSRExit): * dfg/DFGOperations.cpp: * dfg/DFGPlan.cpp: (JSC::DFG::Plan::Plan): (JSC::DFG::Plan::compileInThreadImpl): (JSC::DFG::Plan::notifyReady): (JSC::DFG::Plan::finalizeWithoutNotifyingCallback): (JSC::DFG::Plan::finalizeAndNotifyCallback): * dfg/DFGPlan.h: * dfg/DFGSpeculativeJIT32_64.cpp: (JSC::DFG::SpeculativeJIT::compile): * dfg/DFGWorklist.cpp: (JSC::DFG::Worklist::completeAllReadyPlansForVM): (JSC::DFG::Worklist::runThread): * ftl/FTLJITFinalizer.cpp: (JSC::FTL::JITFinalizer::finalize): (JSC::FTL::JITFinalizer::finalizeFunction): * ftl/FTLJITFinalizer.h: * heap/Heap.h: (JSC::Heap::isDeferred): * interpreter/Interpreter.cpp: (JSC::Interpreter::execute): (JSC::Interpreter::executeCall): (JSC::Interpreter::executeConstruct): (JSC::Interpreter::prepareForRepeatCall): * jit/JITDriver.h: Removed. * jit/JITStubs.cpp: (JSC::DEFINE_STUB_FUNCTION): (JSC::jitCompileFor): (JSC::lazyLinkFor): * jit/JITToDFGDeferredCompilationCallback.cpp: Added. (JSC::JITToDFGDeferredCompilationCallback::JITToDFGDeferredCompilationCallback): (JSC::JITToDFGDeferredCompilationCallback::~JITToDFGDeferredCompilationCallback): (JSC::JITToDFGDeferredCompilationCallback::create): (JSC::JITToDFGDeferredCompilationCallback::compilationDidBecomeReadyAsynchronously): (JSC::JITToDFGDeferredCompilationCallback::compilationDidComplete): * jit/JITToDFGDeferredCompilationCallback.h: Added. * llint/LLIntEntrypoints.cpp: (JSC::LLInt::setFunctionEntrypoint): (JSC::LLInt::setEvalEntrypoint): (JSC::LLInt::setProgramEntrypoint): * llint/LLIntEntrypoints.h: * llint/LLIntSlowPaths.cpp: (JSC::LLInt::jitCompileAndSetHeuristics): (JSC::LLInt::setUpCall): * runtime/ArrayPrototype.cpp: (JSC::isNumericCompareFunction): * runtime/CommonSlowPaths.cpp: * runtime/CompilationResult.cpp: (WTF::printInternal): * runtime/CompilationResult.h: * runtime/Executable.cpp: (JSC::ScriptExecutable::installCode): (JSC::ScriptExecutable::newCodeBlockFor): (JSC::ScriptExecutable::newReplacementCodeBlockFor): (JSC::ScriptExecutable::prepareForExecutionImpl): * runtime/Executable.h: (JSC::ExecutableBase::offsetOfJITCodeWithArityCheckFor): (JSC::ExecutableBase::offsetOfNumParametersFor): (JSC::ScriptExecutable::prepareForExecution): (JSC::FunctionExecutable::jettisonOptimizedCodeFor): * runtime/ExecutionHarness.h: Removed. git-svn-id: http://svn.webkit.org/repository/webkit/trunk@154824 268f45cc-cd09-0410-ab3c-d52691b4dbfc
-
commit-queue@webkit.org authored
http://trac.webkit.org/changeset/154804 https://bugs.webkit.org/show_bug.cgi?id=120477 Broke Windows build (assumes LLInt features not enabled on this build) (Requested by bfulgham on #webkit). * CMakeLists.txt: * GNUmakefile.list.am: * JavaScriptCore.vcxproj/JavaScriptCore.vcxproj: * JavaScriptCore.xcodeproj/project.pbxproj: * Target.pri: * bytecode/CodeBlock.cpp: (JSC::CodeBlock::linkIncomingCall): (JSC::CodeBlock::unlinkIncomingCalls): (JSC::CodeBlock::reoptimize): (JSC::ProgramCodeBlock::replacement): (JSC::EvalCodeBlock::replacement): (JSC::FunctionCodeBlock::replacement): (JSC::ProgramCodeBlock::compileOptimized): (JSC::ProgramCodeBlock::replaceWithDeferredOptimizedCode): (JSC::EvalCodeBlock::compileOptimized): (JSC::EvalCodeBlock::replaceWithDeferredOptimizedCode): (JSC::FunctionCodeBlock::compileOptimized): (JSC::FunctionCodeBlock::replaceWithDeferredOptimizedCode): (JSC::ProgramCodeBlock::jitCompileImpl): (JSC::EvalCodeBlock::jitCompileImpl): (JSC::FunctionCodeBlock::jitCompileImpl): * bytecode/CodeBlock.h: (JSC::CodeBlock::jitType): (JSC::CodeBlock::jitCompile): * bytecode/DeferredCompilationCallback.cpp: Removed. * bytecode/DeferredCompilationCallback.h: Removed. * dfg/DFGDriver.cpp: (JSC::DFG::compile): (JSC::DFG::tryCompile): (JSC::DFG::tryCompileFunction): (JSC::DFG::tryFinalizePlan): * dfg/DFGDriver.h: (JSC::DFG::tryCompile): (JSC::DFG::tryCompileFunction): (JSC::DFG::tryFinalizePlan): * dfg/DFGFailedFinalizer.cpp: (JSC::DFG::FailedFinalizer::finalize): (JSC::DFG::FailedFinalizer::finalizeFunction): * dfg/DFGFailedFinalizer.h: * dfg/DFGFinalizer.h: * dfg/DFGJITFinalizer.cpp: (JSC::DFG::JITFinalizer::finalize): (JSC::DFG::JITFinalizer::finalizeFunction): * dfg/DFGJITFinalizer.h: * dfg/DFGOSRExitPreparation.cpp: (JSC::DFG::prepareCodeOriginForOSRExit): * dfg/DFGOperations.cpp: * dfg/DFGPlan.cpp: (JSC::DFG::Plan::Plan): (JSC::DFG::Plan::compileInThreadImpl): (JSC::DFG::Plan::finalize): * dfg/DFGPlan.h: * dfg/DFGSpeculativeJIT32_64.cpp: (JSC::DFG::SpeculativeJIT::compile): * dfg/DFGWorklist.cpp: (JSC::DFG::Worklist::completeAllReadyPlansForVM): (JSC::DFG::Worklist::runThread): * ftl/FTLJITFinalizer.cpp: (JSC::FTL::JITFinalizer::finalize): (JSC::FTL::JITFinalizer::finalizeFunction): * ftl/FTLJITFinalizer.h: * heap/Heap.h: * interpreter/Interpreter.cpp: (JSC::Interpreter::execute): (JSC::Interpreter::executeCall): (JSC::Interpreter::executeConstruct): (JSC::Interpreter::prepareForRepeatCall): * jit/JITDriver.h: Added. (JSC::jitCompileIfAppropriateImpl): (JSC::jitCompileFunctionIfAppropriateImpl): (JSC::jitCompileIfAppropriate): (JSC::jitCompileFunctionIfAppropriate): * jit/JITStubs.cpp: (JSC::DEFINE_STUB_FUNCTION): (JSC::jitCompileFor): (JSC::lazyLinkFor): * jit/JITToDFGDeferredCompilationCallback.cpp: Removed. * jit/JITToDFGDeferredCompilationCallback.h: Removed. * llint/LLIntEntrypoints.cpp: (JSC::LLInt::getFunctionEntrypoint): (JSC::LLInt::getEvalEntrypoint): (JSC::LLInt::getProgramEntrypoint): * llint/LLIntEntrypoints.h: (JSC::LLInt::getEntrypoint): * llint/LLIntSlowPaths.cpp: (JSC::LLInt::jitCompileAndSetHeuristics): (JSC::LLInt::setUpCall): * runtime/ArrayPrototype.cpp: (JSC::isNumericCompareFunction): * runtime/CommonSlowPaths.cpp: * runtime/CompilationResult.cpp: (WTF::printInternal): * runtime/CompilationResult.h: * runtime/Executable.cpp: (JSC::EvalExecutable::compileOptimized): (JSC::EvalExecutable::jitCompile): (JSC::EvalExecutable::compileInternal): (JSC::EvalExecutable::replaceWithDeferredOptimizedCode): (JSC::ProgramExecutable::compileOptimized): (JSC::ProgramExecutable::jitCompile): (JSC::ProgramExecutable::compileInternal): (JSC::ProgramExecutable::replaceWithDeferredOptimizedCode): (JSC::FunctionExecutable::compileOptimizedForCall): (JSC::FunctionExecutable::compileOptimizedForConstruct): (JSC::FunctionExecutable::jitCompileForCall): (JSC::FunctionExecutable::jitCompileForConstruct): (JSC::FunctionExecutable::produceCodeBlockFor): (JSC::FunctionExecutable::compileForCallInternal): (JSC::FunctionExecutable::replaceWithDeferredOptimizedCodeForCall): (JSC::FunctionExecutable::compileForConstructInternal): (JSC::FunctionExecutable::replaceWithDeferredOptimizedCodeForConstruct): * runtime/Executable.h: (JSC::ExecutableBase::offsetOfJITCodeWithArityCheckFor): (JSC::ExecutableBase::offsetOfNumParametersFor): (JSC::ExecutableBase::catchRoutineFor): (JSC::EvalExecutable::compile): (JSC::ProgramExecutable::compile): (JSC::FunctionExecutable::compileForCall): (JSC::FunctionExecutable::compileForConstruct): (JSC::FunctionExecutable::compileFor): (JSC::FunctionExecutable::compileOptimizedFor): (JSC::FunctionExecutable::replaceWithDeferredOptimizedCodeFor): (JSC::FunctionExecutable::jitCompileFor): * runtime/ExecutionHarness.h: Added. (JSC::prepareForExecutionImpl): (JSC::prepareFunctionForExecutionImpl): (JSC::installOptimizedCode): (JSC::prepareForExecution): (JSC::prepareFunctionForExecution): (JSC::replaceWithDeferredOptimizedCode): git-svn-id: http://svn.webkit.org/repository/webkit/trunk@154814 268f45cc-cd09-0410-ab3c-d52691b4dbfc
-
- 28 Aug, 2013 1 commit
-
-
fpizlo@apple.com authored
https://bugs.webkit.org/show_bug.cgi?id=120326 Reviewed by Oliver Hunt. Previously Executable owned the code for generating JIT code; you always had to go through Executable. But often you also had to go through CodeBlock, because ScriptExecutable couldn't have virtual methods, but CodeBlock could. So you'd ask CodeBlock to do something, which would dispatch through a virtual method that would select the appropriate Executable subtype's method. This all meant that the same code would often be duplicated, because most of the work needed to compile something was identical regardless of code type. But then we tried to fix this, by having templatized helpers in ExecutionHarness.h and JITDriver.h. The result was that if you wanted to find out what happened when you asked for something to be compiled, you'd go on a wild ride that started with CodeBlock, touched upon Executable, and then ricocheted into either ExecutionHarness or JITDriver (likely both). Another awkwardness was that for concurrent compiles, the DFG::Worklist had super-special inside knowledge of what JITStubs.cpp's cti_optimize would have done once the compilation finished. Also, most of the DFG JIT drivers assumed that they couldn't install the JITCode into the CodeBlock directly - instead they would return it via a reference, which happened to be a reference to the JITCode pointer in Executable. This was super weird. Finally, there was no notion of compiling code into a special CodeBlock that wasn't used for handling calls into an Executable. I'd like this for FTL OSR entry. This patch solves these problems by reducing all of that complexity into just three primitives: - Executable::newCodeBlock(). This gives you a new code block, either for call or for construct, and either to serve as the baseline code or the optimized code. The new code block is then owned by the caller; Executable doesn't register it anywhere. The new code block has no JITCode and isn't callable, but it has all of the bytecode. - CodeBlock::prepareForExecution(). This takes the CodeBlock's bytecode and produces a JITCode, and then installs the JITCode into the CodeBlock. This method takes a JITType, and always compiles with that JIT. If you ask for JITCode::InterpreterThunk then you'll get JITCode that just points to the LLInt entrypoints. Once this returns, it is possible to call into the CodeBlock if you do so manually - but the Executable still won't know about it so JS calls to that Executable will still be routed to whatever CodeBlock is associated with the Executable. - Executable::installCode(). This takes a CodeBlock and makes it the code-for- entry for that Executable. This involves unlinking the Executable's last CodeBlock, if there was one. This also tells the GC about any effect on memory usage and does a bunch of weird data structure rewiring, since Executable caches some of CodeBlock's fields for the benefit of virtual call fast paths. This functionality is then wrapped around three convenience methods: - Executable::prepareForExecution(). If there is no code block for that Executable, then one is created (newCodeBlock()), compiled (CodeBlock::prepareForExecution()) and installed (installCode()). - CodeBlock::newReplacement(). Asks the Executable for a new CodeBlock that can serve as an optimized replacement of the current one. - CodeBlock::install(). Asks the Executable to install this code block. This patch allows me to kill *a lot* of code and to remove a lot of specializations for functions vs. not-functions, and a lot of places where we pass around JITCode references and such. ExecutionHarness and JITDriver are both gone. Overall this patch has more red than green. It also allows me to work on FTL OSR entry and tier-up: - FTL tier-up: this will involve DFGOperations.cpp asking the DFG::Worklist to do some compilation, but it will require the DFG::Worklist to do something different than what JITStubs.cpp would want, once the compilation finishes. This patch introduces a callback mechanism for that purpose. - FTL OSR entry: this will involve creating a special auto-jettisoned CodeBlock that is used only for FTL OSR entry. The new set of primitives allows for this: Executable can vend you a fresh new CodeBlock, and you can ask that CodeBlock to compile itself with any JIT of your choosing. Or you can take that CodeBlock and compile it yourself. Previously the act of producing a CodeBlock-for-optimization and the act of compiling code for it were tightly coupled; now you can separate them and you can create such auto-jettisoned CodeBlocks that are used for a one-shot OSR entry. * CMakeLists.txt: * GNUmakefile.list.am: * JavaScriptCore.vcxproj/JavaScriptCore.vcxproj: * JavaScriptCore.xcodeproj/project.pbxproj: * Target.pri: * bytecode/CodeBlock.cpp: (JSC::CodeBlock::prepareForExecution): (JSC::CodeBlock::install): (JSC::CodeBlock::newReplacement): (JSC::FunctionCodeBlock::jettisonImpl): (JSC::CodeBlock::setOptimizationThresholdBasedOnCompilationResult): * bytecode/CodeBlock.h: (JSC::CodeBlock::hasBaselineJITProfiling): * bytecode/DeferredCompilationCallback.cpp: Added. (JSC::DeferredCompilationCallback::DeferredCompilationCallback): (JSC::DeferredCompilationCallback::~DeferredCompilationCallback): * bytecode/DeferredCompilationCallback.h: Added. * dfg/DFGDriver.cpp: (JSC::DFG::tryCompile): * dfg/DFGDriver.h: (JSC::DFG::tryCompile): * dfg/DFGFailedFinalizer.cpp: (JSC::DFG::FailedFinalizer::finalize): (JSC::DFG::FailedFinalizer::finalizeFunction): * dfg/DFGFailedFinalizer.h: * dfg/DFGFinalizer.h: * dfg/DFGJITFinalizer.cpp: (JSC::DFG::JITFinalizer::finalize): (JSC::DFG::JITFinalizer::finalizeFunction): * dfg/DFGJITFinalizer.h: * dfg/DFGOSRExitPreparation.cpp: (JSC::DFG::prepareCodeOriginForOSRExit): * dfg/DFGOperations.cpp: * dfg/DFGPlan.cpp: (JSC::DFG::Plan::Plan): (JSC::DFG::Plan::compileInThreadImpl): (JSC::DFG::Plan::finalizeWithoutNotifyingCallback): (JSC::DFG::Plan::finalizeAndNotifyCallback): * dfg/DFGPlan.h: * dfg/DFGWorklist.cpp: (JSC::DFG::Worklist::completeAllReadyPlansForVM): * ftl/FTLJITFinalizer.cpp: (JSC::FTL::JITFinalizer::finalize): (JSC::FTL::JITFinalizer::finalizeFunction): * ftl/FTLJITFinalizer.h: * heap/Heap.h: (JSC::Heap::isDeferred): * interpreter/Interpreter.cpp: (JSC::Interpreter::execute): (JSC::Interpreter::executeCall): (JSC::Interpreter::executeConstruct): (JSC::Interpreter::prepareForRepeatCall): * jit/JITDriver.h: Removed. * jit/JITStubs.cpp: (JSC::DEFINE_STUB_FUNCTION): (JSC::jitCompileFor): (JSC::lazyLinkFor): * jit/JITToDFGDeferredCompilationCallback.cpp: Added. (JSC::JITToDFGDeferredCompilationCallback::JITToDFGDeferredCompilationCallback): (JSC::JITToDFGDeferredCompilationCallback::~JITToDFGDeferredCompilationCallback): (JSC::JITToDFGDeferredCompilationCallback::create): (JSC::JITToDFGDeferredCompilationCallback::compilationDidComplete): * jit/JITToDFGDeferredCompilationCallback.h: Added. * llint/LLIntEntrypoints.cpp: (JSC::LLInt::setFunctionEntrypoint): (JSC::LLInt::setEvalEntrypoint): (JSC::LLInt::setProgramEntrypoint): * llint/LLIntEntrypoints.h: * llint/LLIntSlowPaths.cpp: (JSC::LLInt::jitCompileAndSetHeuristics): (JSC::LLInt::setUpCall): * runtime/ArrayPrototype.cpp: (JSC::isNumericCompareFunction): * runtime/CommonSlowPaths.cpp: * runtime/CompilationResult.cpp: (WTF::printInternal): * runtime/CompilationResult.h: * runtime/Executable.cpp: (JSC::ScriptExecutable::installCode): (JSC::ScriptExecutable::newCodeBlockFor): (JSC::ScriptExecutable::newReplacementCodeBlockFor): (JSC::ScriptExecutable::prepareForExecutionImpl): * runtime/Executable.h: (JSC::ScriptExecutable::prepareForExecution): (JSC::FunctionExecutable::jettisonOptimizedCodeFor): * runtime/ExecutionHarness.h: Removed. git-svn-id: http://svn.webkit.org/repository/webkit/trunk@154804 268f45cc-cd09-0410-ab3c-d52691b4dbfc
-
- 24 Jul, 2013 4 commits
-
-
oliver@apple.com authored
https://bugs.webkit.org/show_bug.cgi?id=117376 Source/JavaScriptCore: Reviewed by Mark Hahnenberg. Leave the lock early to prevent a deadlock beneath get(). * dfg/DFGByteCodeParser.cpp: (JSC::DFG::ByteCodeParser::parseBlock): Source/WTF: Reviewed by Mark Hahnenberg. I've often wanted to leave a lock early. Now I have that power! * wtf/Locker.h: (WTF::Locker::Locker): (WTF::Locker::~Locker): (Locker): (WTF::Locker::unlockEarly): (WTF::Locker::lock): git-svn-id: http://svn.webkit.org/repository/webkit/trunk@153216 268f45cc-cd09-0410-ab3c-d52691b4dbfc
-
oliver@apple.com authored
https://bugs.webkit.org/show_bug.cgi?id=116350 Reviewed by Oliver Hunt. This refactors compilation so that: - JITStubs knows exactly what the result of compilation was. For example, if compilation was deferred, it will now know this. - The set of things that has to happen to install compiled code is now factored out into JSC::installOptimizedCode(). - A bunch of the code in Executable.cpp is now made more common to reduce code duplication. For example, the heap heuristics stuff is now in one place. * JavaScriptCore.xcodeproj/project.pbxproj: * bytecode/CodeBlock.cpp: (JSC::ProgramCodeBlock::compileOptimized): (JSC::ProgramCodeBlock::replaceWithDeferredOptimizedCode): (JSC): (JSC::EvalCodeBlock::compileOptimized): (JSC::EvalCodeBlock::replaceWithDeferredOptimizedCode): (JSC::FunctionCodeBlock::compileOptimized): (JSC::FunctionCodeBlock::replaceWithDeferredOptimizedCode): (JSC::ProgramCodeBlock::jitCompileImpl): (JSC::EvalCodeBlock::jitCompileImpl): (JSC::FunctionCodeBlock::jitCompileImpl): * bytecode/CodeBlock.h: (CodeBlock): (JSC::CodeBlock::jitCompile): (ProgramCodeBlock): (EvalCodeBlock): (FunctionCodeBlock): * dfg/DFGDesiredIdentifiers.cpp: (JSC::DFG::DesiredIdentifiers::numberOfIdentifiers): (DFG): (JSC::DFG::DesiredIdentifiers::at): * dfg/DFGDesiredIdentifiers.h: (JSC): (DesiredIdentifiers): * dfg/DFGDriver.cpp: (JSC::DFG::compile): (JSC::DFG::tryCompile): (JSC::DFG::tryCompileFunction): (JSC::DFG::tryFinalizePlan): (DFG): * dfg/DFGDriver.h: (DFG): (JSC::DFG::tryCompile): (JSC::DFG::tryCompileFunction): (JSC::DFG::tryFinalizePlan): * dfg/DFGGraph.cpp: (JSC::DFG::Graph::Graph): * dfg/DFGJITFinalizer.cpp: (JSC::DFG::JITFinalizer::finalizeCommon): * dfg/DFGPlan.cpp: (JSC::DFG::Plan::Plan): (JSC::DFG::Plan::compileInThread): (JSC::DFG::Plan::reallyAdd): * dfg/DFGPlan.h: (JSC): (Plan): (DFG): * ftl/FTLJITFinalizer.cpp: (JSC::FTL::JITFinalizer::finalizeFunction): * jit/JITDriver.h: (JSC::jitCompileIfAppropriateImpl): (JSC::jitCompileFunctionIfAppropriateImpl): (JSC): (JSC::jitCompileIfAppropriate): (JSC::jitCompileFunctionIfAppropriate): * jit/JITStubs.cpp: (JSC::DEFINE_STUB_FUNCTION): * llint/LLIntSlowPaths.cpp: (JSC::LLInt::jitCompileAndSetHeuristics): * runtime/CompilationResult.cpp: Added. (WTF): (WTF::printInternal): * runtime/CompilationResult.h: Added. (JSC): (WTF): * runtime/Executable.cpp: (JSC::EvalExecutable::compileOptimized): (JSC::EvalExecutable::jitCompile): (JSC::EvalExecutable::compileInternal): (JSC::EvalExecutable::replaceWithDeferredOptimizedCode): (JSC): (JSC::ProgramExecutable::compileOptimized): (JSC::ProgramExecutable::jitCompile): (JSC::ProgramExecutable::compileInternal): (JSC::ProgramExecutable::replaceWithDeferredOptimizedCode): (JSC::FunctionExecutable::compileOptimizedForCall): (JSC::FunctionExecutable::compileOptimizedForConstruct): (JSC::FunctionExecutable::jitCompileForCall): (JSC::FunctionExecutable::jitCompileForConstruct): (JSC::FunctionExecutable::compileForCallInternal): (JSC::FunctionExecutable::replaceWithDeferredOptimizedCodeForCall): (JSC::FunctionExecutable::compileForConstructInternal): (JSC::FunctionExecutable::replaceWithDeferredOptimizedCodeForConstruct): * runtime/Executable.h: (ScriptExecutable): (EvalExecutable): (ProgramExecutable): (FunctionExecutable): (JSC::FunctionExecutable::compileOptimizedFor): (JSC::FunctionExecutable::replaceWithDeferredOptimizedCodeFor): (JSC::FunctionExecutable::jitCompileFor): * runtime/ExecutionHarness.h: (JSC::prepareForExecutionImpl): (JSC::prepareFunctionForExecutionImpl): (JSC): (JSC::installOptimizedCode): (JSC::prepareForExecution): (JSC::prepareFunctionForExecution): (JSC::replaceWithDeferredOptimizedCode): git-svn-id: http://svn.webkit.org/repository/webkit/trunk@153165 268f45cc-cd09-0410-ab3c-d52691b4dbfc
-
oliver@apple.com authored
fourthTier: put DFG data into a DFG::JITCode, and put common DFG and FTL data into something accessible from both DFG::JITCode and FTL::JITCode https://bugs.webkit.org/show_bug.cgi?id=113905 Reviewed by Geoffrey Garen. This removes one pointer from CodeBlock. It also gives us a framework for having JITType-specific data in CodeBlock, by putting it into the appropriate JITCode class (either DFG::JITCode or FTL::JITCode). And it allows us to have DFG and FTL share some common data, via DFG::CommonData, which is stored in both DFG::JITCode and FTL::JITCode and always accessible via JITCode::dfgCommon(). * CMakeLists.txt: * GNUmakefile.list.am: * JavaScriptCore.xcodeproj/project.pbxproj: * Target.pri: * bytecode/CodeBlock.cpp: (JSC): (JSC::CodeBlock::dumpBytecode): (JSC::CodeBlock::visitAggregate): (JSC::CodeBlock::performTracingFixpointIteration): (JSC::CodeBlock::finalizeUnconditionally): (JSC::CodeBlock::stronglyVisitWeakReferences): (JSC::CodeBlock::shrinkToFit): (JSC::CodeBlock::tallyFrequentExitSites): * bytecode/CodeBlock.h: (CodeBlock): (JSC::CodeBlock::setJITCode): (JSC::CodeBlock::shouldImmediatelyAssumeLivenessDuringScan): (JSC::DFGCodeBlocks::mark): * dfg/DFGAssemblyHelpers.h: * dfg/DFGCommonData.cpp: Added. (DFG): (JSC::DFG::CommonData::notifyCompilingStructureTransition): (JSC::DFG::CommonData::shrinkToFit): * dfg/DFGCommonData.h: Added. (JSC): (DFG): (JSC::DFG::WeakReferenceTransition::WeakReferenceTransition): (WeakReferenceTransition): (CommonData): (JSC::DFG::CommonData::CommonData): * dfg/DFGDriver.cpp: (JSC::DFG::compile): (JSC::DFG::tryCompile): (JSC::DFG::tryCompileFunction): * dfg/DFGDriver.h: (DFG): (JSC::DFG::tryCompile): (JSC::DFG::tryCompileFunction): * dfg/DFGGraph.h: (Graph): * dfg/DFGJITCode.cpp: Added. (DFG): (JSC::DFG::JITCode::JITCode): (JSC::DFG::JITCode::~JITCode): (JSC::DFG::JITCode::dfgCommon): (JSC::DFG::JITCode::dfg): (JSC::DFG::JITCode::shrinkToFit): * dfg/DFGJITCode.h: Added. (DFG): (JITCode): (JSC::DFG::JITCode::appendOSREntryData): (JSC::DFG::JITCode::osrEntryDataForBytecodeIndex): (JSC::DFG::JITCode::appendOSRExit): (JSC::DFG::JITCode::lastOSRExit): (JSC::DFG::JITCode::appendSpeculationRecovery): (JSC::DFG::JITCode::appendWatchpoint): * dfg/DFGJITCompiler.cpp: (JSC::DFG::JITCompiler::JITCompiler): (JSC::DFG::JITCompiler::linkOSRExits): (JSC::DFG::JITCompiler::link): (JSC::DFG::JITCompiler::compile): (JSC::DFG::JITCompiler::compileFunction): * dfg/DFGJITCompiler.h: (JITCompiler): (JSC::DFG::JITCompiler::addWeakReference): (JSC::DFG::JITCompiler::noticeOSREntry): (JSC::DFG::JITCompiler::jitCode): * dfg/DFGOSREntry.cpp: (JSC::DFG::prepareOSREntry): * dfg/DFGOSRExit.h: (OSRExit): * dfg/DFGOSRExitCompiler.cpp: * dfg/DFGSpeculativeJIT.cpp: (JSC::DFG::SpeculativeJIT::SpeculativeJIT): (JSC::DFG::SpeculativeJIT::backwardSpeculationCheck): (JSC::DFG::SpeculativeJIT::speculationWatchpoint): (JSC::DFG::SpeculativeJIT::convertLastOSRExitToForward): * dfg/DFGSpeculativeJIT32_64.cpp: (JSC::DFG::SpeculativeJIT::compile): * dfg/DFGSpeculativeJIT64.cpp: (JSC::DFG::SpeculativeJIT::compile): * dfg/DFGVariableEventStream.cpp: * ftl/FTLCompile.cpp: (JSC::FTL::compile): * ftl/FTLJITCode.cpp: (JSC::FTL::JITCode::JITCode): (JSC::FTL::JITCode::~JITCode): (FTL): (JSC::FTL::JITCode::initializeCode): (JSC::FTL::JITCode::addressForCall): (JSC::FTL::JITCode::executableAddressAtOffset): (JSC::FTL::JITCode::dataAddressAtOffset): (JSC::FTL::JITCode::offsetOf): (JSC::FTL::JITCode::size): (JSC::FTL::JITCode::contains): (JSC::FTL::JITCode::ftl): (JSC::FTL::JITCode::dfgCommon): * ftl/FTLJITCode.h: (JITCode): * ftl/FTLLowerDFGToLLVM.cpp: (JSC::FTL::LowerDFGToLLVM::compileStructureTransitionWatchpoint): (JSC::FTL::LowerDFGToLLVM::compilePutStructure): (JSC::FTL::LowerDFGToLLVM::compilePhantomPutStructure): (JSC::FTL::LowerDFGToLLVM::addWeakReference): (LowerDFGToLLVM): (JSC::FTL::LowerDFGToLLVM::weakPointer): * ftl/FTLState.cpp: (FTL): (JSC::FTL::State::State): (JSC::FTL::State::dumpState): * ftl/FTLState.h: (State): * heap/DFGCodeBlocks.cpp: (JSC::DFGCodeBlocks::~DFGCodeBlocks): (JSC::DFGCodeBlocks::jettison): (JSC::DFGCodeBlocks::clearMarks): (JSC::DFGCodeBlocks::deleteUnmarkedJettisonedCodeBlocks): (JSC::DFGCodeBlocks::traceMarkedCodeBlocks): * jit/JITCode.cpp: (JSC::JITCode::dfgCommon): (JSC): (JSC::JITCode::dfg): (JSC::JITCode::ftl): (JSC::DirectJITCode::DirectJITCode): (JSC::DirectJITCode::initializeCodeRef): (JSC::DirectJITCode::addressForCall): (JSC::DirectJITCode::executableAddressAtOffset): (JSC::DirectJITCode::dataAddressAtOffset): (JSC::DirectJITCode::offsetOf): (JSC::DirectJITCode::size): (JSC::DirectJITCode::contains): * jit/JITCode.h: (DFG): (FTL): (JSC): (JITCode): (DirectJITCode): git-svn-id: http://svn.webkit.org/repository/webkit/trunk@153116 268f45cc-cd09-0410-ab3c-d52691b4dbfc
-
oliver@apple.com authored
fourthTier: JITCode should abstract exactly how the JIT code is structured and where it was allocated https://bugs.webkit.org/show_bug.cgi?id=113437 Reviewed by Mark Hahnenberg. JITCode is now a virtual base class, which will allow different JITs to have radically different memory allocation and management conventions in the future. It will also make it easier to store JIT-specific meta-data in CodeBlock just by putting it into an appropriate JITCode subclass. For now there is one subclass, DirectJITCode, which just behaves like JITCode used to behave. * assembler/RepatchBuffer.h: (JSC::RepatchBuffer::RepatchBuffer): * bytecode/CodeBlock.cpp: (JSC::CodeBlock::resetStubInternal): (JSC::CodeBlock::bytecodeOffset): (JSC::CodeBlock::codeOriginForReturn): * bytecode/CodeBlock.h: (JSC::CodeBlock::setJITCode): (JSC::CodeBlock::getJITCode): (JSC::CodeBlock::getJITType): (CodeBlock): * dfg/DFGDriver.cpp: (JSC::DFG::compile): (JSC::DFG::tryCompile): (JSC::DFG::tryCompileFunction): * dfg/DFGDriver.h: (DFG): (JSC::DFG::tryCompile): (JSC::DFG::tryCompileFunction): * dfg/DFGJITCompiler.cpp: (JSC::DFG::JITCompiler::compile): (JSC::DFG::JITCompiler::compileFunction): * dfg/DFGJITCompiler.h: (JITCompiler): * dfg/DFGOSREntry.cpp: (JSC::DFG::prepareOSREntry): * dfg/DFGOSRExit.cpp: (JSC::DFG::OSRExit::codeLocationForRepatch): * dfg/DFGOSRExitCompiler32_64.cpp: (JSC::DFG::OSRExitCompiler::compileExit): * dfg/DFGOSRExitCompiler64.cpp: (JSC::DFG::OSRExitCompiler::compileExit): * dfg/DFGOperations.cpp: * interpreter/Interpreter.cpp: (JSC::Interpreter::execute): (JSC::Interpreter::executeCall): (JSC::Interpreter::executeConstruct): * jit/JIT.cpp: (JSC::JIT::privateCompile): * jit/JIT.h: (JSC::JIT::compile): (JIT): * jit/JITCode.cpp: (JSC): (JSC::JITCode::JITCode): (JSC::JITCode::~JITCode): (JSC::JITCode::execute): (JSC::JITCode::hostFunction): (JSC::DirectJITCode::DirectJITCode): (JSC::DirectJITCode::~DirectJITCode): (JSC::DirectJITCode::addressForCall): (JSC::DirectJITCode::executableAddressAtOffset): (JSC::DirectJITCode::dataAddressAtOffset): (JSC::DirectJITCode::offsetOf): (JSC::DirectJITCode::size): (JSC::DirectJITCode::contains): * jit/JITCode.h: (JSC): (JITCode): (JSC::JITCode::bottomTierJIT): (JSC::JITCode::topTierJIT): (JSC::JITCode::nextTierJIT): (JSC::JITCode::isOptimizingJIT): (JSC::JITCode::isBaselineCode): (JSC::JITCode::jitType): (JSC::JITCode::jitTypeFor): (JSC::JITCode::executableAddress): (JSC::JITCode::start): (JSC::JITCode::end): (DirectJITCode): * jit/JITDriver.h: (JSC::jitCompileIfAppropriate): (JSC::jitCompileFunctionIfAppropriate): * jit/JITStubs.cpp: (JSC::lazyLinkFor): (JSC::DEFINE_STUB_FUNCTION): * jit/ThunkGenerators.cpp: (JSC::virtualForGenerator): * llint/LLIntEntrypoints.cpp: (JSC::LLInt::getFunctionEntrypoint): (JSC::LLInt::getEvalEntrypoint): (JSC::LLInt::getProgramEntrypoint): * llint/LLIntEntrypoints.h: (JSC): (LLInt): (JSC::LLInt::getEntrypoint): * llint/LLIntSlowPaths.cpp: (JSC::LLInt::jitCompileAndSetHeuristics): (JSC::LLInt::entryOSR): (JSC::LLInt::LLINT_SLOW_PATH_DECL): * runtime/Executable.cpp: (JSC::EvalExecutable::compileInternal): (JSC::ProgramExecutable::compileInternal): (JSC::FunctionExecutable::compileForCallInternal): (JSC::FunctionExecutable::compileForConstructInternal): * runtime/Executable.h: (JSC::ExecutableBase::generatedJITCodeForCall): (JSC::ExecutableBase::generatedJITCodeForConstruct): (JSC::ExecutableBase::generatedJITCodeFor): (ExecutableBase): (JSC::ExecutableBase::hostCodeEntryFor): (JSC::ExecutableBase::jsCodeEntryFor): (JSC::ExecutableBase::jsCodeWithArityCheckEntryFor): (JSC::NativeExecutable::create): (JSC::NativeExecutable::finishCreation): (JSC::EvalExecutable::generatedJITCode): (JSC::ProgramExecutable::generatedJITCode): * runtime/ExecutionHarness.h: (JSC::prepareForExecution): (JSC::prepareFunctionForExecution): git-svn-id: http://svn.webkit.org/repository/webkit/trunk@153113 268f45cc-cd09-0410-ab3c-d52691b4dbfc
-
- 18 Apr, 2013 1 commit
-
-
ggaren@apple.com authored
https://bugs.webkit.org/show_bug.cgi?id=114777 Reviewed by Phil Pizlo. ../JavaScriptCore: * API/APICast.h: (JSC): (toJS): (toRef): * API/APIShims.h: (JSC::APIEntryShimWithoutLock::APIEntryShimWithoutLock): (APIEntryShimWithoutLock): (JSC::APIEntryShim::APIEntryShim): (APIEntryShim): (JSC::APIEntryShim::~APIEntryShim): (JSC::APICallbackShim::APICallbackShim): (JSC::APICallbackShim::~APICallbackShim): (APICallbackShim): * API/JSAPIWrapperObject.h: (JSAPIWrapperObject): * API/JSAPIWrapperObject.mm: (JSC::::createStructure): (JSC::JSAPIWrapperObject::JSAPIWrapperObject): (JSC::JSAPIWrapperObject::finishCreation): (JSC::JSAPIWrapperObject::visitChildren): * API/JSBase.cpp: (JSGarbageCollect): (JSReportExtraMemoryCost): (JSSynchronousGarbageCollectForDebugging): * API/JSCallbackConstructor.cpp: (JSC::JSCallbackConstructor::JSCallbackConstructor): (JSC::JSCallbackConstructor::finishCreation): * API/JSCallbackConstructor.h: (JSC::JSCallbackConstructor::createStructure): * API/JSCallbackFunction.cpp: (JSC::JSCallbackFunction::finishCreation): (JSC::JSCallbackFunction::create): * API/JSCallbackFunction.h: (JSCallbackFunction): (JSC::JSCallbackFunction::createStructure): * API/JSCallbackObject.cpp: (JSC::::create): (JSC::::createStructure): * API/JSCallbackObject.h: (JSC::JSCallbackObjectData::setPrivateProperty): (JSC::JSCallbackObjectData::JSPrivatePropertyMap::setPrivateProperty): (JSCallbackObject): (JSC::JSCallbackObject::setPrivateProperty): * API/JSCallbackObjectFunctions.h: (JSC::::JSCallbackObject): (JSC::::finishCreation): (JSC::::put): (JSC::::staticFunctionGetter): * API/JSClassRef.cpp: (OpaqueJSClassContextData::OpaqueJSClassContextData): (OpaqueJSClass::contextData): (OpaqueJSClass::prototype): * API/JSClassRef.h: (OpaqueJSClassContextData): * API/JSContext.mm: (-[JSContext setException:]): (-[JSContext initWithGlobalContextRef:]): (+[JSContext contextWithGlobalContextRef:]): * API/JSContextRef.cpp: (JSContextGroupCreate): (JSContextGroupRelease): (JSGlobalContextCreate): (JSGlobalContextCreateInGroup): (JSGlobalContextRetain): (JSGlobalContextRelease): (JSContextGetGroup): (JSContextCreateBacktrace): * API/JSObjectRef.cpp: (JSObjectMake): (JSObjectMakeConstructor): (JSObjectMakeFunction): (JSObjectSetPrototype): (JSObjectHasProperty): (JSObjectGetProperty): (JSObjectSetProperty): (JSObjectDeleteProperty): (JSObjectGetPrivateProperty): (JSObjectSetPrivateProperty): (JSObjectDeletePrivateProperty): (OpaqueJSPropertyNameArray::OpaqueJSPropertyNameArray): (OpaqueJSPropertyNameArray): (JSObjectCopyPropertyNames): (JSPropertyNameArrayRelease): (JSPropertyNameAccumulatorAddName): * API/JSScriptRef.cpp: (OpaqueJSScript::create): (OpaqueJSScript::vm): (OpaqueJSScript::OpaqueJSScript): (OpaqueJSScript): (parseScript): * API/JSVirtualMachine.mm: (scanExternalObjectGraph): * API/JSVirtualMachineInternal.h: (JSC): * API/JSWrapperMap.mm: (makeWrapper): * API/ObjCCallbackFunction.h: (JSC::ObjCCallbackFunction::createStructure): * API/ObjCCallbackFunction.mm: (JSC::ObjCCallbackFunction::create): * API/OpaqueJSString.cpp: (OpaqueJSString::identifier): * API/OpaqueJSString.h: (JSC): (OpaqueJSString): * GNUmakefile.list.am: * JSCTypedArrayStubs.h: (JSC): * JavaScriptCore.order: * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreExports.def: * JavaScriptCore.vcxproj/JavaScriptCore.vcxproj: * JavaScriptCore.vcxproj/JavaScriptCore.vcxproj.filters: * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExports.def.in: * JavaScriptCore.xcodeproj/project.pbxproj: * KeywordLookupGenerator.py: (Trie.printSubTreeAsC): * Target.pri: * assembler/ARMAssembler.cpp: (JSC::ARMAssembler::executableCopy): * assembler/ARMAssembler.h: (ARMAssembler): * assembler/AssemblerBuffer.h: (JSC::AssemblerBuffer::executableCopy): * assembler/AssemblerBufferWithConstantPool.h: (JSC::AssemblerBufferWithConstantPool::executableCopy): * assembler/LinkBuffer.cpp: (JSC::LinkBuffer::linkCode): * assembler/LinkBuffer.h: (JSC): (JSC::LinkBuffer::LinkBuffer): (LinkBuffer): * assembler/MIPSAssembler.h: (JSC::MIPSAssembler::executableCopy): * assembler/SH4Assembler.h: (JSC::SH4Assembler::executableCopy): * assembler/X86Assembler.h: (JSC::X86Assembler::executableCopy): (JSC::X86Assembler::X86InstructionFormatter::executableCopy): * bytecode/CallLinkInfo.cpp: (JSC::CallLinkInfo::unlink): * bytecode/CallLinkInfo.h: (CallLinkInfo): * bytecode/CodeBlock.cpp: (JSC::dumpStructure): (JSC::CodeBlock::printStructures): (JSC::CodeBlock::CodeBlock): (JSC::CodeBlock::~CodeBlock): (JSC::CodeBlock::visitStructures): (JSC::CodeBlock::finalizeUnconditionally): (JSC::CodeBlock::createActivation): (JSC::CodeBlock::unlinkCalls): (JSC::CodeBlock::unlinkIncomingCalls): (JSC::CodeBlock::findClosureCallForReturnPC): (JSC::ProgramCodeBlock::jettisonImpl): (JSC::EvalCodeBlock::jettisonImpl): (JSC::FunctionCodeBlock::jettisonImpl): (JSC::CodeBlock::predictedMachineCodeSize): (JSC::CodeBlock::usesOpcode): * bytecode/CodeBlock.h: (JSC::CodeBlock::appendWeakReference): (JSC::CodeBlock::appendWeakReferenceTransition): (JSC::CodeBlock::setJITCode): (JSC::CodeBlock::setGlobalData): (JSC::CodeBlock::vm): (JSC::CodeBlock::valueProfileForBytecodeOffset): (JSC::CodeBlock::addConstant): (JSC::CodeBlock::setConstantRegisters): (CodeBlock): (JSC::CodeBlock::WeakReferenceTransition::WeakReferenceTransition): * bytecode/EvalCodeCache.h: (JSC::EvalCodeCache::getSlow): * bytecode/GetByIdStatus.cpp: (JSC::GetByIdStatus::computeFromLLInt): (JSC::GetByIdStatus::computeForChain): (JSC::GetByIdStatus::computeFor): * bytecode/GetByIdStatus.h: (GetByIdStatus): * bytecode/Instruction.h: (JSC::Instruction::Instruction): * bytecode/ObjectAllocationProfile.h: (JSC::ObjectAllocationProfile::initialize): (JSC::ObjectAllocationProfile::possibleDefaultPropertyCount): * bytecode/PolymorphicAccessStructureList.h: (JSC::PolymorphicAccessStructureList::PolymorphicStubInfo::set): (JSC::PolymorphicAccessStructureList::PolymorphicAccessStructureList): * bytecode/PolymorphicPutByIdList.h: (JSC::PutByIdAccess::transition): (JSC::PutByIdAccess::replace): * bytecode/PreciseJumpTargets.cpp: (JSC::computePreciseJumpTargets): * bytecode/PutByIdStatus.cpp: (JSC::PutByIdStatus::computeFromLLInt): (JSC::PutByIdStatus::computeFor): * bytecode/PutByIdStatus.h: (JSC): (PutByIdStatus): * bytecode/ResolveGlobalStatus.cpp: (JSC::computeForStructure): * bytecode/SamplingTool.cpp: (JSC::SamplingTool::notifyOfScope): * bytecode/SamplingTool.h: (JSC::ScriptSampleRecord::ScriptSampleRecord): (SamplingTool): * bytecode/StructureStubInfo.h: (JSC::StructureStubInfo::initGetByIdSelf): (JSC::StructureStubInfo::initGetByIdProto): (JSC::StructureStubInfo::initGetByIdChain): (JSC::StructureStubInfo::initPutByIdTransition): (JSC::StructureStubInfo::initPutByIdReplace): * bytecode/UnlinkedCodeBlock.cpp: (JSC::generateFunctionCodeBlock): (JSC::UnlinkedFunctionExecutable::UnlinkedFunctionExecutable): (JSC::UnlinkedFunctionExecutable::link): (JSC::UnlinkedFunctionExecutable::fromGlobalCode): (JSC::UnlinkedFunctionExecutable::codeBlockFor): (JSC::UnlinkedCodeBlock::UnlinkedCodeBlock): * bytecode/UnlinkedCodeBlock.h: (JSC::UnlinkedFunctionExecutable::create): (UnlinkedFunctionExecutable): (JSC::UnlinkedFunctionExecutable::finishCreation): (JSC::UnlinkedFunctionExecutable::createStructure): (JSC::UnlinkedCodeBlock::addRegExp): (JSC::UnlinkedCodeBlock::addConstant): (JSC::UnlinkedCodeBlock::addFunctionDecl): (JSC::UnlinkedCodeBlock::addFunctionExpr): (JSC::UnlinkedCodeBlock::vm): (UnlinkedCodeBlock): (JSC::UnlinkedCodeBlock::finishCreation): (JSC::UnlinkedGlobalCodeBlock::UnlinkedGlobalCodeBlock): (JSC::UnlinkedProgramCodeBlock::create): (JSC::UnlinkedProgramCodeBlock::addFunctionDeclaration): (JSC::UnlinkedProgramCodeBlock::UnlinkedProgramCodeBlock): (JSC::UnlinkedProgramCodeBlock::createStructure): (JSC::UnlinkedEvalCodeBlock::create): (JSC::UnlinkedEvalCodeBlock::UnlinkedEvalCodeBlock): (JSC::UnlinkedEvalCodeBlock::createStructure): (JSC::UnlinkedFunctionCodeBlock::create): (JSC::UnlinkedFunctionCodeBlock::UnlinkedFunctionCodeBlock): (JSC::UnlinkedFunctionCodeBlock::createStructure): * bytecompiler/BytecodeGenerator.cpp: (JSC::BytecodeGenerator::BytecodeGenerator): (JSC::BytecodeGenerator::addConstant): (JSC::BytecodeGenerator::emitLoad): (JSC::BytecodeGenerator::emitDirectPutById): (JSC::BytecodeGenerator::addStringConstant): (JSC::BytecodeGenerator::expectedFunctionForIdentifier): (JSC::BytecodeGenerator::emitThrowReferenceError): (JSC::BytecodeGenerator::emitReadOnlyExceptionIfNeeded): * bytecompiler/BytecodeGenerator.h: (BytecodeGenerator): (JSC::BytecodeGenerator::vm): (JSC::BytecodeGenerator::propertyNames): (JSC::BytecodeGenerator::makeFunction): * bytecompiler/NodesCodegen.cpp: (JSC::RegExpNode::emitBytecode): (JSC::ArrayNode::toArgumentList): (JSC::ApplyFunctionCallDotNode::emitBytecode): (JSC::InstanceOfNode::emitBytecode): * debugger/Debugger.cpp: (JSC::Debugger::recompileAllJSFunctions): (JSC::evaluateInGlobalCallFrame): * debugger/Debugger.h: (JSC): * debugger/DebuggerActivation.cpp: (JSC::DebuggerActivation::DebuggerActivation): (JSC::DebuggerActivation::finishCreation): * debugger/DebuggerActivation.h: (JSC::DebuggerActivation::create): (JSC::DebuggerActivation::createStructure): (DebuggerActivation): * debugger/DebuggerCallFrame.cpp: (JSC::DebuggerCallFrame::evaluate): * dfg/DFGAbstractState.cpp: (JSC::DFG::AbstractState::executeEffects): * dfg/DFGAssemblyHelpers.h: (JSC::DFG::AssemblyHelpers::AssemblyHelpers): (JSC::DFG::AssemblyHelpers::vm): (JSC::DFG::AssemblyHelpers::debugCall): (JSC::DFG::AssemblyHelpers::emitExceptionCheck): (AssemblyHelpers): * dfg/DFGByteCodeParser.cpp: (JSC::DFG::ByteCodeParser::ByteCodeParser): (ByteCodeParser): (JSC::DFG::ByteCodeParser::handleConstantInternalFunction): (JSC::DFG::ByteCodeParser::parseBlock): (JSC::DFG::ByteCodeParser::InlineStackEntry::InlineStackEntry): (JSC::DFG::ByteCodeParser::parseCodeBlock): * dfg/DFGByteCodeParser.h: (JSC): * dfg/DFGCCallHelpers.h: (JSC::DFG::CCallHelpers::CCallHelpers): * dfg/DFGCapabilities.cpp: (JSC::DFG::canHandleOpcodes): * dfg/DFGConstantFoldingPhase.cpp: (JSC::DFG::ConstantFoldingPhase::foldConstants): * dfg/DFGDisassembler.cpp: (JSC::DFG::Disassembler::reportToProfiler): * dfg/DFGDriver.cpp: (JSC::DFG::compile): * dfg/DFGDriver.h: (JSC): * dfg/DFGFixupPhase.cpp: (JSC::DFG::FixupPhase::fixupNode): (JSC::DFG::FixupPhase::isStringPrototypeMethodSane): (JSC::DFG::FixupPhase::canOptimizeStringObjectAccess): * dfg/DFGGraph.cpp: (JSC::DFG::Graph::Graph): * dfg/DFGGraph.h: (Graph): * dfg/DFGJITCompiler.cpp: (JSC::DFG::JITCompiler::JITCompiler): (JSC::DFG::JITCompiler::linkOSRExits): (JSC::DFG::JITCompiler::link): (JSC::DFG::JITCompiler::compile): (JSC::DFG::JITCompiler::compileFunction): * dfg/DFGJITCompiler.h: (JSC): * dfg/DFGOSREntry.cpp: (JSC::DFG::prepareOSREntry): * dfg/DFGOSRExitCompiler.cpp: * dfg/DFGOSRExitCompiler32_64.cpp: (JSC::DFG::OSRExitCompiler::compileExit): * dfg/DFGOSRExitCompiler64.cpp: (JSC::DFG::OSRExitCompiler::compileExit): * dfg/DFGOperations.cpp: (JSC::DFG::putByVal): (JSC::DFG::operationPutByValInternal): (JSC::getHostCallReturnValueWithExecState): * dfg/DFGPhase.h: (JSC::DFG::Phase::vm): * dfg/DFGRepatch.cpp: (JSC::DFG::generateProtoChainAccessStub): (JSC::DFG::tryCacheGetByID): (JSC::DFG::tryBuildGetByIDList): (JSC::DFG::tryBuildGetByIDProtoList): (JSC::DFG::emitPutReplaceStub): (JSC::DFG::emitPutTransitionStub): (JSC::DFG::tryCachePutByID): (JSC::DFG::tryBuildPutByIdList): (JSC::DFG::linkSlowFor): (JSC::DFG::dfgLinkFor): (JSC::DFG::dfgLinkSlowFor): (JSC::DFG::dfgLinkClosureCall): * dfg/DFGSpeculativeJIT.cpp: (JSC::DFG::SpeculativeJIT::typedArrayDescriptor): (JSC::DFG::SpeculativeJIT::compilePeepHoleObjectEquality): (JSC::DFG::SpeculativeJIT::compileGetByValOnString): (JSC::DFG::SpeculativeJIT::compileFromCharCode): (JSC::DFG::SpeculativeJIT::compileMakeRope): (JSC::DFG::SpeculativeJIT::compileStringEquality): (JSC::DFG::SpeculativeJIT::compileToStringOnCell): (JSC::DFG::SpeculativeJIT::speculateObject): (JSC::DFG::SpeculativeJIT::speculateObjectOrOther): (JSC::DFG::SpeculativeJIT::speculateString): (JSC::DFG::SpeculativeJIT::speculateStringOrStringObject): * dfg/DFGSpeculativeJIT.h: (JSC::DFG::SpeculativeJIT::prepareForExternalCall): (JSC::DFG::SpeculativeJIT::emitAllocateBasicStorage): (JSC::DFG::SpeculativeJIT::emitAllocateJSObject): * dfg/DFGSpeculativeJIT32_64.cpp: (JSC::DFG::SpeculativeJIT::compileObjectEquality): (JSC::DFG::SpeculativeJIT::compileObjectToObjectOrOtherEquality): (JSC::DFG::SpeculativeJIT::compilePeepHoleObjectToObjectOrOtherEquality): (JSC::DFG::SpeculativeJIT::compileObjectOrOtherLogicalNot): (JSC::DFG::SpeculativeJIT::emitObjectOrOtherBranch): (JSC::DFG::SpeculativeJIT::compile): * dfg/DFGSpeculativeJIT64.cpp: (JSC::DFG::SpeculativeJIT::compileObjectEquality): (JSC::DFG::SpeculativeJIT::compileObjectToObjectOrOtherEquality): (JSC::DFG::SpeculativeJIT::compilePeepHoleObjectToObjectOrOtherEquality): (JSC::DFG::SpeculativeJIT::compileObjectOrOtherLogicalNot): (JSC::DFG::SpeculativeJIT::emitObjectOrOtherBranch): (JSC::DFG::SpeculativeJIT::compile): * dfg/DFGThunks.cpp: (JSC::DFG::osrExitGenerationThunkGenerator): (JSC::DFG::throwExceptionFromCallSlowPathGenerator): (JSC::DFG::slowPathFor): (JSC::DFG::linkForThunkGenerator): (JSC::DFG::linkCallThunkGenerator): (JSC::DFG::linkConstructThunkGenerator): (JSC::DFG::linkClosureCallThunkGenerator): (JSC::DFG::virtualForThunkGenerator): (JSC::DFG::virtualCallThunkGenerator): (JSC::DFG::virtualConstructThunkGenerator): * dfg/DFGThunks.h: (JSC): (DFG): * heap/BlockAllocator.h: (JSC): * heap/CopiedSpace.cpp: (JSC::CopiedSpace::tryAllocateSlowCase): (JSC::CopiedSpace::tryReallocate): * heap/CopiedSpaceInlines.h: (JSC::CopiedSpace::tryAllocate): * heap/GCThreadSharedData.cpp: (JSC::GCThreadSharedData::GCThreadSharedData): (JSC::GCThreadSharedData::reset): * heap/GCThreadSharedData.h: (JSC): (GCThreadSharedData): * heap/HandleSet.cpp: (JSC::HandleSet::HandleSet): (JSC::HandleSet::~HandleSet): (JSC::HandleSet::grow): * heap/HandleSet.h: (JSC): (HandleSet): (JSC::HandleSet::vm): * heap/Heap.cpp: (JSC::Heap::Heap): (JSC): (JSC::Heap::lastChanceToFinalize): (JSC::Heap::protect): (JSC::Heap::unprotect): (JSC::Heap::stack): (JSC::Heap::getConservativeRegisterRoots): (JSC::Heap::markRoots): (JSC::Heap::deleteAllCompiledCode): (JSC::Heap::collect): (JSC::Heap::isValidAllocation): * heap/Heap.h: (JSC): (Heap): (JSC::Heap::vm): * heap/HeapTimer.cpp: (JSC::HeapTimer::HeapTimer): (JSC::HeapTimer::timerDidFire): (JSC::HeapTimer::timerEvent): * heap/HeapTimer.h: (JSC): (HeapTimer): * heap/IncrementalSweeper.cpp: (JSC::IncrementalSweeper::IncrementalSweeper): (JSC::IncrementalSweeper::sweepNextBlock): (JSC::IncrementalSweeper::willFinishSweeping): (JSC::IncrementalSweeper::create): * heap/IncrementalSweeper.h: (IncrementalSweeper): * heap/Local.h: (Local): (JSC::::Local): (JSC::LocalStack::LocalStack): (JSC::LocalStack::push): (LocalStack): * heap/LocalScope.h: (JSC): (LocalScope): (JSC::LocalScope::LocalScope): * heap/MachineStackMarker.cpp: (JSC::MachineThreads::addCurrentThread): * heap/MarkedAllocator.cpp: (JSC::MarkedAllocator::allocateSlowCase): * heap/MarkedBlock.cpp: (JSC::MarkedBlock::MarkedBlock): * heap/MarkedBlock.h: (JSC::MarkedBlock::vm): * heap/SlotVisitor.cpp: (JSC::SlotVisitor::SlotVisitor): (JSC::SlotVisitor::setup): * heap/Strong.h: (JSC): (Strong): (JSC::Strong::operator=): * heap/StrongInlines.h: (JSC::::Strong): (JSC::::set): * heap/SuperRegion.h: (JSC): * heap/WeakSet.cpp: * heap/WeakSet.h: (WeakSet): (JSC::WeakSet::WeakSet): (JSC::WeakSet::vm): * interpreter/AbstractPC.cpp: (JSC::AbstractPC::AbstractPC): * interpreter/AbstractPC.h: (JSC): (AbstractPC): * interpreter/CachedCall.h: (JSC::CachedCall::CachedCall): * interpreter/CallFrame.h: (ExecState): (JSC::ExecState::clearException): (JSC::ExecState::clearSupplementaryExceptionInfo): (JSC::ExecState::exception): (JSC::ExecState::hadException): (JSC::ExecState::propertyNames): (JSC::ExecState::emptyList): (JSC::ExecState::interpreter): (JSC::ExecState::heap): (JSC::ExecState::arrayConstructorTable): (JSC::ExecState::arrayPrototypeTable): (JSC::ExecState::booleanPrototypeTable): (JSC::ExecState::dateTable): (JSC::ExecState::dateConstructorTable): (JSC::ExecState::errorPrototypeTable): (JSC::ExecState::globalObjectTable): (JSC::ExecState::jsonTable): (JSC::ExecState::mathTable): (JSC::ExecState::numberConstructorTable): (JSC::ExecState::numberPrototypeTable): (JSC::ExecState::objectConstructorTable): (JSC::ExecState::privateNamePrototypeTable): (JSC::ExecState::regExpTable): (JSC::ExecState::regExpConstructorTable): (JSC::ExecState::regExpPrototypeTable): (JSC::ExecState::stringConstructorTable): (JSC::ExecState::abstractReturnPC): * interpreter/CallFrameClosure.h: (CallFrameClosure): * interpreter/Interpreter.cpp: (JSC): (JSC::eval): (JSC::loadVarargs): (JSC::Interpreter::Interpreter): (JSC::Interpreter::dumpRegisters): (JSC::Interpreter::unwindCallFrame): (JSC::appendSourceToError): (JSC::getCallerInfo): (JSC::Interpreter::getStackTrace): (JSC::Interpreter::addStackTraceIfNecessary): (JSC::Interpreter::throwException): (JSC::Interpreter::execute): (JSC::Interpreter::executeCall): (JSC::Interpreter::executeConstruct): (JSC::Interpreter::prepareForRepeatCall): (JSC::Interpreter::retrieveArgumentsFromVMCode): (JSC::Interpreter::retrieveCallerFromVMCode): * interpreter/Interpreter.h: (JSC): (JSC::TopCallFrameSetter::TopCallFrameSetter): (JSC::TopCallFrameSetter::~TopCallFrameSetter): (TopCallFrameSetter): (JSC::NativeCallFrameTracer::NativeCallFrameTracer): (Interpreter): * interpreter/JSStack.cpp: (JSC::JSStack::JSStack): * interpreter/JSStack.h: (JSC): * jit/ClosureCallStubRoutine.cpp: (JSC::ClosureCallStubRoutine::ClosureCallStubRoutine): * jit/ClosureCallStubRoutine.h: (ClosureCallStubRoutine): * jit/ExecutableAllocator.cpp: (JSC::ExecutableAllocator::ExecutableAllocator): (JSC::ExecutableAllocator::allocate): * jit/ExecutableAllocator.h: (JSC): (ExecutableAllocator): * jit/ExecutableAllocatorFixedVMPool.cpp: (JSC::ExecutableAllocator::ExecutableAllocator): (JSC::ExecutableAllocator::allocate): * jit/GCAwareJITStubRoutine.cpp: (JSC::GCAwareJITStubRoutine::GCAwareJITStubRoutine): (JSC::MarkingGCAwareJITStubRoutineWithOneObject::MarkingGCAwareJITStubRoutineWithOneObject): (JSC::createJITStubRoutine): * jit/GCAwareJITStubRoutine.h: (GCAwareJITStubRoutine): (MarkingGCAwareJITStubRoutineWithOneObject): (JSC): * jit/JIT.cpp: (JSC::JIT::JIT): (JSC::JIT::privateCompile): (JSC::JIT::linkFor): (JSC::JIT::linkSlowCall): * jit/JIT.h: (JSC::JIT::compile): (JSC::JIT::compileClosureCall): (JSC::JIT::compileGetByIdProto): (JSC::JIT::compileGetByIdSelfList): (JSC::JIT::compileGetByIdProtoList): (JSC::JIT::compileGetByIdChainList): (JSC::JIT::compileGetByIdChain): (JSC::JIT::compilePutByIdTransition): (JSC::JIT::compileGetByVal): (JSC::JIT::compilePutByVal): (JSC::JIT::compileCTINativeCall): (JSC::JIT::compilePatchGetArrayLength): (JIT): * jit/JITCall.cpp: (JSC::JIT::compileLoadVarargs): (JSC::JIT::compileCallEvalSlowCase): (JSC::JIT::compileOpCallSlowCase): (JSC::JIT::privateCompileClosureCall): * jit/JITCall32_64.cpp: (JSC::JIT::compileLoadVarargs): (JSC::JIT::compileCallEvalSlowCase): (JSC::JIT::compileOpCallSlowCase): (JSC::JIT::privateCompileClosureCall): * jit/JITCode.h: (JSC): (JSC::JITCode::execute): * jit/JITDriver.h: (JSC::jitCompileIfAppropriate): (JSC::jitCompileFunctionIfAppropriate): * jit/JITExceptions.cpp: (JSC::genericThrow): (JSC::jitThrow): * jit/JITExceptions.h: (JSC): * jit/JITInlines.h: (JSC::JIT::emitLoadCharacterString): (JSC::JIT::updateTopCallFrame): * jit/JITOpcodes.cpp: (JSC::JIT::privateCompileCTINativeCall): (JSC::JIT::emit_op_new_object): (JSC::JIT::emit_op_to_primitive): (JSC::JIT::emit_op_catch): (JSC::JIT::emit_op_convert_this): (JSC::JIT::emitSlow_op_convert_this): * jit/JITOpcodes32_64.cpp: (JSC::JIT::privateCompileCTINativeCall): (JSC::JIT::emit_op_new_object): (JSC::JIT::emit_op_to_primitive): (JSC::JIT::emitSlow_op_eq): (JSC::JIT::emitSlow_op_neq): (JSC::JIT::compileOpStrictEq): (JSC::JIT::emit_op_catch): (JSC::JIT::emit_op_convert_this): (JSC::JIT::emitSlow_op_convert_this): * jit/JITPropertyAccess.cpp: (JSC::JIT::stringGetByValStubGenerator): (JSC::JIT::emitSlow_op_get_by_val): (JSC::JIT::compileGetByIdHotPath): (JSC::JIT::privateCompilePutByIdTransition): (JSC::JIT::privateCompilePatchGetArrayLength): (JSC::JIT::privateCompileGetByIdProto): (JSC::JIT::privateCompileGetByIdSelfList): (JSC::JIT::privateCompileGetByIdProtoList): (JSC::JIT::privateCompileGetByIdChainList): (JSC::JIT::privateCompileGetByIdChain): (JSC::JIT::privateCompileGetByVal): (JSC::JIT::privateCompilePutByVal): * jit/JITPropertyAccess32_64.cpp: (JSC::JIT::stringGetByValStubGenerator): (JSC::JIT::emitSlow_op_get_by_val): (JSC::JIT::compileGetByIdHotPath): (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::ctiTrampoline): (JSC): (JSC::performPlatformSpecificJITAssertions): (JSC::tryCachePutByID): (JSC::tryCacheGetByID): (JSC::returnToThrowTrampoline): (JSC::throwExceptionFromOpCall): (JSC::DEFINE_STUB_FUNCTION): (JSC::getPolymorphicAccessStructureListSlot): (JSC::jitCompileFor): (JSC::lazyLinkFor): (JSC::putByVal): * jit/JITStubs.h: (JSC): (JITStackFrame): * jit/JITThunks.cpp: (JSC::JITThunks::ctiNativeCall): (JSC::JITThunks::ctiNativeConstruct): (JSC::JITThunks::ctiStub): (JSC::JITThunks::hostFunctionStub): * jit/JITThunks.h: (JSC): (JITThunks): * jit/JITWriteBarrier.h: (JSC): (JSC::JITWriteBarrierBase::set): (JSC::JITWriteBarrier::set): * jit/SpecializedThunkJIT.h: (JSC::SpecializedThunkJIT::loadJSStringArgument): (JSC::SpecializedThunkJIT::finalize): * jit/ThunkGenerator.h: (JSC): * jit/ThunkGenerators.cpp: (JSC::generateSlowCaseFor): (JSC::linkForGenerator): (JSC::linkCallGenerator): (JSC::linkConstructGenerator): (JSC::linkClosureCallGenerator): (JSC::virtualForGenerator): (JSC::virtualCallGenerator): (JSC::virtualConstructGenerator): (JSC::stringLengthTrampolineGenerator): (JSC::nativeForGenerator): (JSC::nativeCallGenerator): (JSC::nativeConstructGenerator): (JSC::stringCharLoad): (JSC::charToString): (JSC::charCodeAtThunkGenerator): (JSC::charAtThunkGenerator): (JSC::fromCharCodeThunkGenerator): (JSC::sqrtThunkGenerator): (JSC::floorThunkGenerator): (JSC::ceilThunkGenerator): (JSC::roundThunkGenerator): (JSC::expThunkGenerator): (JSC::logThunkGenerator): (JSC::absThunkGenerator): (JSC::powThunkGenerator): * jit/ThunkGenerators.h: (JSC): * jsc.cpp: (GlobalObject): (GlobalObject::create): (GlobalObject::createStructure): (GlobalObject::finishCreation): (GlobalObject::addFunction): (GlobalObject::addConstructableFunction): (functionDumpCallFrame): (functionJSCStack): (functionReleaseExecutableMemory): (functionRun): (main): (runWithScripts): (jscmain): * llint/LLIntData.cpp: (JSC::LLInt::Data::performAssertions): * llint/LLIntData.h: (JSC): (Data): (JSC::LLInt::Data::performAssertions): * llint/LLIntEntrypoints.cpp: (JSC::LLInt::getFunctionEntrypoint): (JSC::LLInt::getEvalEntrypoint): (JSC::LLInt::getProgramEntrypoint): * llint/LLIntEntrypoints.h: (JSC): (LLInt): (JSC::LLInt::getEntrypoint): * llint/LLIntExceptions.cpp: (JSC::LLInt::interpreterThrowInCaller): (JSC::LLInt::returnToThrow): (JSC::LLInt::callToThrow): * llint/LLIntOffsetsExtractor.cpp: * llint/LLIntSlowPaths.cpp: (LLInt): (JSC::LLInt::llint_trace_operand): (JSC::LLInt::llint_trace_value): (JSC::LLInt::LLINT_SLOW_PATH_DECL): (JSC::LLInt::shouldJIT): (JSC::LLInt::handleHostCall): (JSC::LLInt::setUpCall): * llint/LLIntThunks.cpp: (JSC::LLInt::generateThunkWithJumpTo): (JSC::LLInt::functionForCallEntryThunkGenerator): (JSC::LLInt::functionForConstructEntryThunkGenerator): (JSC::LLInt::functionForCallArityCheckThunkGenerator): (JSC::LLInt::functionForConstructArityCheckThunkGenerator): (JSC::LLInt::evalEntryThunkGenerator): (JSC::LLInt::programEntryThunkGenerator): * llint/LLIntThunks.h: (JSC): (LLInt): * llint/LowLevelInterpreter.asm: * llint/LowLevelInterpreter.cpp: (JSC::CLoop::execute): * llint/LowLevelInterpreter32_64.asm: * llint/LowLevelInterpreter64.asm: * offlineasm/cloop.rb: * parser/ASTBuilder.h: (JSC::ASTBuilder::ASTBuilder): (JSC::ASTBuilder::createSourceElements): (JSC::ASTBuilder::createCommaExpr): (JSC::ASTBuilder::createLogicalNot): (JSC::ASTBuilder::createUnaryPlus): (JSC::ASTBuilder::createVoid): (JSC::ASTBuilder::thisExpr): (JSC::ASTBuilder::createResolve): (JSC::ASTBuilder::createObjectLiteral): (JSC::ASTBuilder::createArray): (JSC::ASTBuilder::createNumberExpr): (JSC::ASTBuilder::createString): (JSC::ASTBuilder::createBoolean): (JSC::ASTBuilder::createNull): (JSC::ASTBuilder::createBracketAccess): (JSC::ASTBuilder::createDotAccess): (JSC::ASTBuilder::createRegExp): (JSC::ASTBuilder::createNewExpr): (JSC::ASTBuilder::createConditionalExpr): (JSC::ASTBuilder::createAssignResolve): (JSC::ASTBuilder::createFunctionExpr): (JSC::ASTBuilder::createFunctionBody): (JSC::ASTBuilder::createGetterOrSetterProperty): (JSC::ASTBuilder::createArguments): (JSC::ASTBuilder::createArgumentsList): (JSC::ASTBuilder::createProperty): (JSC::ASTBuilder::createPropertyList): (JSC::ASTBuilder::createElementList): (JSC::ASTBuilder::createFormalParameterList): (JSC::ASTBuilder::createClause): (JSC::ASTBuilder::createClauseList): (JSC::ASTBuilder::createFuncDeclStatement): (JSC::ASTBuilder::createBlockStatement): (JSC::ASTBuilder::createExprStatement): (JSC::ASTBuilder::createIfStatement): (JSC::ASTBuilder::createForLoop): (JSC::ASTBuilder::createForInLoop): (JSC::ASTBuilder::createEmptyStatement): (JSC::ASTBuilder::createVarStatement): (JSC::ASTBuilder::createReturnStatement): (JSC::ASTBuilder::createBreakStatement): (JSC::ASTBuilder::createContinueStatement): (JSC::ASTBuilder::createTryStatement): (JSC::ASTBuilder::createSwitchStatement): (JSC::ASTBuilder::createWhileStatement): (JSC::ASTBuilder::createDoWhileStatement): (JSC::ASTBuilder::createLabelStatement): (JSC::ASTBuilder::createWithStatement): (JSC::ASTBuilder::createThrowStatement): (JSC::ASTBuilder::createDebugger): (JSC::ASTBuilder::createConstStatement): (JSC::ASTBuilder::appendConstDecl): (JSC::ASTBuilder::addVar): (JSC::ASTBuilder::combineCommaNodes): (JSC::ASTBuilder::Scope::Scope): (JSC::ASTBuilder::createNumber): (ASTBuilder): (JSC::ASTBuilder::makeTypeOfNode): (JSC::ASTBuilder::makeDeleteNode): (JSC::ASTBuilder::makeNegateNode): (JSC::ASTBuilder::makeBitwiseNotNode): (JSC::ASTBuilder::makeMultNode): (JSC::ASTBuilder::makeDivNode): (JSC::ASTBuilder::makeModNode): (JSC::ASTBuilder::makeAddNode): (JSC::ASTBuilder::makeSubNode): (JSC::ASTBuilder::makeLeftShiftNode): (JSC::ASTBuilder::makeRightShiftNode): (JSC::ASTBuilder::makeURightShiftNode): (JSC::ASTBuilder::makeBitOrNode): (JSC::ASTBuilder::makeBitAndNode): (JSC::ASTBuilder::makeBitXOrNode): (JSC::ASTBuilder::makeFunctionCallNode): (JSC::ASTBuilder::makeBinaryNode): (JSC::ASTBuilder::makeAssignNode): (JSC::ASTBuilder::makePrefixNode): (JSC::ASTBuilder::makePostfixNode): * parser/Lexer.cpp: (JSC::Keywords::Keywords): (JSC::::Lexer): (JSC::::parseIdentifier): (JSC::::parseIdentifierSlowCase): * parser/Lexer.h: (JSC::Keywords::isKeyword): (JSC::Keywords::getKeyword): (Keywords): (Lexer): (JSC::::makeIdentifier): (JSC::::makeRightSizedIdentifier): (JSC::::makeIdentifierLCharFromUChar): (JSC::::makeLCharIdentifier): * parser/NodeConstructors.h: (JSC::ParserArenaFreeable::operator new): (JSC::ParserArenaDeletable::operator new): (JSC::ParserArenaRefCounted::ParserArenaRefCounted): (JSC::PropertyNode::PropertyNode): (JSC::ContinueNode::ContinueNode): (JSC::BreakNode::BreakNode): (JSC::ForInNode::ForInNode): * parser/Nodes.cpp: (JSC::ScopeNode::ScopeNode): (JSC::ProgramNode::ProgramNode): (JSC::ProgramNode::create): (JSC::EvalNode::EvalNode): (JSC::EvalNode::create): (JSC::FunctionBodyNode::FunctionBodyNode): (JSC::FunctionBodyNode::create): * parser/Nodes.h: (ParserArenaFreeable): (ParserArenaDeletable): (ParserArenaRefCounted): (ArrayNode): (ForInNode): (ContinueNode): (BreakNode): (ScopeNode): (ProgramNode): (EvalNode): (FunctionBodyNode): * parser/Parser.cpp: (JSC::::Parser): (JSC::::parseInner): (JSC::::parseSourceElements): (JSC::::parseTryStatement): (JSC::::parseFunctionBody): (JSC::::parseFunctionInfo): (JSC::::parseAssignmentExpression): (JSC::::parseProperty): (JSC::::parsePrimaryExpression): (JSC::::parseMemberExpression): (JSC::::parseUnaryExpression): * parser/Parser.h: (JSC): (JSC::Scope::Scope): (JSC::Scope::declareVariable): (JSC::Scope::declareParameter): (Scope): (Parser): (JSC::Parser::pushScope): (JSC::::parse): (JSC::parse): * parser/ParserArena.h: (IdentifierArena): (JSC::IdentifierArena::makeIdentifier): (JSC::IdentifierArena::makeIdentifierLCharFromUChar): (JSC::IdentifierArena::makeNumericIdentifier): * parser/SyntaxChecker.h: (JSC::SyntaxChecker::SyntaxChecker): (JSC::SyntaxChecker::createProperty): (JSC::SyntaxChecker::createGetterOrSetterProperty): * profiler/LegacyProfiler.cpp: (JSC::LegacyProfiler::startProfiling): (JSC::LegacyProfiler::stopProfiling): * profiler/LegacyProfiler.h: (JSC): * profiler/ProfilerBytecode.cpp: (JSC::Profiler::Bytecode::toJS): * profiler/ProfilerBytecodeSequence.cpp: (JSC::Profiler::BytecodeSequence::BytecodeSequence): (JSC::Profiler::BytecodeSequence::addSequenceProperties): * profiler/ProfilerBytecodes.cpp: (JSC::Profiler::Bytecodes::toJS): * profiler/ProfilerCompilation.cpp: (JSC::Profiler::Compilation::toJS): * profiler/ProfilerCompiledBytecode.cpp: (JSC::Profiler::CompiledBytecode::toJS): * profiler/ProfilerDatabase.cpp: (JSC::Profiler::Database::Database): (JSC::Profiler::Database::toJS): (JSC::Profiler::Database::toJSON): * profiler/ProfilerDatabase.h: (Database): * profiler/ProfilerOSRExit.cpp: (JSC::Profiler::OSRExit::toJS): * profiler/ProfilerOrigin.cpp: (JSC::Profiler::Origin::toJS): * profiler/ProfilerProfiledBytecodes.cpp: (JSC::Profiler::ProfiledBytecodes::toJS): * runtime/ArgList.h: (MarkedArgumentBuffer): * runtime/Arguments.cpp: (JSC::Arguments::putByIndex): (JSC::Arguments::put): (JSC::Arguments::deleteProperty): (JSC::Arguments::defineOwnProperty): (JSC::Arguments::tearOff): (JSC::Arguments::didTearOffActivation): (JSC::Arguments::tearOffForInlineCallFrame): * runtime/Arguments.h: (JSC::Arguments::create): (JSC::Arguments::createStructure): (Arguments): (JSC::Arguments::Arguments): (JSC::Arguments::trySetArgument): (JSC::Arguments::finishCreation): * runtime/ArrayConstructor.cpp: (JSC::ArrayConstructor::finishCreation): * runtime/ArrayConstructor.h: (JSC::ArrayConstructor::createStructure): * runtime/ArrayPrototype.cpp: (JSC::ArrayPrototype::ArrayPrototype): (JSC::ArrayPrototype::finishCreation): (JSC::arrayProtoFuncSort): (JSC::arrayProtoFuncSplice): * runtime/ArrayPrototype.h: (JSC::ArrayPrototype::createStructure): * runtime/BatchedTransitionOptimizer.h: (JSC::BatchedTransitionOptimizer::BatchedTransitionOptimizer): (JSC::BatchedTransitionOptimizer::~BatchedTransitionOptimizer): (BatchedTransitionOptimizer): * runtime/BooleanConstructor.cpp: (JSC::BooleanConstructor::finishCreation): (JSC::constructBoolean): (JSC::constructBooleanFromImmediateBoolean): * runtime/BooleanConstructor.h: (JSC::BooleanConstructor::createStructure): * runtime/BooleanObject.cpp: (JSC::BooleanObject::BooleanObject): (JSC::BooleanObject::finishCreation): * runtime/BooleanObject.h: (BooleanObject): (JSC::BooleanObject::create): (JSC::BooleanObject::createStructure): * runtime/BooleanPrototype.cpp: (JSC::BooleanPrototype::BooleanPrototype): (JSC::BooleanPrototype::finishCreation): (JSC::booleanProtoFuncToString): * runtime/BooleanPrototype.h: (JSC::BooleanPrototype::createStructure): * runtime/Butterfly.h: (JSC): (Butterfly): * runtime/ButterflyInlines.h: (JSC::Butterfly::createUninitialized): (JSC::Butterfly::create): (JSC::Butterfly::growPropertyStorage): (JSC::Butterfly::createOrGrowArrayRight): (JSC::Butterfly::growArrayRight): (JSC::Butterfly::resizeArray): * runtime/CodeCache.cpp: (JSC::CodeCache::getCodeBlock): (JSC::CodeCache::getProgramCodeBlock): (JSC::CodeCache::getEvalCodeBlock): (JSC::CodeCache::getFunctionExecutableFromGlobalCode): * runtime/CodeCache.h: (JSC): (JSC::SourceCodeValue::SourceCodeValue): (CodeCache): * runtime/CommonIdentifiers.cpp: (JSC): (JSC::CommonIdentifiers::CommonIdentifiers): * runtime/CommonIdentifiers.h: (CommonIdentifiers): * runtime/CommonSlowPaths.h: (JSC::CommonSlowPaths::opIn): * runtime/Completion.cpp: (JSC::checkSyntax): (JSC::evaluate): * runtime/DateConstructor.cpp: (JSC::DateConstructor::finishCreation): * runtime/DateConstructor.h: (JSC::DateConstructor::createStructure): * runtime/DateInstance.cpp: (JSC::DateInstance::DateInstance): (JSC::DateInstance::finishCreation): (JSC::DateInstance::calculateGregorianDateTime): (JSC::DateInstance::calculateGregorianDateTimeUTC): * runtime/DateInstance.h: (DateInstance): (JSC::DateInstance::create): (JSC::DateInstance::createStructure): * runtime/DatePrototype.cpp: (JSC::DatePrototype::finishCreation): (JSC::dateProtoFuncSetTime): (JSC::setNewValueFromTimeArgs): (JSC::setNewValueFromDateArgs): (JSC::dateProtoFuncSetYear): (JSC::dateProtoFuncToJSON): * runtime/DatePrototype.h: (JSC::DatePrototype::createStructure): * runtime/Error.cpp: (JSC::createError): (JSC::createEvalError): (JSC::createRangeError): (JSC::createReferenceError): (JSC::createSyntaxError): (JSC::createTypeError): (JSC::createURIError): (JSC::addErrorInfo): (JSC::throwError): * runtime/Error.h: (JSC): (JSC::StrictModeTypeErrorFunction::create): (JSC::StrictModeTypeErrorFunction::createStructure): * runtime/ErrorConstructor.cpp: (JSC::ErrorConstructor::finishCreation): * runtime/ErrorConstructor.h: (JSC::ErrorConstructor::createStructure): * runtime/ErrorInstance.cpp: (JSC::ErrorInstance::ErrorInstance): * runtime/ErrorInstance.h: (JSC::ErrorInstance::createStructure): (JSC::ErrorInstance::create): (ErrorInstance): (JSC::ErrorInstance::finishCreation): * runtime/ErrorPrototype.cpp: (JSC::ErrorPrototype::ErrorPrototype): (JSC::ErrorPrototype::finishCreation): * runtime/ErrorPrototype.h: (JSC::ErrorPrototype::createStructure): * runtime/ExceptionHelpers.cpp: (JSC::createInterruptedExecutionException): (JSC::createTerminatedExecutionException): * runtime/ExceptionHelpers.h: (JSC): (JSC::InterruptedExecutionError::InterruptedExecutionError): (JSC::InterruptedExecutionError::create): (JSC::InterruptedExecutionError::createStructure): (JSC::TerminatedExecutionError::TerminatedExecutionError): (JSC::TerminatedExecutionError::create): (JSC::TerminatedExecutionError::createStructure): * runtime/Executable.cpp: (JSC::jettisonCodeBlock): (JSC::EvalExecutable::EvalExecutable): (JSC::ProgramExecutable::ProgramExecutable): (JSC::FunctionExecutable::FunctionExecutable): (JSC::EvalExecutable::compileOptimized): (JSC::EvalExecutable::compileInternal): (JSC::EvalExecutable::jettisonOptimizedCode): (JSC::ProgramExecutable::checkSyntax): (JSC::ProgramExecutable::compileOptimized): (JSC::ProgramExecutable::jettisonOptimizedCode): (JSC::ProgramExecutable::initializeGlobalProperties): (JSC::FunctionExecutable::compileOptimizedForCall): (JSC::FunctionExecutable::compileOptimizedForConstruct): (JSC::FunctionExecutable::produceCodeBlockFor): (JSC::FunctionExecutable::jettisonOptimizedCodeForCall): (JSC::FunctionExecutable::jettisonOptimizedCodeForConstruct): (JSC::FunctionExecutable::fromGlobalCode): * runtime/Executable.h: (JSC::ExecutableBase::ExecutableBase): (JSC::ExecutableBase::finishCreation): (JSC::ExecutableBase::createStructure): (JSC::NativeExecutable::create): (JSC::NativeExecutable::createStructure): (JSC::NativeExecutable::finishCreation): (JSC::NativeExecutable::NativeExecutable): (JSC::ScriptExecutable::ScriptExecutable): (JSC::ScriptExecutable::finishCreation): (JSC::EvalExecutable::compile): (EvalExecutable): (JSC::EvalExecutable::create): (JSC::EvalExecutable::createStructure): (JSC::ProgramExecutable::create): (ProgramExecutable): (JSC::ProgramExecutable::compile): (JSC::ProgramExecutable::createStructure): (JSC::FunctionExecutable::create): (JSC::FunctionExecutable::compileForCall): (FunctionExecutable): (JSC::FunctionExecutable::compileForConstruct): (JSC::FunctionExecutable::jettisonOptimizedCodeFor): (JSC::FunctionExecutable::createStructure): (JSC::JSFunction::JSFunction): * runtime/ExecutionHarness.h: (JSC::prepareForExecution): (JSC::prepareFunctionForExecution): * runtime/FunctionConstructor.cpp: (JSC::FunctionConstructor::finishCreation): * runtime/FunctionConstructor.h: (JSC::FunctionConstructor::createStructure): * runtime/FunctionPrototype.cpp: (JSC::FunctionPrototype::finishCreation): (JSC::FunctionPrototype::addFunctionProperties): (JSC::functionProtoFuncBind): * runtime/FunctionPrototype.h: (JSC::FunctionPrototype::createStructure): * runtime/GCActivityCallback.cpp: (JSC::DefaultGCActivityCallback::DefaultGCActivityCallback): (JSC::DefaultGCActivityCallback::doWork): (JSC::DefaultGCActivityCallback::didAllocate): * runtime/GCActivityCallback.h: (JSC::GCActivityCallback::GCActivityCallback): * runtime/GCActivityCallbackBlackBerry.cpp: (JSC::DefaultGCActivityCallback::DefaultGCActivityCallback): (JSC::DefaultGCActivityCallback::doWork): (JSC::DefaultGCActivityCallback::didAllocate): * runtime/GetterSetter.h: (JSC::GetterSetter::GetterSetter): (JSC::GetterSetter::create): (JSC::GetterSetter::setGetter): (JSC::GetterSetter::setSetter): (JSC::GetterSetter::createStructure): * runtime/Identifier.cpp: (JSC::Identifier::add): (JSC::Identifier::add8): (JSC::Identifier::addSlowCase): (JSC::Identifier::from): (JSC::Identifier::checkCurrentIdentifierTable): * runtime/Identifier.h: (JSC::Identifier::Identifier): (JSC::Identifier::createLCharFromUChar): (Identifier): (JSC::Identifier::add): * runtime/InternalFunction.cpp: (JSC::InternalFunction::InternalFunction): (JSC::InternalFunction::finishCreation): (JSC::InternalFunction::name): (JSC::InternalFunction::displayName): * runtime/InternalFunction.h: (JSC::InternalFunction::createStructure): (InternalFunction): * runtime/JSAPIValueWrapper.h: (JSC::JSAPIValueWrapper::createStructure): (JSC::JSAPIValueWrapper::finishCreation): (JSC::JSAPIValueWrapper::JSAPIValueWrapper): * runtime/JSActivation.cpp: (JSC::JSActivation::symbolTablePut): (JSC::JSActivation::symbolTablePutWithAttributes): (JSC::JSActivation::getOwnPropertySlot): (JSC::JSActivation::put): (JSC::JSActivation::putDirectVirtual): (JSC::JSActivation::argumentsGetter): * runtime/JSActivation.h: (JSActivation): (JSC::JSActivation::create): (JSC::JSActivation::createStructure): (JSC::JSActivation::JSActivation): (JSC::JSActivation::tearOff): * runtime/JSArray.cpp: (JSC::createArrayButterflyInDictionaryIndexingMode): (JSC::JSArray::setLengthWritable): (JSC::JSArray::unshiftCountSlowCase): (JSC::JSArray::setLength): (JSC::JSArray::push): (JSC::JSArray::shiftCountWithAnyIndexingType): (JSC::JSArray::unshiftCountWithArrayStorage): (JSC::JSArray::unshiftCountWithAnyIndexingType): (JSC::ContiguousTypeAccessor::setWithValue): (JSC::JSArray::sortCompactedVector): (JSC::JSArray::sortVector): * runtime/JSArray.h: (JSC::JSArray::JSArray): (JSArray): (JSC::JSArray::shiftCountForShift): (JSC::JSArray::unshiftCountForShift): (JSC::JSArray::createStructure): (JSC::createContiguousArrayButterfly): (JSC::createArrayButterfly): (JSC): (JSC::JSArray::create): (JSC::JSArray::tryCreateUninitialized): (JSC::constructArray): * runtime/JSBoundFunction.cpp: (JSC::JSBoundFunction::create): (JSC::JSBoundFunction::JSBoundFunction): * runtime/JSBoundFunction.h: (JSC::JSBoundFunction::createStructure): * runtime/JSCJSValue.cpp: (JSC::JSValue::putToPrimitive): (JSC::JSValue::toStringSlowCase): * runtime/JSCJSValue.h: (JSC): * runtime/JSCell.h: (JSCell): * runtime/JSCellInlines.h: (JSC::JSCell::JSCell): (JSC::JSCell::finishCreation): (JSC::allocateCell): (JSC::JSCell::setStructure): (JSC::JSCell::fastGetOwnProperty): * runtime/JSDateMath.cpp: (JSC::getDSTOffset): (JSC::getUTCOffset): (JSC::parseDate): * runtime/JSDestructibleObject.h: (JSC::JSDestructibleObject::JSDestructibleObject): * runtime/JSFunction.cpp: (JSC::JSFunction::create): (JSC::JSFunction::JSFunction): (JSC::JSFunction::finishCreation): (JSC::JSFunction::createAllocationProfile): (JSC::JSFunction::name): (JSC::JSFunction::displayName): (JSC::JSFunction::getOwnPropertySlot): (JSC::JSFunction::deleteProperty): * runtime/JSFunction.h: (JSFunction): (JSC::JSFunction::create): (JSC::JSFunction::setScope): (JSC::JSFunction::createStructure): * runtime/JSGlobalData.cpp: Removed. * runtime/JSGlobalData.h: Removed. * runtime/JSGlobalObject.cpp: (JSC::JSGlobalObject::JSGlobalObject): (JSC::JSGlobalObject::~JSGlobalObject): (JSC::JSGlobalObject::setGlobalThis): (JSC::JSGlobalObject::init): (JSC::JSGlobalObject::putDirectVirtual): (JSC::JSGlobalObject::reset): (JSC): (JSC::JSGlobalObject::haveABadTime): (JSC::JSGlobalObject::createThrowTypeError): (JSC::JSGlobalObject::resetPrototype): (JSC::JSGlobalObject::addStaticGlobals): (JSC::DynamicGlobalObjectScope::DynamicGlobalObjectScope): (JSC::JSGlobalObject::createProgramCodeBlock): (JSC::JSGlobalObject::createEvalCodeBlock): * runtime/JSGlobalObject.h: (JSC::JSGlobalObject::create): (JSGlobalObject): (JSC::JSGlobalObject::finishCreation): (JSC::JSGlobalObject::vm): (JSC::JSGlobalObject::createStructure): (JSC::ExecState::dynamicGlobalObject): (JSC::constructEmptyArray): (DynamicGlobalObjectScope): * runtime/JSGlobalObjectFunctions.cpp: (JSC::globalFuncProtoSetter): * runtime/JSLock.cpp: (JSC::JSLockHolder::JSLockHolder): (JSC::JSLockHolder::init): (JSC::JSLockHolder::~JSLockHolder): (JSC::JSLock::JSLock): (JSC::JSLock::willDestroyGlobalData): (JSC::JSLock::lock): (JSC::JSLock::unlock): (JSC::JSLock::DropAllLocks::DropAllLocks): (JSC::JSLock::DropAllLocks::~DropAllLocks): * runtime/JSLock.h: (JSC): (JSLockHolder): (JSLock): (JSC::JSLock::vm): (DropAllLocks): * runtime/JSNameScope.h: (JSC::JSNameScope::createStructure): (JSC::JSNameScope::finishCreation): (JSC::JSNameScope::JSNameScope): * runtime/JSNotAnObject.h: (JSC::JSNotAnObject::JSNotAnObject): (JSC::JSNotAnObject::create): (JSC::JSNotAnObject::createStructure): * runtime/JSONObject.cpp: (JSC::JSONObject::JSONObject): (JSC::JSONObject::finishCreation): (Holder): (JSC::Stringifier::Stringifier): (JSC::Stringifier::stringify): (JSC::Stringifier::toJSON): (JSC::Stringifier::appendStringifiedValue): (JSC::Stringifier::Holder::Holder): (JSC::Stringifier::Holder::appendNextProperty): (JSC::Walker::Walker): (JSC::Walker::walk): (JSC::JSONProtoFuncParse): (JSC::JSONProtoFuncStringify): (JSC::JSONStringify): * runtime/JSONObject.h: (JSC::JSONObject::createStructure): * runtime/JSObject.cpp: (JSC::JSObject::put): (JSC::JSObject::putByIndex): (JSC::JSObject::enterDictionaryIndexingModeWhenArrayStorageAlreadyExists): (JSC::JSObject::enterDictionaryIndexingMode): (JSC::JSObject::notifyPresenceOfIndexedAccessors): (JSC::JSObject::createInitialIndexedStorage): (JSC::JSObject::createInitialUndecided): (JSC::JSObject::createInitialInt32): (JSC::JSObject::createInitialDouble): (JSC::JSObject::createInitialContiguous): (JSC::JSObject::createArrayStorage): (JSC::JSObject::createInitialArrayStorage): (JSC::JSObject::convertUndecidedToInt32): (JSC::JSObject::convertUndecidedToDouble): (JSC::JSObject::convertUndecidedToContiguous): (JSC::JSObject::constructConvertedArrayStorageWithoutCopyingElements): (JSC::JSObject::convertUndecidedToArrayStorage): (JSC::JSObject::convertInt32ToDouble): (JSC::JSObject::convertInt32ToContiguous): (JSC::JSObject::convertInt32ToArrayStorage): (JSC::JSObject::genericConvertDoubleToContiguous): (JSC::JSObject::convertDoubleToContiguous): (JSC::JSObject::rageConvertDoubleToContiguous): (JSC::JSObject::convertDoubleToArrayStorage): (JSC::JSObject::convertContiguousToArrayStorage): (JSC::JSObject::convertUndecidedForValue): (JSC::JSObject::convertInt32ForValue): (JSC::JSObject::setIndexQuicklyToUndecided): (JSC::JSObject::convertInt32ToDoubleOrContiguousWhilePerformingSetIndex): (JSC::JSObject::convertDoubleToContiguousWhilePerformingSetIndex): (JSC::JSObject::ensureInt32Slow): (JSC::JSObject::ensureDoubleSlow): (JSC::JSObject::ensureContiguousSlow): (JSC::JSObject::rageEnsureContiguousSlow): (JSC::JSObject::ensureArrayStorageSlow): (JSC::JSObject::ensureArrayStorageExistsAndEnterDictionaryIndexingMode): (JSC::JSObject::switchToSlowPutArrayStorage): (JSC::JSObject::putDirectVirtual): (JSC::JSObject::setPrototype): (JSC::JSObject::setPrototypeWithCycleCheck): (JSC::JSObject::putDirectAccessor): (JSC::JSObject::deleteProperty): (JSC::JSObject::getPropertySpecificValue): (JSC::JSObject::getOwnNonIndexPropertyNames): (JSC::JSObject::seal): (JSC::JSObject::freeze): (JSC::JSObject::preventExtensions): (JSC::JSObject::reifyStaticFunctionsForDelete): (JSC::JSObject::removeDirect): (JSC::JSObject::putIndexedDescriptor): (JSC::JSObject::defineOwnIndexedProperty): (JSC::JSObject::allocateSparseIndexMap): (JSC::JSObject::putByIndexBeyondVectorLengthWithoutAttributes): (JSC::JSObject::putByIndexBeyondVectorLengthWithArrayStorage): (JSC::JSObject::putByIndexBeyondVectorLength): (JSC::JSObject::putDirectIndexBeyondVectorLengthWithArrayStorage): (JSC::JSObject::putDirectIndexBeyondVectorLength): (JSC::JSObject::putDirectNativeFunction): (JSC::JSObject::increaseVectorLength): (JSC::JSObject::ensureLengthSlow): (JSC::JSObject::growOutOfLineStorage): (JSC::JSObject::getOwnPropertyDescriptor): (JSC::putDescriptor): (JSC::JSObject::putDirectMayBeIndex): (JSC::DefineOwnPropertyScope::DefineOwnPropertyScope): (JSC::DefineOwnPropertyScope::~DefineOwnPropertyScope): (DefineOwnPropertyScope): (JSC::JSObject::defineOwnNonIndexProperty): * runtime/JSObject.h: (JSObject): (JSC::JSObject::putByIndexInline): (JSC::JSObject::putDirectIndex): (JSC::JSObject::setIndexQuickly): (JSC::JSObject::initializeIndex): (JSC::JSObject::getDirect): (JSC::JSObject::getDirectOffset): (JSC::JSObject::putDirect): (JSC::JSObject::isSealed): (JSC::JSObject::isFrozen): (JSC::JSObject::flattenDictionaryObject): (JSC::JSObject::ensureInt32): (JSC::JSObject::ensureDouble): (JSC::JSObject::ensureContiguous): (JSC::JSObject::rageEnsureContiguous): (JSC::JSObject::ensureArrayStorage): (JSC::JSObject::finishCreation): (JSC::JSObject::createStructure): (JSC::JSObject::ensureLength): (JSC::JSNonFinalObject::createStructure): (JSC::JSNonFinalObject::JSNonFinalObject): (JSC::JSNonFinalObject::finishCreation): (JSC::JSFinalObject::createStructure): (JSC::JSFinalObject::finishCreation): (JSC::JSFinalObject::JSFinalObject): (JSC::JSFinalObject::create): (JSC::JSObject::setButterfly): (JSC::JSObject::JSObject): (JSC::JSObject::inlineGetOwnPropertySlot): (JSC::JSObject::putDirectInternal): (JSC::JSObject::setStructureAndReallocateStorageIfNecessary): (JSC::JSObject::putOwnDataProperty): (JSC::JSObject::putDirectWithoutTransition): (JSC): * runtime/JSPropertyNameIterator.cpp: (JSC::JSPropertyNameIterator::JSPropertyNameIterator): (JSC::JSPropertyNameIterator::create): * runtime/JSPropertyNameIterator.h: (JSC::JSPropertyNameIterator::createStructure): (JSC::JSPropertyNameIterator::setCachedStructure): (JSC::JSPropertyNameIterator::setCachedPrototypeChain): (JSC::JSPropertyNameIterator::finishCreation): (JSC::StructureRareData::setEnumerationCache): * runtime/JSProxy.cpp: (JSC::JSProxy::setTarget): * runtime/JSProxy.h: (JSC::JSProxy::create): (JSC::JSProxy::createStructure): (JSC::JSProxy::JSProxy): (JSC::JSProxy::finishCreation): (JSProxy): * runtime/JSScope.cpp: (JSC::executeResolveOperations): (JSC::JSScope::resolveContainingScopeInternal): (JSC::JSScope::resolveWithBase): (JSC::JSScope::resolveWithThis): (JSC::JSScope::resolvePut): * runtime/JSScope.h: (JSScope): (JSC::JSScope::JSScope): (JSC::JSScope::vm): (JSC::ExecState::vm): * runtime/JSSegmentedVariableObject.h: (JSC::JSSegmentedVariableObject::JSSegmentedVariableObject): (JSC::JSSegmentedVariableObject::finishCreation): * runtime/JSString.cpp: (JSC::JSRopeString::RopeBuilder::expand): (JSC::StringObject::create): * runtime/JSString.h: (JSC): (JSString): (JSC::JSString::JSString): (JSC::JSString::finishCreation): (JSC::JSString::create): (JSC::JSString::createHasOtherOwner): (JSC::JSString::createStructure): (JSRopeString): (JSC::JSRopeString::RopeBuilder::RopeBuilder): (JSC::JSRopeString::RopeBuilder::append): (RopeBuilder): (JSC::JSRopeString::JSRopeString): (JSC::JSRopeString::finishCreation): (JSC::JSRopeString::append): (JSC::JSRopeString::createNull): (JSC::JSRopeString::create): (JSC::jsEmptyString): (JSC::jsSingleCharacterString): (JSC::jsSingleCharacterSubstring): (JSC::jsNontrivialString): (JSC::jsString): (JSC::jsSubstring): (JSC::jsSubstring8): (JSC::jsOwnedString): (JSC::jsStringBuilder): (JSC::inlineJSValueNotStringtoString): * runtime/JSStringJoiner.cpp: (JSC::JSStringJoiner::build): * runtime/JSSymbolTableObject.h: (JSC::JSSymbolTableObject::JSSymbolTableObject): (JSC::JSSymbolTableObject::finishCreation): (JSC::symbolTablePut): (JSC::symbolTablePutWithAttributes): * runtime/JSVariableObject.h: (JSC::JSVariableObject::JSVariableObject): * runtime/JSWithScope.h: (JSC::JSWithScope::create): (JSC::JSWithScope::createStructure): (JSC::JSWithScope::JSWithScope): * runtime/JSWrapperObject.h: (JSWrapperObject): (JSC::JSWrapperObject::createStructure): (JSC::JSWrapperObject::JSWrapperObject): (JSC::JSWrapperObject::setInternalValue): * runtime/LiteralParser.cpp: (JSC::::tryJSONPParse): (JSC::::makeIdentifier): (JSC::::parse): * runtime/Lookup.cpp: (JSC::HashTable::createTable): (JSC::setUpStaticFunctionSlot): * runtime/Lookup.h: (JSC::HashTable::initializeIfNeeded): (JSC::HashTable::entry): (JSC::HashTable::begin): (JSC::HashTable::end): (HashTable): (JSC::lookupPut): * runtime/MathObject.cpp: (JSC::MathObject::MathObject): (JSC::MathObject::finishCreation): (JSC::mathProtoFuncSin): * runtime/MathObject.h: (JSC::MathObject::createStructure): * runtime/MemoryStatistics.cpp: * runtime/MemoryStatistics.h: * runtime/NameConstructor.cpp: (JSC::NameConstructor::finishCreation): (JSC::constructPrivateName): * runtime/NameConstructor.h: (JSC::NameConstructor::createStructure): * runtime/NameInstance.cpp: (JSC::NameInstance::NameInstance): * runtime/NameInstance.h: (JSC::NameInstance::createStructure): (JSC::NameInstance::create): (NameInstance): (JSC::NameInstance::finishCreation): * runtime/NamePrototype.cpp: (JSC::NamePrototype::NamePrototype): (JSC::NamePrototype::finishCreation): * runtime/NamePrototype.h: (JSC::NamePrototype::createStructure): * runtime/NativeErrorConstructor.h: (JSC::NativeErrorConstructor::createStructure): (JSC::NativeErrorConstructor::finishCreation): * runtime/NativeErrorPrototype.cpp: (JSC::NativeErrorPrototype::finishCreation): * runtime/NumberConstructor.cpp: (JSC::NumberConstructor::finishCreation): (JSC::constructWithNumberConstructor): * runtime/NumberConstructor.h: (JSC::NumberConstructor::createStructure): * runtime/NumberObject.cpp: (JSC::NumberObject::NumberObject): (JSC::NumberObject::finishCreation): (JSC::constructNumber): * runtime/NumberObject.h: (NumberObject): (JSC::NumberObject::create): (JSC::NumberObject::createStructure): * runtime/NumberPrototype.cpp: (JSC::NumberPrototype::NumberPrototype): (JSC::NumberPrototype::finishCreation): (JSC::integerValueToString): (JSC::numberProtoFuncToString): * runtime/NumberPrototype.h: (JSC::NumberPrototype::createStructure): * runtime/ObjectConstructor.cpp: (JSC::ObjectConstructor::finishCreation): (JSC::objectConstructorGetOwnPropertyDescriptor): (JSC::objectConstructorSeal): (JSC::objectConstructorFreeze): (JSC::objectConstructorPreventExtensions): (JSC::objectConstructorIsSealed): (JSC::objectConstructorIsFrozen): * runtime/ObjectConstructor.h: (JSC::ObjectConstructor::createStructure): (JSC::constructEmptyObject): * runtime/ObjectPrototype.cpp: (JSC::ObjectPrototype::ObjectPrototype): (JSC::ObjectPrototype::finishCreation): (JSC::objectProtoFuncToString): * runtime/ObjectPrototype.h: (JSC::ObjectPrototype::createStructure): * runtime/Operations.cpp: (JSC::jsTypeStringForValue): * runtime/Operations.h: (JSC): (JSC::jsString): (JSC::jsStringFromArguments): (JSC::normalizePrototypeChainForChainAccess): (JSC::normalizePrototypeChain): * runtime/PropertyMapHashTable.h: (JSC::PropertyMapEntry::PropertyMapEntry): (JSC::PropertyTable::createStructure): (PropertyTable): (JSC::PropertyTable::copy): * runtime/PropertyNameArray.h: (JSC::PropertyNameArray::PropertyNameArray): (JSC::PropertyNameArray::vm): (JSC::PropertyNameArray::addKnownUnique): (PropertyNameArray): * runtime/PropertyTable.cpp: (JSC::PropertyTable::create): (JSC::PropertyTable::clone): (JSC::PropertyTable::PropertyTable): * runtime/PrototypeMap.cpp: (JSC::PrototypeMap::emptyObjectStructureForPrototype): * runtime/RegExp.cpp: (JSC::RegExp::RegExp): (JSC::RegExp::finishCreation): (JSC::RegExp::createWithoutCaching): (JSC::RegExp::create): (JSC::RegExp::compile): (JSC::RegExp::compileIfNecessary): (JSC::RegExp::match): (JSC::RegExp::compileMatchOnly): (JSC::RegExp::compileIfNecessaryMatchOnly): * runtime/RegExp.h: (JSC): (RegExp): (JSC::RegExp::createStructure): * runtime/RegExpCache.cpp: (JSC::RegExpCache::lookupOrCreate): (JSC::RegExpCache::RegExpCache): (JSC::RegExpCache::addToStrongCache): * runtime/RegExpCache.h: (RegExpCache): * runtime/RegExpCachedResult.cpp: (JSC::RegExpCachedResult::lastResult): (JSC::RegExpCachedResult::setInput): * runtime/RegExpCachedResult.h: (JSC::RegExpCachedResult::RegExpCachedResult): (JSC::RegExpCachedResult::record): * runtime/RegExpConstructor.cpp: (JSC::RegExpConstructor::RegExpConstructor): (JSC::RegExpConstructor::finishCreation): (JSC::constructRegExp): * runtime/RegExpConstructor.h: (JSC::RegExpConstructor::createStructure): (RegExpConstructor): (JSC::RegExpConstructor::performMatch): * runtime/RegExpMatchesArray.cpp: (JSC::RegExpMatchesArray::RegExpMatchesArray): (JSC::RegExpMatchesArray::create): (JSC::RegExpMatchesArray::finishCreation): (JSC::RegExpMatchesArray::reifyAllProperties): * runtime/RegExpMatchesArray.h: (RegExpMatchesArray): (JSC::RegExpMatchesArray::createStructure): * runtime/RegExpObject.cpp: (JSC::RegExpObject::RegExpObject): (JSC::RegExpObject::finishCreation): (JSC::RegExpObject::match): * runtime/RegExpObject.h: (JSC::RegExpObject::create): (JSC::RegExpObject::setRegExp): (JSC::RegExpObject::setLastIndex): (JSC::RegExpObject::createStructure): * runtime/RegExpPrototype.cpp: (JSC::regExpProtoFuncCompile): * runtime/RegExpPrototype.h: (JSC::RegExpPrototype::createStructure): * runtime/SmallStrings.cpp: (JSC::SmallStrings::initializeCommonStrings): (JSC::SmallStrings::createEmptyString): (JSC::SmallStrings::createSingleCharacterString): (JSC::SmallStrings::initialize): * runtime/SmallStrings.h: (JSC): (JSC::SmallStrings::singleCharacterString): (SmallStrings): * runtime/SparseArrayValueMap.cpp: (JSC::SparseArrayValueMap::SparseArrayValueMap): (JSC::SparseArrayValueMap::finishCreation): (JSC::SparseArrayValueMap::create): (JSC::SparseArrayValueMap::createStructure): (JSC::SparseArrayValueMap::putDirect): (JSC::SparseArrayEntry::put): * runtime/SparseArrayValueMap.h: * runtime/StrictEvalActivation.cpp: (JSC::StrictEvalActivation::StrictEvalActivation): * runtime/StrictEvalActivation.h: (JSC::StrictEvalActivation::create): (JSC::StrictEvalActivation::createStructure): * runtime/StringConstructor.cpp: (JSC::StringConstructor::finishCreation): * runtime/StringConstructor.h: (JSC::StringConstructor::createStructure): * runtime/StringObject.cpp: (JSC::StringObject::StringObject): (JSC::StringObject::finishCreation): (JSC::constructString): * runtime/StringObject.h: (JSC::StringObject::create): (JSC::StringObject::createStructure): (StringObject): * runtime/StringPrototype.cpp: (JSC::StringPrototype::StringPrototype): (JSC::StringPrototype::finishCreation): (JSC::removeUsingRegExpSearch): (JSC::replaceUsingRegExpSearch): (JSC::stringProtoFuncMatch): (JSC::stringProtoFuncSearch): (JSC::stringProtoFuncSplit): * runtime/StringPrototype.h: (JSC::StringPrototype::createStructure): * runtime/StringRecursionChecker.h: (JSC::StringRecursionChecker::performCheck): (JSC::StringRecursionChecker::~StringRecursionChecker): * runtime/Structure.cpp: (JSC::StructureTransitionTable::add): (JSC::Structure::Structure): (JSC::Structure::materializePropertyMap): (JSC::Structure::despecifyDictionaryFunction): (JSC::Structure::addPropertyTransition): (JSC::Structure::removePropertyTransition): (JSC::Structure::changePrototypeTransition): (JSC::Structure::despecifyFunctionTransition): (JSC::Structure::attributeChangeTransition): (JSC::Structure::toDictionaryTransition): (JSC::Structure::toCacheableDictionaryTransition): (JSC::Structure::toUncacheableDictionaryTransition): (JSC::Structure::sealTransition): (JSC::Structure::freezeTransition): (JSC::Structure::preventExtensionsTransition): (JSC::Structure::takePropertyTableOrCloneIfPinned): (JSC::Structure::nonPropertyTransition): (JSC::Structure::isSealed): (JSC::Structure::isFrozen): (JSC::Structure::flattenDictionaryStructure): (JSC::Structure::addPropertyWithoutTransition): (JSC::Structure::removePropertyWithoutTransition): (JSC::Structure::allocateRareData): (JSC::Structure::cloneRareDataFrom): (JSC::Structure::copyPropertyTable): (JSC::Structure::copyPropertyTableForPinning): (JSC::Structure::get): (JSC::Structure::despecifyFunction): (JSC::Structure::despecifyAllFunctions): (JSC::Structure::putSpecificValue): (JSC::Structure::createPropertyMap): (JSC::Structure::getPropertyNamesFromStructure): (JSC::Structure::prototypeChainMayInterceptStoreTo): * runtime/Structure.h: (Structure): (JSC::Structure::finishCreation): (JSC::Structure::setPrototypeWithoutTransition): (JSC::Structure::setGlobalObject): (JSC::Structure::setObjectToStringValue): (JSC::Structure::materializePropertyMapIfNecessary): (JSC::Structure::materializePropertyMapIfNecessaryForPinning): (JSC::Structure::setPreviousID): * runtime/StructureChain.cpp: (JSC::StructureChain::StructureChain): * runtime/StructureChain.h: (JSC::StructureChain::create): (JSC::StructureChain::createStructure): (JSC::StructureChain::finishCreation): (StructureChain): * runtime/StructureInlines.h: (JSC::Structure::create): (JSC::Structure::createStructure): (JSC::Structure::get): (JSC::Structure::setEnumerationCache): (JSC::Structure::prototypeChain): (JSC::Structure::propertyTable): * runtime/StructureRareData.cpp: (JSC::StructureRareData::createStructure): (JSC::StructureRareData::create): (JSC::StructureRareData::clone): (JSC::StructureRareData::StructureRareData): * runtime/StructureRareData.h: (StructureRareData): * runtime/StructureRareDataInlines.h: (JSC::StructureRareData::setPreviousID): (JSC::StructureRareData::setObjectToStringValue): * runtime/StructureTransitionTable.h: (StructureTransitionTable): (JSC::StructureTransitionTable::setSingleTransition): * runtime/SymbolTable.h: (JSC::SharedSymbolTable::create): (JSC::SharedSymbolTable::createStructure): (JSC::SharedSymbolTable::SharedSymbolTable): * runtime/VM.cpp: Copied from Source/JavaScriptCore/runtime/JSGlobalData.cpp. (JSC::VM::VM): (JSC::VM::~VM): (JSC::VM::createContextGroup): (JSC::VM::create): (JSC::VM::createLeaked): (JSC::VM::sharedInstanceExists): (JSC::VM::sharedInstance): (JSC::VM::sharedInstanceInternal): (JSC::VM::getHostFunction): (JSC::VM::ClientData::~ClientData): (JSC::VM::resetDateCache): (JSC::VM::startSampling): (JSC::VM::stopSampling): (JSC::VM::discardAllCode): (JSC::VM::dumpSampleData): (JSC::VM::addSourceProviderCache): (JSC::VM::clearSourceProviderCaches): (JSC::VM::releaseExecutableMemory): (JSC::releaseExecutableMemory): (JSC::VM::gatherConservativeRoots): (JSC::VM::addRegExpToTrace): (JSC::VM::dumpRegExpTrace): * runtime/VM.h: Copied from Source/JavaScriptCore/runtime/JSGlobalData.h. (VM): (JSC::VM::isSharedInstance): (JSC::VM::usingAPI): (JSC::VM::isInitializingObject): (JSC::VM::setInitializingObjectClass): (JSC::WeakSet::heap): * runtime/WriteBarrier.h: (JSC): (JSC::WriteBarrierBase::set): (JSC::WriteBarrierBase::setMayBeNull): (JSC::WriteBarrierBase::setEarlyValue): (JSC::WriteBarrier::WriteBarrier): * testRegExp.cpp: (GlobalObject): (GlobalObject::create): (GlobalObject::createStructure): (GlobalObject::finishCreation): (main): (testOneRegExp): (parseRegExpLine): (runFromFiles): (realMain): * yarr/YarrInterpreter.h: (BytecodePattern): * yarr/YarrJIT.cpp: (YarrGenerator): (JSC::Yarr::YarrGenerator::compile): (JSC::Yarr::jitCompile): * yarr/YarrJIT.h: (JSC): ../WebCore: * ForwardingHeaders/runtime/JSGlobalData.h: Removed. * ForwardingHeaders/runtime/VM.h: Copied from Source/WebCore/ForwardingHeaders/runtime/JSGlobalData.h. * WebCore.exp.in: * WebCore.order: * WebCore.vcxproj/WebCore.vcxproj: * WebCore.vcxproj/WebCore.vcxproj.filters: * bindings/js/DOMObjectHashTableMap.cpp: (WebCore::DOMObjectHashTableMap::mapFor): * bindings/js/DOMObjectHashTableMap.h: (JSC): (DOMObjectHashTableMap): * bindings/js/DOMWrapperWorld.cpp: (WebCore::DOMWrapperWorld::DOMWrapperWorld): (WebCore::DOMWrapperWorld::~DOMWrapperWorld): (WebCore::normalWorld): (WebCore::mainThreadNormalWorld): * bindings/js/DOMWrapperWorld.h: (WebCore::DOMWrapperWorld::create): (WebCore::DOMWrapperWorld::vm): (DOMWrapperWorld): (WebCore): * bindings/js/GCController.cpp: (WebCore::collect): (WebCore::GCController::garbageCollectSoon): (WebCore::GCController::garbageCollectNow): (WebCore::GCController::setJavaScriptGarbageCollectorTimerEnabled): (WebCore::GCController::discardAllCompiledCode): * bindings/js/IDBBindingUtilities.cpp: (WebCore::get): (WebCore::set): (WebCore::deserializeIDBValue): (WebCore::deserializeIDBValueBuffer): (WebCore::idbKeyToScriptValue): * bindings/js/JSCallbackData.h: (WebCore::JSCallbackData::JSCallbackData): * bindings/js/JSCustomSQLStatementErrorCallback.cpp: (WebCore::JSSQLStatementErrorCallback::handleEvent): * bindings/js/JSCustomXPathNSResolver.cpp: (WebCore::JSCustomXPathNSResolver::JSCustomXPathNSResolver): (WebCore::JSCustomXPathNSResolver::lookupNamespaceURI): * bindings/js/JSDOMBinding.cpp: (WebCore::getHashTableForGlobalData): (WebCore::reportException): (WebCore::cacheDOMStructure): * bindings/js/JSDOMBinding.h: (WebCore::DOMConstructorObject::createStructure): (WebCore::DOMConstructorWithDocument::finishCreation): (WebCore::getDOMStructure): (WebCore::setInlineCachedWrapper): (WebCore): (WebCore::jsStringWithCache): * bindings/js/JSDOMGlobalObject.cpp: (WebCore::JSDOMGlobalObject::JSDOMGlobalObject): (WebCore::JSDOMGlobalObject::finishCreation): * bindings/js/JSDOMGlobalObject.h: (JSDOMGlobalObject): (WebCore::JSDOMGlobalObject::createStructure): (WebCore::getDOMConstructor): * bindings/js/JSDOMWindowBase.cpp: (WebCore::JSDOMWindowBase::JSDOMWindowBase): (WebCore::JSDOMWindowBase::finishCreation): (WebCore::JSDOMWindowBase::updateDocument): (WebCore::JSDOMWindowBase::commonVM): * bindings/js/JSDOMWindowBase.h: (JSDOMWindowBase): (WebCore::JSDOMWindowBase::createStructure): * bindings/js/JSDOMWindowCustom.cpp: (WebCore::JSDOMWindow::setLocation): (WebCore::DialogHandler::dialogCreated): (WebCore::DialogHandler::returnValue): * bindings/js/JSDOMWindowShell.cpp: (WebCore::JSDOMWindowShell::JSDOMWindowShell): (WebCore::JSDOMWindowShell::finishCreation): (WebCore::JSDOMWindowShell::setWindow): * bindings/js/JSDOMWindowShell.h: (JSDOMWindowShell): (WebCore::JSDOMWindowShell::create): (WebCore::JSDOMWindowShell::createStructure): * bindings/js/JSDOMWrapper.h: (WebCore::JSDOMWrapper::JSDOMWrapper): * bindings/js/JSDeviceMotionEventCustom.cpp: (WebCore::createAccelerationObject): (WebCore::createRotationRateObject): * bindings/js/JSDictionary.cpp: (WebCore::JSDictionary::convertValue): * bindings/js/JSDictionary.h: (WebCore::JSDictionary::JSDictionary): * bindings/js/JSErrorHandler.cpp: (WebCore::JSErrorHandler::handleEvent): * bindings/js/JSEventListener.cpp: (WebCore::JSEventListener::handleEvent): * bindings/js/JSEventListener.h: (WebCore::JSEventListener::setWrapper): (WebCore::JSEventListener::jsFunction): * bindings/js/JSHTMLDocumentCustom.cpp: (WebCore::JSHTMLDocument::all): (WebCore::JSHTMLDocument::setAll): * bindings/js/JSHTMLTemplateElementCustom.cpp: (WebCore::JSHTMLTemplateElement::content): * bindings/js/JSHistoryCustom.cpp: (WebCore::JSHistory::state): * bindings/js/JSImageConstructor.cpp: (WebCore::JSImageConstructor::finishCreation): * bindings/js/JSImageConstructor.h: (WebCore::JSImageConstructor::createStructure): * bindings/js/JSImageDataCustom.cpp: (WebCore::toJS): * bindings/js/JSInjectedScriptHostCustom.cpp: (WebCore::InjectedScriptHost::nodeAsScriptValue): (WebCore::JSInjectedScriptHost::functionDetails): (WebCore::getJSListenerFunctions): (WebCore::JSInjectedScriptHost::getEventListeners): (WebCore::JSInjectedScriptHost::inspect): * bindings/js/JSLazyEventListener.cpp: (WebCore::JSLazyEventListener::initializeJSFunction): * bindings/js/JSMessageEventCustom.cpp: (WebCore::JSMessageEvent::data): (WebCore::handleInitMessageEvent): * bindings/js/JSMutationCallback.cpp: (WebCore::JSMutationCallback::call): * bindings/js/JSMutationObserverCustom.cpp: (WebCore::JSMutationObserverConstructor::constructJSMutationObserver): * bindings/js/JSNodeFilterCondition.cpp: (WebCore::JSNodeFilterCondition::JSNodeFilterCondition): * bindings/js/JSNodeFilterCondition.h: (WebCore::JSNodeFilterCondition::create): (JSNodeFilterCondition): * bindings/js/JSNodeFilterCustom.cpp: (WebCore::toNodeFilter): * bindings/js/JSPopStateEventCustom.cpp: (WebCore::cacheState): * bindings/js/JSRequestAnimationFrameCallbackCustom.cpp: (WebCore::JSRequestAnimationFrameCallback::handleEvent): * bindings/js/JSSQLResultSetRowListCustom.cpp: (WebCore::JSSQLResultSetRowList::item): * bindings/js/JSWorkerContextBase.cpp: (WebCore::JSWorkerContextBase::JSWorkerContextBase): (WebCore::JSWorkerContextBase::finishCreation): * bindings/js/JSWorkerContextBase.h: (WebCore::JSWorkerContextBase::createStructure): (JSWorkerContextBase): * bindings/js/PageScriptDebugServer.cpp: (WebCore::PageScriptDebugServer::recompileAllJSFunctions): * bindings/js/ScheduledAction.cpp: (WebCore::ScheduledAction::ScheduledAction): (WebCore::ScheduledAction::executeFunctionInContext): * bindings/js/ScheduledAction.h: (WebCore::ScheduledAction::ScheduledAction): * bindings/js/ScriptCachedFrameData.cpp: (WebCore::ScriptCachedFrameData::ScriptCachedFrameData): (WebCore::ScriptCachedFrameData::restore): (WebCore::ScriptCachedFrameData::clear): * bindings/js/ScriptCallStackFactory.cpp: (WebCore::createScriptCallStack): (WebCore::createScriptArguments): * bindings/js/ScriptController.cpp: (WebCore::ScriptController::createWindowShell): (WebCore::ScriptController::evaluateInWorld): (WebCore::ScriptController::createWorld): (WebCore::ScriptController::getAllWorlds): (WebCore::ScriptController::clearWindowShell): (WebCore::ScriptController::initScript): (WebCore::ScriptController::updateDocument): (WebCore::ScriptController::cacheableBindingRootObject): (WebCore::ScriptController::bindingRootObject): (WebCore::ScriptController::clearScriptObjects): (WebCore::ScriptController::shouldBypassMainWorldContentSecurityPolicy): * bindings/js/ScriptControllerMac.mm: (WebCore::ScriptController::windowScriptObject): * bindings/js/ScriptDebugServer.cpp: (WebCore::ScriptDebugServer::dispatchDidPause): * bindings/js/ScriptEventListener.cpp: (WebCore::eventListenerHandlerBody): (WebCore::eventListenerHandler): (WebCore::eventListenerHandlerLocation): * bindings/js/ScriptFunctionCall.cpp: (WebCore::ScriptFunctionCall::call): (WebCore::ScriptCallback::call): * bindings/js/ScriptGCEvent.cpp: (WebCore::ScriptGCEvent::getHeapSize): * bindings/js/ScriptObject.cpp: (WebCore::ScriptObject::ScriptObject): (WebCore::ScriptGlobalObject::set): * bindings/js/ScriptState.h: (WebCore): * bindings/js/ScriptValue.cpp: (WebCore::ScriptValue::deserialize): * bindings/js/ScriptValue.h: (WebCore::ScriptValue::ScriptValue): * bindings/js/ScriptWrappable.h: (JSC): (ScriptWrappable): * bindings/js/ScriptWrappableInlines.h: (WebCore::ScriptWrappable::setWrapper): * bindings/js/SerializedScriptValue.cpp: (WebCore::CloneDeserializer::readTerminal): (WebCore::SerializedScriptValue::deserializeForInspector): (WebCore::SerializedScriptValue::maybeThrowExceptionIfSerializationFailed): * bindings/js/WebCoreJSClientData.h: (WebCoreJSClientData): (WebCore::initNormalWorldClientData): * bindings/js/WorkerScriptController.cpp: (WebCore::WorkerScriptController::WorkerScriptController): (WebCore::WorkerScriptController::~WorkerScriptController): (WebCore::WorkerScriptController::initScript): (WebCore::WorkerScriptController::evaluate): (WebCore::WorkerScriptController::scheduleExecutionTermination): (WebCore::WorkerScriptController::isExecutionTerminating): (WebCore::WorkerScriptController::disableEval): * bindings/js/WorkerScriptController.h: (JSC): (WebCore::WorkerScriptController::vm): (WorkerScriptController): * bindings/js/WorkerScriptDebugServer.cpp: (WebCore::WorkerScriptDebugServer::recompileAllJSFunctions): * bindings/objc/WebScriptObject.mm: (+[WebScriptObject _convertValueToObjcValue:JSC::originRootObject:rootObject:]): * bindings/scripts/CodeGeneratorJS.pm: (GenerateHeader): (GenerateImplementation): (GenerateCallbackImplementation): (JSValueToNative): (GenerateConstructorDeclaration): (GenerateConstructorHelperMethods): * bindings/scripts/test/JS/JSFloat64Array.cpp: (WebCore::getJSFloat64ArrayConstructorTable): (WebCore::JSFloat64ArrayConstructor::finishCreation): (WebCore::getJSFloat64ArrayPrototypeTable): (WebCore::getJSFloat64ArrayTable): (WebCore::JSFloat64Array::finishCreation): (WebCore::JSFloat64Array::createPrototype): * bindings/scripts/test/JS/JSFloat64Array.h: (WebCore::JSFloat64Array::create): (WebCore::JSFloat64Array::createStructure): (JSFloat64Array): (WebCore::JSFloat64ArrayPrototype::create): (WebCore::JSFloat64ArrayPrototype::createStructure): (WebCore::JSFloat64ArrayPrototype::JSFloat64ArrayPrototype): (WebCore::JSFloat64ArrayConstructor::createStructure): * bindings/scripts/test/JS/JSTestActiveDOMObject.cpp: (WebCore::JSTestActiveDOMObjectConstructor::finishCreation): (WebCore::JSTestActiveDOMObject::finishCreation): (WebCore::JSTestActiveDOMObject::createPrototype): * bindings/scripts/test/JS/JSTestActiveDOMObject.h: (WebCore::JSTestActiveDOMObject::create): (WebCore::JSTestActiveDOMObject::createStructure): (JSTestActiveDOMObject): (WebCore::JSTestActiveDOMObjectPrototype::create): (WebCore::JSTestActiveDOMObjectPrototype::createStructure): (WebCore::JSTestActiveDOMObjectPrototype::JSTestActiveDOMObjectPrototype): (WebCore::JSTestActiveDOMObjectConstructor::createStructure): * bindings/scripts/test/JS/JSTestCallback.cpp: (WebCore::JSTestCallback::callbackWithNoParam): (WebCore::JSTestCallback::callbackWithClass1Param): (WebCore::JSTestCallback::callbackWithClass2Param): (WebCore::JSTestCallback::callbackWithStringList): (WebCore::JSTestCallback::callbackWithBoolean): (WebCore::JSTestCallback::callbackRequiresThisToPass): * bindings/scripts/test/JS/JSTestCustomNamedGetter.cpp: (WebCore::JSTestCustomNamedGetterConstructor::finishCreation): (WebCore::JSTestCustomNamedGetter::finishCreation): (WebCore::JSTestCustomNamedGetter::createPrototype): * bindings/scripts/test/JS/JSTestCustomNamedGetter.h: (WebCore::JSTestCustomNamedGetter::create): (WebCore::JSTestCustomNamedGetter::createStructure): (JSTestCustomNamedGetter): (WebCore::JSTestCustomNamedGetterPrototype::create): (WebCore::JSTestCustomNamedGetterPrototype::createStructure): (WebCore::JSTestCustomNamedGetterPrototype::JSTestCustomNamedGetterPrototype): (WebCore::JSTestCustomNamedGetterConstructor::createStructure): * bindings/scripts/test/JS/JSTestEventConstructor.cpp: (WebCore::JSTestEventConstructorConstructor::finishCreation): (WebCore::JSTestEventConstructor::finishCreation): (WebCore::JSTestEventConstructor::createPrototype): * bindings/scripts/test/JS/JSTestEventConstructor.h: (WebCore::JSTestEventConstructor::create): (WebCore::JSTestEventConstructor::createStructure): (JSTestEventConstructor): (WebCore::JSTestEventConstructorPrototype::create): (WebCore::JSTestEventConstructorPrototype::createStructure): (WebCore::JSTestEventConstructorPrototype::JSTestEventConstructorPrototype): (WebCore::JSTestEventConstructorConstructor::createStructure): * bindings/scripts/test/JS/JSTestEventTarget.cpp: (WebCore::JSTestEventTargetConstructor::finishCreation): (WebCore::JSTestEventTarget::finishCreation): (WebCore::JSTestEventTarget::createPrototype): * bindings/scripts/test/JS/JSTestEventTarget.h: (WebCore::JSTestEventTarget::create): (WebCore::JSTestEventTarget::createStructure): (JSTestEventTarget): (WebCore::JSTestEventTargetPrototype::create): (WebCore::JSTestEventTargetPrototype::createStructure): (WebCore::JSTestEventTargetPrototype::JSTestEventTargetPrototype): (WebCore::JSTestEventTargetConstructor::createStructure): * bindings/scripts/test/JS/JSTestException.cpp: (WebCore::JSTestExceptionConstructor::finishCreation): (WebCore::JSTestException::finishCreation): (WebCore::JSTestException::createPrototype): * bindings/scripts/test/JS/JSTestException.h: (WebCore::JSTestException::create): (WebCore::JSTestException::createStructure): (JSTestException): (WebCore::JSTestExceptionPrototype::create): (WebCore::JSTestExceptionPrototype::createStructure): (WebCore::JSTestExceptionPrototype::JSTestExceptionPrototype): (WebCore::JSTestExceptionConstructor::createStructure): * bindings/scripts/test/JS/JSTestInterface.cpp: (WebCore::JSTestInterfaceConstructor::finishCreation): (WebCore::JSTestInterface::finishCreation): (WebCore::JSTestInterface::createPrototype): * bindings/scripts/test/JS/JSTestInterface.h: (WebCore::JSTestInterface::create): (WebCore::JSTestInterface::createStructure): (JSTestInterface): (WebCore::JSTestInterfacePrototype::create): (WebCore::JSTestInterfacePrototype::createStructure): (WebCore::JSTestInterfacePrototype::JSTestInterfacePrototype): (WebCore::JSTestInterfaceConstructor::createStructure): * bindings/scripts/test/JS/JSTestMediaQueryListListener.cpp: (WebCore::JSTestMediaQueryListListenerConstructor::finishCreation): (WebCore::JSTestMediaQueryListListener::finishCreation): (WebCore::JSTestMediaQueryListListener::createPrototype): (WebCore::jsTestMediaQueryListListenerPrototypeFunctionMethod): * bindings/scripts/test/JS/JSTestMediaQueryListListener.h: (WebCore::JSTestMediaQueryListListener::create): (WebCore::JSTestMediaQueryListListener::createStructure): (JSTestMediaQueryListListener): (WebCore::JSTestMediaQueryListListenerPrototype::create): (WebCore::JSTestMediaQueryListListenerPrototype::createStructure): (WebCore::JSTestMediaQueryListListenerPrototype::JSTestMediaQueryListListenerPrototype): (WebCore::JSTestMediaQueryListListenerConstructor::createStructure): * bindings/scripts/test/JS/JSTestNamedConstructor.cpp: (WebCore::JSTestNamedConstructorConstructor::finishCreation): (WebCore::JSTestNamedConstructorNamedConstructor::finishCreation): (WebCore::JSTestNamedConstructor::finishCreation): (WebCore::JSTestNamedConstructor::createPrototype): * bindings/scripts/test/JS/JSTestNamedConstructor.h: (WebCore::JSTestNamedConstructor::create): (WebCore::JSTestNamedConstructor::createStructure): (JSTestNamedConstructor): (WebCore::JSTestNamedConstructorPrototype::create): (WebCore::JSTestNamedConstructorPrototype::createStructure): (WebCore::JSTestNamedConstructorPrototype::JSTestNamedConstructorPrototype): (WebCore::JSTestNamedConstructorConstructor::createStructure): (WebCore::JSTestNamedConstructorNamedConstructor::createStructure): * bindings/scripts/test/JS/JSTestNode.cpp: (WebCore::JSTestNodeConstructor::finishCreation): (WebCore::JSTestNode::finishCreation): (WebCore::JSTestNode::createPrototype): * bindings/scripts/test/JS/JSTestNode.h: (WebCore::JSTestNode::create): (WebCore::JSTestNode::createStructure): (JSTestNode): (WebCore::JSTestNodePrototype::create): (WebCore::JSTestNodePrototype::createStructure): (WebCore::JSTestNodePrototype::JSTestNodePrototype): (WebCore::JSTestNodeConstructor::createStructure): * bindings/scripts/test/JS/JSTestObj.cpp: (WebCore::JSTestObjConstructor::finishCreation): (WebCore::JSTestObj::finishCreation): (WebCore::JSTestObj::createPrototype): (WebCore::jsTestObjCachedAttribute1): (WebCore::jsTestObjCachedAttribute2): (WebCore::setJSTestObjConditionalAttr4Constructor): (WebCore::setJSTestObjConditionalAttr5Constructor): (WebCore::setJSTestObjConditionalAttr6Constructor): (WebCore::setJSTestObjAnyAttribute): (WebCore::setJSTestObjReplaceableAttribute): * bindings/scripts/test/JS/JSTestObj.h: (WebCore::JSTestObj::create): (WebCore::JSTestObj::createStructure): (JSTestObj): (WebCore::JSTestObjPrototype::create): (WebCore::JSTestObjPrototype::createStructure): (WebCore::JSTestObjPrototype::JSTestObjPrototype): (WebCore::JSTestObjConstructor::createStructure): * bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp: (WebCore::JSTestOverloadedConstructorsConstructor::finishCreation): (WebCore::JSTestOverloadedConstructors::finishCreation): (WebCore::JSTestOverloadedConstructors::createPrototype): * bindings/scripts/test/JS/JSTestOverloadedConstructors.h: (WebCore::JSTestOverloadedConstructors::create): (WebCore::JSTestOverloadedConstructors::createStructure): (JSTestOverloadedConstructors): (WebCore::JSTestOverloadedConstructorsPrototype::create): (WebCore::JSTestOverloadedConstructorsPrototype::createStructure): (WebCore::JSTestOverloadedConstructorsPrototype::JSTestOverloadedConstructorsPrototype): (WebCore::JSTestOverloadedConstructorsConstructor::createStructure): * bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp: (WebCore::JSTestSerializedScriptValueInterfaceConstructor::finishCreation): (WebCore::JSTestSerializedScriptValueInterface::finishCreation): (WebCore::JSTestSerializedScriptValueInterface::createPrototype): (WebCore::jsTestSerializedScriptValueInterfaceCachedValue): (WebCore::jsTestSerializedScriptValueInterfaceCachedReadonlyValue): * bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.h: (WebCore::JSTestSerializedScriptValueInterface::create): (WebCore::JSTestSerializedScriptValueInterface::createStructure): (JSTestSerializedScriptValueInterface): (WebCore::JSTestSerializedScriptValueInterfacePrototype::create): (WebCore::JSTestSerializedScriptValueInterfacePrototype::createStructure): (WebCore::JSTestSerializedScriptValueInterfacePrototype::JSTestSerializedScriptValueInterfacePrototype): (WebCore::JSTestSerializedScriptValueInterfaceConstructor::createStructure): * bindings/scripts/test/JS/JSTestTypedefs.cpp: (WebCore::JSTestTypedefsConstructor::finishCreation): (WebCore::JSTestTypedefs::finishCreation): (WebCore::JSTestTypedefs::createPrototype): * bindings/scripts/test/JS/JSTestTypedefs.h: (WebCore::JSTestTypedefs::create): (WebCore::JSTestTypedefs::createStructure): (JSTestTypedefs): (WebCore::JSTestTypedefsPrototype::create): (WebCore::JSTestTypedefsPrototype::createStructure): (WebCore::JSTestTypedefsPrototype::JSTestTypedefsPrototype): (WebCore::JSTestTypedefsConstructor::createStructure): * bridge/c/CRuntimeObject.h: (JSC::Bindings::CRuntimeObject::createStructure): * bridge/c/c_instance.cpp: (JSC::Bindings::CRuntimeMethod::create): (JSC::Bindings::CRuntimeMethod::createStructure): (JSC::Bindings::CRuntimeMethod::finishCreation): * bridge/jsc/BridgeJSC.cpp: (JSC::Bindings::Instance::createRuntimeObject): * bridge/objc/ObjCRuntimeObject.h: (JSC::Bindings::ObjCRuntimeObject::createStructure): * bridge/objc/objc_instance.mm: (ObjCRuntimeMethod::create): (ObjCRuntimeMethod::createStructure): (ObjCRuntimeMethod::finishCreation): * bridge/objc/objc_runtime.h: (JSC::Bindings::ObjcFallbackObjectImp::createStructure): * bridge/objc/objc_runtime.mm: (JSC::Bindings::ObjcFallbackObjectImp::ObjcFallbackObjectImp): (JSC::Bindings::ObjcFallbackObjectImp::finishCreation): * bridge/qt/qt_instance.cpp: (JSC::Bindings::QtRuntimeObject::createStructure): (JSC::Bindings::QtInstance::~QtInstance): (JSC::Bindings::QtInstance::getQtInstance): * bridge/runtime_array.cpp: (JSC::RuntimeArray::RuntimeArray): (JSC::RuntimeArray::finishCreation): * bridge/runtime_array.h: (JSC::RuntimeArray::create): (JSC::RuntimeArray::createStructure): (RuntimeArray): * bridge/runtime_method.cpp: (JSC::RuntimeMethod::finishCreation): * bridge/runtime_method.h: (JSC::RuntimeMethod::create): (JSC::RuntimeMethod::createStructure): (RuntimeMethod): * bridge/runtime_object.cpp: (JSC::Bindings::RuntimeObject::RuntimeObject): (JSC::Bindings::RuntimeObject::finishCreation): * bridge/runtime_object.h: (JSC::Bindings::RuntimeObject::createStructure): * bridge/runtime_root.cpp: (JSC::Bindings::RootObject::RootObject): (JSC::Bindings::RootObject::gcProtect): (JSC::Bindings::RootObject::gcUnprotect): (JSC::Bindings::RootObject::updateGlobalObject): (JSC::Bindings::RootObject::addRuntimeObject): * bridge/runtime_root.h: (RootObject): * dom/Node.cpp: * dom/Node.h: (JSC): * dom/ScriptExecutionContext.cpp: (WebCore::ScriptExecutionContext::vm): * dom/ScriptExecutionContext.h: (JSC): (ScriptExecutionContext): * html/HTMLCanvasElement.cpp: (WebCore::HTMLCanvasElement::createImageBuffer): * html/HTMLImageLoader.cpp: (WebCore::HTMLImageLoader::notifyFinished): * inspector/ScriptArguments.cpp: (WebCore::ScriptArguments::ScriptArguments): * loader/icon/IconDatabaseBase.cpp: (WebCore): (WebCore::iconDatabase): (WebCore::setGlobalIconDatabase): * platform/qt/MemoryUsageSupportQt.cpp: (WebCore::memoryUsageKB): (WebCore::actualMemoryUsageKB): * platform/win/ClipboardUtilitiesWin.cpp: (WebCore::createGlobalData): * plugins/PluginView.cpp: (WebCore::PluginView::start): (WebCore::PluginView::stop): (WebCore::PluginView::performRequest): (WebCore::PluginView::npObject): (WebCore::PluginView::privateBrowsingStateChanged): * plugins/blackberry/PluginViewBlackBerry.cpp: (WebCore::PluginView::dispatchNPEvent): (WebCore::PluginView::setNPWindowIfNeeded): (WebCore::PluginView::platformStart): (WebCore::PluginView::getWindowInfo): * plugins/efl/PluginViewEfl.cpp: (WebCore::PluginView::dispatchNPEvent): * plugins/gtk/PluginViewGtk.cpp: (WebCore::PluginView::dispatchNPEvent): (WebCore::PluginView::handleKeyboardEvent): (WebCore::PluginView::handleMouseEvent): (WebCore::PluginView::setNPWindowIfNeeded): (WebCore::PluginView::platformStart): * plugins/mac/PluginViewMac.mm: (WebCore::PluginView::platformStart): * plugins/qt/PluginViewQt.cpp: (WebCore::PluginView::dispatchNPEvent): (WebCore::PluginView::setNPWindowIfNeeded): * plugins/win/PluginViewWin.cpp: (WebCore::PluginView::dispatchNPEvent): (WebCore::PluginView::handleKeyboardEvent): (WebCore::PluginView::handleMouseEvent): (WebCore::PluginView::setNPWindowRect): * testing/js/WebCoreTestSupport.cpp: (WebCoreTestSupport::injectInternalsObject): * xml/XMLHttpRequest.cpp: (WebCore::XMLHttpRequest::dropProtection): ../WebKit/blackberry: * Api/BlackBerryGlobal.cpp: (BlackBerry::WebKit::clearMemoryCaches): * WebKitSupport/AboutData.cpp: * WebKitSupport/DumpRenderTreeSupport.cpp: (DumpRenderTreeSupport::javaScriptObjectsCount): ../WebKit/efl: * WebCoreSupport/DumpRenderTreeSupportEfl.cpp: (DumpRenderTreeSupportEfl::javaScriptObjectsCount): ../WebKit/gtk: * WebCoreSupport/DumpRenderTreeSupportGtk.cpp: (DumpRenderTreeSupportGtk::gcCountJavascriptObjects): ../WebKit/mac: * Misc/WebCoreStatistics.mm: (+[WebCoreStatistics javaScriptObjectsCount]): (+[WebCoreStatistics javaScriptGlobalObjectsCount]): (+[WebCoreStatistics javaScriptProtectedObjectsCount]): (+[WebCoreStatistics javaScriptProtectedGlobalObjectsCount]): (+[WebCoreStatistics javaScriptProtectedObjectTypeCounts]): (+[WebCoreStatistics javaScriptObjectTypeCounts]): (+[WebCoreStatistics shouldPrintExceptions]): (+[WebCoreStatistics setShouldPrintExceptions:]): (+[WebCoreStatistics memoryStatistics]): (+[WebCoreStatistics javaScriptReferencedObjectsCount]): * Plugins/Hosted/NetscapePluginHostProxy.mm: (identifierFromIdentifierRep): * Plugins/Hosted/NetscapePluginInstanceProxy.h: (LocalObjectMap): * Plugins/Hosted/NetscapePluginInstanceProxy.mm: (WebKit::NetscapePluginInstanceProxy::LocalObjectMap::idForObject): (WebKit::NetscapePluginInstanceProxy::getWindowNPObject): (WebKit::NetscapePluginInstanceProxy::getPluginElementNPObject): (WebKit::NetscapePluginInstanceProxy::evaluate): (WebKit::NetscapePluginInstanceProxy::addValueToArray): * Plugins/Hosted/ProxyInstance.mm: (WebKit::ProxyRuntimeMethod::create): (WebKit::ProxyRuntimeMethod::createStructure): (WebKit::ProxyRuntimeMethod::finishCreation): (WebKit::ProxyInstance::getPropertyNames): * Plugins/Hosted/ProxyRuntimeObject.h: (WebKit::ProxyRuntimeObject::create): (WebKit::ProxyRuntimeObject::createStructure): * Plugins/WebNetscapePluginStream.mm: (WebNetscapePluginStream::wantsAllStreams): * Plugins/WebNetscapePluginView.mm: (-[WebNetscapePluginView sendEvent:isDrawRect:]): (-[WebNetscapePluginView privateBrowsingModeDidChange]): (-[WebNetscapePluginView setWindowIfNecessary]): (-[WebNetscapePluginView createPluginScriptableObject]): (-[WebNetscapePluginView getFormValue:]): (-[WebNetscapePluginView evaluateJavaScriptPluginRequest:]): (-[WebNetscapePluginView webFrame:didFinishLoadWithReason:]): (-[WebNetscapePluginView loadPluginRequest:]): (-[WebNetscapePluginView _printedPluginBitmap]): * Plugins/WebPluginController.mm: (+[WebPluginController plugInViewWithArguments:fromPluginPackage:]): (-[WebPluginController stopOnePlugin:]): (-[WebPluginController destroyOnePlugin:]): (-[WebPluginController startAllPlugins]): (-[WebPluginController addPlugin:]): * WebKit.order: * WebView/WebScriptDebugDelegate.mm: (-[WebScriptCallFrame scopeChain]): (-[WebScriptCallFrame evaluateWebScript:]): * WebView/WebScriptDebugger.mm: (WebScriptDebugger::WebScriptDebugger): ../WebKit/qt: * WebCoreSupport/DumpRenderTreeSupportQt.cpp: (DumpRenderTreeSupportQt::javaScriptObjectsCount): * WebCoreSupport/QWebFrameAdapter.cpp: (QWebFrameAdapter::addToJavaScriptWindowObject): ../WebKit/win: * WebCoreStatistics.cpp: (WebCoreStatistics::javaScriptObjectsCount): (WebCoreStatistics::javaScriptGlobalObjectsCount): (WebCoreStatistics::javaScriptProtectedObjectsCount): (WebCoreStatistics::javaScriptProtectedGlobalObjectsCount): (WebCoreStatistics::javaScriptProtectedObjectTypeCounts): * WebJavaScriptCollector.cpp: (WebJavaScriptCollector::objectCount): ../WebKit2: * Shared/linux/WebMemorySamplerLinux.cpp: (WebKit::WebMemorySampler::sampleWebKit): * Shared/mac/WebMemorySampler.mac.mm: (WebKit::WebMemorySampler::sampleWebKit): * WebProcess/InjectedBundle/InjectedBundle.cpp: (WebKit::InjectedBundle::javaScriptObjectsCount): * WebProcess/Plugins/Netscape/JSNPMethod.cpp: (WebKit::JSNPMethod::finishCreation): * WebProcess/Plugins/Netscape/JSNPMethod.h: (WebKit::JSNPMethod::create): (JSNPMethod): (WebKit::JSNPMethod::createStructure): * WebProcess/Plugins/Netscape/JSNPObject.cpp: (WebKit::JSNPObject::JSNPObject): (WebKit::JSNPObject::finishCreation): (WebKit::JSNPObject::callMethod): (WebKit::JSNPObject::callObject): (WebKit::JSNPObject::callConstructor): (WebKit::JSNPObject::put): (WebKit::JSNPObject::deleteProperty): (WebKit::JSNPObject::getOwnPropertyNames): (WebKit::JSNPObject::propertyGetter): * WebProcess/Plugins/Netscape/JSNPObject.h: (WebKit::JSNPObject::create): (WebKit::JSNPObject::createStructure): * WebProcess/Plugins/Netscape/NPJSObject.cpp: (WebKit::NPJSObject::create): (WebKit::NPJSObject::initialize): * WebProcess/Plugins/Netscape/NPJSObject.h: (JSC): (NPJSObject): * WebProcess/Plugins/Netscape/NPRuntimeObjectMap.cpp: (WebKit::NPRuntimeObjectMap::getOrCreateNPObject): (WebKit::NPRuntimeObjectMap::convertJSValueToNPVariant): (WebKit::NPRuntimeObjectMap::evaluate): * WebProcess/Plugins/Netscape/NPRuntimeObjectMap.h: (JSC): (NPRuntimeObjectMap): * WebProcess/Plugins/PluginView.cpp: (WebKit::PluginView::windowScriptNPObject): (WebKit::PluginView::pluginElementNPObject): * WebProcess/WebPage/WebPage.cpp: (WebKit::WebPage::runJavaScriptInMainFrame): * WebProcess/WebProcess.cpp: (WebKit::WebProcess::getWebCoreStatistics): git-svn-id: http://svn.webkit.org/repository/webkit/trunk@148696 268f45cc-cd09-0410-ab3c-d52691b4dbfc
-
- 19 Aug, 2012 1 commit
-
-
fpizlo@apple.com authored
The current state of the call frame should be taken into account in the DFG for both predictions and proofs https://bugs.webkit.org/show_bug.cgi?id=94412 Reviewed by Geoffrey Garen. This ensures that no matter how smart the DFG gets, it'll always know through which entrypoint OSR will try to enter, and with which values it will attempt to do so. For prologue OSR, this has no effect other than adding the current arguments to the argument predictions. For loop OSR, this makes our treatment of the loop slightly more conservative - just conservative enough to ensure that OSR succeeds. * bytecode/CodeBlock.cpp: (JSC::ProgramCodeBlock::compileOptimized): (JSC::EvalCodeBlock::compileOptimized): (JSC::FunctionCodeBlock::compileOptimized): * bytecode/CodeBlock.h: (CodeBlock): (ProgramCodeBlock): (EvalCodeBlock): (FunctionCodeBlock): * dfg/DFGAbstractState.cpp: (JSC::DFG::AbstractState::initialize): * dfg/DFGAbstractValue.h: (JSC::DFG::AbstractValue::setMostSpecific): (AbstractValue): * dfg/DFGByteCodeParser.cpp: (JSC::DFG::ByteCodeParser::fixVariableAccessPredictions): (JSC::DFG::ByteCodeParser::parse): * dfg/DFGDriver.cpp: (JSC::DFG::compile): (JSC::DFG::tryCompile): (JSC::DFG::tryCompileFunction): * dfg/DFGDriver.h: (DFG): (JSC::DFG::tryCompile): (JSC::DFG::tryCompileFunction): * dfg/DFGGraph.h: (JSC::DFG::Graph::Graph): (Graph): * jit/JITDriver.h: (JSC::jitCompileIfAppropriate): (JSC::jitCompileFunctionIfAppropriate): * jit/JITStubs.cpp: (JSC::DEFINE_STUB_FUNCTION): * runtime/Executable.cpp: (JSC::EvalExecutable::compileOptimized): (JSC::EvalExecutable::compileInternal): (JSC::ProgramExecutable::compileOptimized): (JSC::ProgramExecutable::compileInternal): (JSC::FunctionExecutable::compileOptimizedForCall): (JSC::FunctionExecutable::compileOptimizedForConstruct): (JSC::FunctionExecutable::compileForCallInternal): (JSC::FunctionExecutable::compileForConstructInternal): * runtime/Executable.h: (EvalExecutable): (ProgramExecutable): (FunctionExecutable): (JSC::FunctionExecutable::compileOptimizedFor): * runtime/ExecutionHarness.h: (JSC::prepareForExecution): (JSC::prepareFunctionForExecution): git-svn-id: http://svn.webkit.org/repository/webkit/trunk@125982 268f45cc-cd09-0410-ab3c-d52691b4dbfc
-
- 22 Jun, 2012 1 commit
-
-
fpizlo@apple.com authored
https://bugs.webkit.org/show_bug.cgi?id=89752 Reviewed by Geoffrey Garen. This change has two outcomes: 1) Slightly reduces the likelihood that a function will be optimized both standalone and via inlining. Previously, if you had a call sequence like foo() calls bar() exactly once, and nobody else calls bar(), then bar() would get optimized first (because it returns first) and then foo() gets optimized. If foo() can inline bar() then that means that bar() gets optimized twice. But now, if we optimize in prologues, then foo() will be optimized first. If it inlines bar(), that means that there will no longer be any calls to bar(). 2) It lets us kill some code in JITStubs. Epilogue tier-up was very different from loop tier-up, since epilogue tier-up should not attempt OSR. But prologue tier-up requires OSR (albeit really easy OSR since it's the top of the compilation unit), so it becomes just like loop tier-up. As a result, we now have one optimization hook (cti_optimize) instead of two (cti_optimize_from_loop and cti_optimize_from_ret). As a consequence of not having an optimization check in epilogues, the OSR exit code must now trigger reoptimization itself instead of just signaling the epilogue check to fire. This also adds the ability to count the number of DFG compilations, which was useful for debugging this patch and might be useful for other things in the future. * bytecode/CodeBlock.cpp: (JSC::CodeBlock::reoptimize): (JSC): * bytecode/CodeBlock.h: (CodeBlock): * dfg/DFGByteCodeParser.cpp: (JSC::DFG::ByteCodeParser::parseCodeBlock): * dfg/DFGDriver.cpp: (DFG): (JSC::DFG::getNumCompilations): (JSC::DFG::compile): * dfg/DFGDriver.h: (DFG): * dfg/DFGOSRExitCompiler.cpp: (JSC::DFG::OSRExitCompiler::handleExitCounts): * dfg/DFGOperations.cpp: * dfg/DFGOperations.h: * jit/JIT.cpp: (JSC::JIT::emitOptimizationCheck): * jit/JIT.h: * jit/JITCall32_64.cpp: (JSC::JIT::emit_op_ret): (JSC::JIT::emit_op_ret_object_or_this): * jit/JITOpcodes.cpp: (JSC::JIT::emit_op_ret): (JSC::JIT::emit_op_ret_object_or_this): (JSC::JIT::emit_op_enter): * jit/JITOpcodes32_64.cpp: (JSC::JIT::emit_op_enter): * jit/JITStubs.cpp: (JSC::DEFINE_STUB_FUNCTION): * jit/JITStubs.h: git-svn-id: http://svn.webkit.org/repository/webkit/trunk@121073 268f45cc-cd09-0410-ab3c-d52691b4dbfc
-
- 21 May, 2012 1 commit
-
-
fpizlo@apple.com authored
https://bugs.webkit.org/show_bug.cgi?id=85246 Reviewed by Gavin Barraclough. Merge r115694 from dfgopt. Changed the DFG bytecode parser (and the code that calls it) to be able to call codeBlock->dump() on the code blocks being parsed. Changed bytecode dumping to be able to print the state of get_by_id caches inline with the bytecode. Removed the old StructureStubInfo dumping code, which no longer worked right, and was incapable of telling us information about chain and list accesses. This change does not add dumping for put_by_id caches. We can add that at a later time. * bytecode/CodeBlock.cpp: (JSC::CodeBlock::printUnaryOp): (JSC::CodeBlock::printBinaryOp): (JSC::CodeBlock::printConditionalJump): (JSC::CodeBlock::printGetByIdOp): (JSC::dumpStructure): (JSC): (JSC::dumpChain): (JSC::CodeBlock::printGetByIdCacheStatus): (JSC::CodeBlock::printCallOp): (JSC::CodeBlock::printPutByIdOp): (JSC::printGlobalResolveInfo): (JSC::CodeBlock::printStructure): (JSC::CodeBlock::printStructures): (JSC::CodeBlock::dump): (JSC::CodeBlock::visitStructures): (JSC::ProgramCodeBlock::jitCompileImpl): (JSC::EvalCodeBlock::jitCompileImpl): (JSC::FunctionCodeBlock::jitCompileImpl): * bytecode/CodeBlock.h: (CodeBlock): (JSC::CodeBlock::jitCompile): (ProgramCodeBlock): (EvalCodeBlock): (FunctionCodeBlock): * dfg/DFGByteCodeParser.cpp: (JSC::DFG::ByteCodeParser::ByteCodeParser): (ByteCodeParser): (JSC::DFG::ByteCodeParser::parseCodeBlock): (JSC::DFG::parse): * dfg/DFGByteCodeParser.h: (DFG): * dfg/DFGDriver.cpp: (JSC::DFG::compile): (JSC::DFG::tryCompile): (JSC::DFG::tryCompileFunction): * dfg/DFGDriver.h: (DFG): (JSC::DFG::tryCompile): (JSC::DFG::tryCompileFunction): * dfg/DFGOSRExitCompiler.cpp: * jit/JITDriver.h: (JSC::jitCompileIfAppropriate): (JSC::jitCompileFunctionIfAppropriate): * llint/LLIntSlowPaths.cpp: (JSC::LLInt::jitCompileAndSetHeuristics): * runtime/Executable.cpp: (JSC::EvalExecutable::jitCompile): (JSC::EvalExecutable::compileInternal): (JSC::ProgramExecutable::jitCompile): (JSC::ProgramExecutable::compileInternal): (JSC::FunctionExecutable::jitCompileForCall): (JSC::FunctionExecutable::jitCompileForConstruct): (JSC::FunctionExecutable::compileForCallInternal): (JSC::FunctionExecutable::compileForConstructInternal): * runtime/Executable.h: (EvalExecutable): (ProgramExecutable): (FunctionExecutable): (JSC::FunctionExecutable::jitCompileFor): * runtime/ExecutionHarness.h: (JSC::prepareForExecution): (JSC::prepareFunctionForExecution): git-svn-id: http://svn.webkit.org/repository/webkit/trunk@117823 268f45cc-cd09-0410-ab3c-d52691b4dbfc
-
- 21 Jan, 2012 1 commit
-
-
fpizlo@apple.com authored
https://bugs.webkit.org/show_bug.cgi?id=76729 <rdar://problem/10731545> Reviewed by Gavin Barraclough. Changed the relevant JIT driver functions to take JSGlobalData& instead of ExecState*, since really they just needed the global data. * dfg/DFGDriver.cpp: (JSC::DFG::compile): (JSC::DFG::tryCompile): (JSC::DFG::tryCompileFunction): * dfg/DFGDriver.h: (JSC::DFG::tryCompile): (JSC::DFG::tryCompileFunction): * jit/JITDriver.h: (JSC::jitCompileIfAppropriate): (JSC::jitCompileFunctionIfAppropriate): * runtime/Executable.cpp: (JSC::EvalExecutable::compileInternal): (JSC::ProgramExecutable::compileInternal): (JSC::FunctionExecutable::compileForCallInternal): (JSC::FunctionExecutable::compileForConstructInternal): git-svn-id: http://svn.webkit.org/repository/webkit/trunk@105579 268f45cc-cd09-0410-ab3c-d52691b4dbfc
-
- 21 Oct, 2011 1 commit
-
-
fpizlo@apple.com authored
argument registers at the time of compilation https://bugs.webkit.org/show_bug.cgi?id=70578 Reviewed by Oliver Hunt. * bytecode/CodeBlock.cpp: * dfg/DFGDriver.cpp: (JSC::DFG::compile): (JSC::DFG::tryCompile): (JSC::DFG::tryCompileFunction): * dfg/DFGDriver.h: (JSC::DFG::tryCompileFunction): * dfg/DFGGraph.cpp: (JSC::DFG::Graph::predictArgumentTypes): * dfg/DFGGraph.h: * runtime/Executable.cpp: (JSC::FunctionExecutable::compileOptimizedForCall): (JSC::FunctionExecutable::compileOptimizedForConstruct): (JSC::FunctionExecutable::compileForCallInternal): (JSC::FunctionExecutable::compileForConstructInternal): * runtime/Executable.h: (JSC::FunctionExecutable::compileForCall): (JSC::FunctionExecutable::compileForConstruct): (JSC::FunctionExecutable::compileFor): (JSC::FunctionExecutable::compileOptimizedFor): git-svn-id: http://svn.webkit.org/repository/webkit/trunk@98082 268f45cc-cd09-0410-ab3c-d52691b4dbfc
-
- 06 Sep, 2011 1 commit
-
-
fpizlo@apple.com authored
https://bugs.webkit.org/show_bug.cgi?id=67176 Reviewed by Gavin Barraclough. This adds the ability to have multiple CodeBlocks associated with a particular role in an Executable. These are stored in descending order of compiler tier. CodeBlocks are optimized when a counter (m_executeCounter) that is incremented in loops and epilogues becomes positive. Optimizing means that all calls to the old CodeBlock are unlinked. The DFG can now pull in predictions from ValueProfiles, and propagate them along the graph. To support the new phase while maintaing some level of abstraction, a DFGDriver was introduced that encapsulates how to run the DFG compiler. This is turned off by default because it's not yet a performance win on all benchmarks. It speeds up crypto and richards by 10% and 6% respectively, but still does not do as good of a job as it could. Notably, the DFG backend has not changed, and is largely oblivious to the new information being made available to it. When turned off (the default), this patch is performance neutral. * CMakeLists.txt: * GNUmakefile.am: * GNUmakefile.list.am: * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops: * JavaScriptCore.vcproj/JavaScriptCore/copy-files.cmd: * JavaScriptCore.xcodeproj/project.pbxproj: * assembler/MacroAssemblerX86.h: (JSC::MacroAssemblerX86::branchAdd32): * assembler/MacroAssemblerX86_64.h: (JSC::MacroAssemblerX86_64::branchAdd32): * bytecode/CodeBlock.cpp: (JSC::CodeBlock::CodeBlock): (JSC::CodeBlock::~CodeBlock): (JSC::CodeBlock::visitAggregate): (JSC::CallLinkInfo::unlink): (JSC::CodeBlock::unlinkCalls): (JSC::CodeBlock::unlinkIncomingCalls): (JSC::CodeBlock::clearEvalCache): (JSC::replaceExistingEntries): (JSC::CodeBlock::copyDataFromAlternative): (JSC::ProgramCodeBlock::replacement): (JSC::EvalCodeBlock::replacement): (JSC::FunctionCodeBlock::replacement): (JSC::ProgramCodeBlock::compileOptimized): (JSC::EvalCodeBlock::compileOptimized): (JSC::FunctionCodeBlock::compileOptimized): * bytecode/CodeBlock.h: (JSC::GlobalCodeBlock::GlobalCodeBlock): (JSC::ProgramCodeBlock::ProgramCodeBlock): (JSC::EvalCodeBlock::EvalCodeBlock): (JSC::FunctionCodeBlock::FunctionCodeBlock): * bytecode/ValueProfile.h: (JSC::ValueProfile::dump): (JSC::ValueProfile::computeStatistics): * bytecompiler/BytecodeGenerator.cpp: (JSC::BytecodeGenerator::BytecodeGenerator): * bytecompiler/BytecodeGenerator.h: * dfg/DFGByteCodeParser.cpp: (JSC::DFG::ByteCodeParser::ByteCodeParser): (JSC::DFG::ByteCodeParser::addCall): (JSC::DFG::ByteCodeParser::dynamicallyPredict): (JSC::DFG::ByteCodeParser::parseBlock): (JSC::DFG::parse): * dfg/DFGDriver.cpp: Added. (JSC::DFG::compile): (JSC::DFG::tryCompile): (JSC::DFG::tryCompileFunction): * dfg/DFGDriver.h: Added. (JSC::DFG::tryCompile): (JSC::DFG::tryCompileFunction): * dfg/DFGGraph.cpp: (JSC::DFG::Graph::dump): (JSC::DFG::Graph::predictArgumentTypes): * dfg/DFGGraph.h: (JSC::DFG::Graph::predict): (JSC::DFG::Graph::predictGlobalVar): (JSC::DFG::Graph::isConstant): (JSC::DFG::Graph::isJSConstant): (JSC::DFG::Graph::isInt32Constant): (JSC::DFG::Graph::isDoubleConstant): (JSC::DFG::Graph::valueOfJSConstant): (JSC::DFG::Graph::valueOfInt32Constant): (JSC::DFG::Graph::valueOfDoubleConstant): * dfg/DFGJITCompiler.cpp: (JSC::DFG::JITCompiler::link): * dfg/DFGJITCompiler.h: (JSC::DFG::JITCompiler::isConstant): (JSC::DFG::JITCompiler::isJSConstant): (JSC::DFG::JITCompiler::isInt32Constant): (JSC::DFG::JITCompiler::isDoubleConstant): (JSC::DFG::JITCompiler::valueOfJSConstant): (JSC::DFG::JITCompiler::valueOfInt32Constant): (JSC::DFG::JITCompiler::valueOfDoubleConstant): * dfg/DFGNode.h: (JSC::DFG::isCellPrediction): (JSC::DFG::isNumberPrediction): (JSC::DFG::predictionToString): (JSC::DFG::mergePrediction): (JSC::DFG::makePrediction): (JSC::DFG::Node::valueOfJSConstant): (JSC::DFG::Node::isInt32Constant): (JSC::DFG::Node::isDoubleConstant): (JSC::DFG::Node::valueOfInt32Constant): (JSC::DFG::Node::valueOfDoubleConstant): (JSC::DFG::Node::predict): * dfg/DFGPropagation.cpp: Added. (JSC::DFG::Propagator::Propagator): (JSC::DFG::Propagator::fixpoint): (JSC::DFG::Propagator::setPrediction): (JSC::DFG::Propagator::mergePrediction): (JSC::DFG::Propagator::propagateNode): (JSC::DFG::Propagator::propagateForward): (JSC::DFG::Propagator::propagateBackward): (JSC::DFG::propagate): * dfg/DFGPropagation.h: Added. (JSC::DFG::propagate): * dfg/DFGRepatch.cpp: (JSC::DFG::dfgLinkFor): * heap/HandleHeap.h: (JSC::HandleHeap::Node::Node): * jit/JIT.cpp: (JSC::JIT::emitOptimizationCheck): (JSC::JIT::emitTimeoutCheck): (JSC::JIT::privateCompile): (JSC::JIT::linkFor): * jit/JIT.h: (JSC::JIT::emitOptimizationCheck): * jit/JITCall32_64.cpp: (JSC::JIT::emit_op_ret): (JSC::JIT::emit_op_ret_object_or_this): * jit/JITCode.h: (JSC::JITCode::JITCode): (JSC::JITCode::bottomTierJIT): (JSC::JITCode::topTierJIT): (JSC::JITCode::nextTierJIT): * jit/JITOpcodes.cpp: (JSC::JIT::emit_op_ret): (JSC::JIT::emit_op_ret_object_or_this): * jit/JITStubs.cpp: (JSC::DEFINE_STUB_FUNCTION): * jit/JITStubs.h: * runtime/Executable.cpp: (JSC::EvalExecutable::compileOptimized): (JSC::EvalExecutable::compileInternal): (JSC::ProgramExecutable::compileOptimized): (JSC::ProgramExecutable::compileInternal): (JSC::FunctionExecutable::compileOptimizedForCall): (JSC::FunctionExecutable::compileOptimizedForConstruct): (JSC::FunctionExecutable::compileForCallInternal): (JSC::FunctionExecutable::compileForConstructInternal): * runtime/Executable.h: (JSC::EvalExecutable::compile): (JSC::ProgramExecutable::compile): (JSC::FunctionExecutable::compileForCall): (JSC::FunctionExecutable::compileForConstruct): (JSC::FunctionExecutable::compileOptimizedFor): * wtf/Platform.h: * wtf/SentinelLinkedList.h: (WTF::BasicRawSentinelNode::BasicRawSentinelNode): (WTF::BasicRawSentinelNode::setPrev): (WTF::BasicRawSentinelNode::setNext): (WTF::BasicRawSentinelNode::prev): (WTF::BasicRawSentinelNode::next): (WTF::BasicRawSentinelNode::isOnList): (WTF::::remove): (WTF::::SentinelLinkedList): (WTF::::begin): (WTF::::end): (WTF::::push): git-svn-id: http://svn.webkit.org/repository/webkit/trunk@94559 268f45cc-cd09-0410-ab3c-d52691b4dbfc
-
- 17 Mar, 2011 1 commit
-
-
barraclough@apple.com authored
Move node generation out to separate function, move binarySearch algorithm out to StdLibExtras, fix Graph::dump() to print comma between non-node children, even if there are no node children. Reviewed by Sam Weinig. * bytecode/CodeBlock.h: (JSC::getCallReturnOffset): (JSC::CodeBlock::getStubInfo): (JSC::CodeBlock::getCallLinkInfo): (JSC::CodeBlock::getMethodCallLinkInfo): (JSC::CodeBlock::bytecodeOffset): - Move binaryChop to binarySearch in StdLibExtras * dfg/DFGByteCodeParser.cpp: (JSC::DFG::ByteCodeParser::ByteCodeParser): (JSC::DFG::ByteCodeParser::parse): (JSC::DFG::parse): - Make m_noArithmetic a member, initialize m_currentIndex in the constructor. * dfg/DFGByteCodeParser.h: - Change parse() to not take a start index (always 0). * dfg/DFGGraph.cpp: (JSC::DFG::Graph::dump): - Fix Graph::dump() to print comma between non-node children, even if there are no node children. * dfg/DFGJITCodeGenerator.h: (JSC::DFG::JITCodeGenerator::JITCodeGenerator): - Initialize m_compileIndex in constructor. * dfg/DFGNonSpeculativeJIT.cpp: (JSC::DFG::NonSpeculativeJIT::compile): * dfg/DFGNonSpeculativeJIT.h: - Spilt out compilation of individual node. * dfg/DFGOperations.cpp: (JSC::DFG::operationConvertThis): * dfg/DFGOperations.h: - Cleanup parameter name. * dfg/DFGSpeculativeJIT.cpp: (JSC::DFG::SpeculativeJIT::compile): * dfg/DFGSpeculativeJIT.h: - Spilt out compilation of individual node. * runtime/Executable.cpp: (JSC::tryDFGCompile): - Change parse() to not take a start index (always 0). * wtf/StdLibExtras.h: (WTF::binarySearch): - Move binaryChop to binarySearch in StdLibExtras git-svn-id: http://svn.webkit.org/repository/webkit/trunk@81403 268f45cc-cd09-0410-ab3c-d52691b4dbfc
-
- 14 Mar, 2011 1 commit
-
-
barraclough@apple.com authored
Reviewed by Geoffrey Garen & Oliver Hunt. The JSC JIT presently generates code directly from the bytecode used by the interpreter. This is not an optimal intermediate representation for JIT code generation, since it does not capture liveness information of values, and provides little opportunity to perform any static analysis for even primitive types. The JIT currently generates two code paths, a fast path handling common cases, and a slower path handling less common operand types. However the slow path jumps back into the fast path, meaning that information arising from the earlier type checks cannot be propagated to later operations. This patch adds: * a dataflow intermediate representation capable of describing a single basic block of operations, * a mechanism to convert a simple, single-block bytecode functions to the new IR, * and a JIT code generator capable of generating code from this representation. The JIT generates two code paths, with the slower path not reentering the fast path mid-block, allowing speculative optimizations to be made on the hot path, with type information arising from these speculative decisions able to be propagated through the dataflow. Code generation of both speculative and non-speculative paths exploits the type and liveness information represented in the dataflow graph to attempt to avoid redundant boxing and type-checking of values, and to remove unnecessary spills of temporary values to the RegisterFile. The dataflow JIT currently can only support a subset of bytecode operations, limited to arithmetic, bit-ops, and basic property access. Functions that cannot be compiled by the dataflow JIT will be run using the existing JIT. The coverage of the dataflow JIT will be expanded to include, control-flow, function calls, and then the long-tail of remaining bytecode instructions. The JIT presently only support JSVALUE64, and as a consequence of this only supports x86-64. The status of the dataflow JIT is currently work-in-progress. Limitations of the present JIT code generation may cause performance regressions, particularly: * the policy to only generate arithmetic code on the speculative path using integer instructions, never using floating point. * the policy to only generate arithmetic code on the non-speculative path using floating point instructions, never using integer. * always generating JSValue adds on the non-speculative path as a call out to a C-function, never handling this in JIT code. * always assuming by-Value property accesses on the speculative path to be array accesses. * generating all by-Value property accesses from the non-speculative path as a call out to a C-function. * generating all by-Indentifer property accesses as a call out to a C-function. Due to these regressions, the code is landed in a state where it is disabled in most cases by the ENABLE_DFG_JIT_RESTRICTIONS guard in Platform.h. As these regressions are addressed, the JIT will be allowed to trigger in more cases. * JavaScriptCore.xcodeproj/project.pbxproj: - Added new files to Xcode project. * dfg: Added. - Added directory for new code. * dfg/DFGByteCodeParser.cpp: Added. * dfg/DFGByteCodeParser.h: Added. - Contruct a DFG::Graph representation from a bytecode CodeBlock. * dfg/DFGGenerationInfo.h: Added. - Track type & register information for VirtualRegisters during JIT code generation. * dfg/DFGGraph.cpp: Added. * dfg/DFGGraph.h: Added. - Dataflow graph intermediate representation for code generation. * dfg/DFGJITCodeGenerator.cpp: Added. * dfg/DFGJITCodeGenerator.h: Added. - Base class for SpeculativeJIT & NonSpeculativeJIT to share common functionality. * dfg/DFGJITCompiler.cpp: Added. * dfg/DFGJITCompiler.h: Added. - Class responsible for driving code generation of speculativeJIT & non-speculative code paths from the dataflow graph. * dfg/DFGNonSpeculativeJIT.cpp: Added. * dfg/DFGNonSpeculativeJIT.h: Added. - Used to generate the non-speculative code path, this make no assumptions about operand types. * dfg/DFGOperations.cpp: Added. * dfg/DFGOperations.h: Added. - Helper functions called from the JIT generated code. * dfg/DFGRegisterBank.h: Added. - Used to track contents of physical registers during JIT code generation. * dfg/DFGSpeculativeJIT.cpp: Added. * dfg/DFGSpeculativeJIT.h: Added. - Used to generate the speculative code path, this make assumptions about operand types to enable optimization. * runtime/Executable.cpp: - Add code to attempt to use the DFG JIT to compile a function, with fallback to the existing JIT. * wtf/Platform.h: - Added compile guards to enable the DFG JIT. git-svn-id: http://svn.webkit.org/repository/webkit/trunk@81079 268f45cc-cd09-0410-ab3c-d52691b4dbfc
-
- 09 Feb, 2011 1 commit
-
-
pvarga@webkit.org authored
https://bugs.webkit.org/show_bug.cgi?id=53496 Reviewed by Gavin Barraclough. Rollback r77626 with windows build fix. Source/JavaScriptCore: * JavaScriptCore.exp: * JavaScriptCore.gyp/JavaScriptCore.gyp: * JavaScriptCore.gypi: * JavaScriptCore.pro: * JavaScriptCore.xcodeproj/project.pbxproj: * create_regex_tables: * runtime/RegExp.cpp: * wtf/Platform.h: * yarr/Yarr.h: * yarr/YarrJIT.cpp: * yarr/YarrJIT.h: * yarr/YarrParser.h: * yarr/YarrPattern.h: * yarr/YarrSyntaxChecker.h: * yarr/yarr.pri: Added. Source/WebCore: No new tests needed. * Android.jscbindings.mk: * CMakeLists.txt: * ForwardingHeaders/pcre/pcre.h: Removed. * ForwardingHeaders/yarr/Yarr.h: Added. * ForwardingHeaders/yarr/YarrInterpreter.h: Added. * ForwardingHeaders/yarr/YarrPattern.h: Added. * WebCore.gyp/WebCore.gyp: * WebCore.pro: * WebCore.vcproj/WebCore.vcproj: * WebCore.vcproj/copyForwardingHeaders.cmd: * platform/text/RegularExpression.cpp: (WebCore::RegularExpression::Private::create): (WebCore::RegularExpression::Private::Private): (WebCore::RegularExpression::Private::compile): (WebCore::RegularExpression::match): git-svn-id: http://svn.webkit.org/repository/webkit/trunk@78042 268f45cc-cd09-0410-ab3c-d52691b4dbfc
-
- 04 Feb, 2011 2 commits
-
-
loislo@chromium.org authored
Unreviewed, rolling out r77625 and r77626. http://trac.webkit.org/changeset/77625 http://trac.webkit.org/changeset/77626 https://bugs.webkit.org/show_bug.cgi?id=53765 It broke Windows builds (Requested by Ossy_ on #webkit). * Android.jscbindings.mk: * CMakeLists.txt: * ForwardingHeaders/pcre/pcre.h: Added. * ForwardingHeaders/yarr/Yarr.h: Removed. * ForwardingHeaders/yarr/YarrInterpreter.h: Removed. * ForwardingHeaders/yarr/YarrPattern.h: Removed. * WebCore.gyp/WebCore.gyp: * WebCore.pro: * WebCore.vcproj/WebCore.vcproj: * WebCore.vcproj/copyForwardingHeaders.cmd: * platform/text/RegularExpression.cpp: (WebCore::RegularExpression::Private::regexp): (WebCore::RegularExpression::Private::compile): (WebCore::RegularExpression::Private::Private): (WebCore::RegularExpression::Private::create): (WebCore::RegularExpression::Private::~Private): (WebCore::RegularExpression::match): 2011-02-04 Sheriff Bot <webkit.review.bot@gmail.com> Unreviewed, rolling out r77625 and r77626. http://trac.webkit.org/changeset/77625 http://trac.webkit.org/changeset/77626 https://bugs.webkit.org/show_bug.cgi?id=53765 It broke Windows builds (Requested by Ossy_ on #webkit). * JavaScriptCore.exp: * JavaScriptCore.gyp/JavaScriptCore.gyp: * JavaScriptCore.gypi: * JavaScriptCore.pro: * JavaScriptCore.xcodeproj/project.pbxproj: * create_regex_tables: * runtime/RegExp.cpp: * wtf/Platform.h: * yarr/Yarr.h: * yarr/YarrJIT.cpp: * yarr/YarrJIT.h: * yarr/YarrParser.h: * yarr/YarrPattern.h: * yarr/YarrSyntaxChecker.h: * yarr/yarr.pri: Removed. git-svn-id: http://svn.webkit.org/repository/webkit/trunk@77630 268f45cc-cd09-0410-ab3c-d52691b4dbfc
-
pvarga@webkit.org authored
Reviewed by Gavin Barraclough. Replace PCRE with Yarr in WebCore https://bugs.webkit.org/show_bug.cgi?id=53496 * JavaScriptCore.exp: * JavaScriptCore.gyp/JavaScriptCore.gyp: * JavaScriptCore.gypi: * JavaScriptCore.pro: * JavaScriptCore.xcodeproj/project.pbxproj: * create_regex_tables: * runtime/RegExp.cpp: * wtf/Platform.h: * yarr/Yarr.h: * yarr/YarrJIT.cpp: * yarr/YarrJIT.h: * yarr/YarrParser.h: * yarr/YarrPattern.h: * yarr/YarrSyntaxChecker.h: * yarr/yarr.pri: Added. 2011-02-04 Peter Varga <pvarga@webkit.org> Reviewed by Gavin Barraclough. Replace PCRE with Yarr in WebCore https://bugs.webkit.org/show_bug.cgi?id=53496 No new tests needed. * Android.jscbindings.mk: * CMakeLists.txt: * ForwardingHeaders/pcre/pcre.h: Removed. * ForwardingHeaders/yarr/Yarr.h: Added. * ForwardingHeaders/yarr/YarrInterpreter.h: Added. * ForwardingHeaders/yarr/YarrPattern.h: Added. * WebCore.gyp/WebCore.gyp: * WebCore.pro: * WebCore.vcproj/WebCore.vcproj: * WebCore.vcproj/copyForwardingHeaders.cmd: * platform/text/RegularExpression.cpp: (WebCore::RegularExpression::Private::create): (WebCore::RegularExpression::Private::Private): (WebCore::RegularExpression::Private::compile): (WebCore::RegularExpression::match): git-svn-id: http://svn.webkit.org/repository/webkit/trunk@77625 268f45cc-cd09-0410-ab3c-d52691b4dbfc
-
- 10 Jan, 2011 1 commit
-
-
barraclough@apple.com authored
Reviewed by Oliver Hunt. Source/JavaScriptCore: From chapter 16 the spec: An implementation must report most errors at the time the relevant ECMAScript language construct is evaluated. An early error is an error that can be detected and reported prior to the evaluation of any construct in the Program containing the error. An implementation must report early errors in a Program prior to the first evaluation of that Program. Early errors in eval code are reported at the time eval is called but prior to evaluation of any construct within the eval code. All errors that are not early errors are runtime errors. An implementation must treat any instance of the following kinds of errors as an early error: * Any syntax error." * JavaScriptCore.xcodeproj/project.pbxproj: Added new files. * bytecode/CodeBlock.cpp: Removed op_throw_syntax_error. * bytecode/Opcode.h: Removed op_throw_syntax_error. * bytecompiler/BytecodeGenerator.cpp: (JSC::BytecodeGenerator::generate): If m_expressionTooDeep then throw a runtime error. (JSC::BytecodeGenerator::BytecodeGenerator): Initialize m_expressionTooDeep. (JSC::BytecodeGenerator::emitThrowExpressionTooDeepException): Sets m_expressionTooDeep. * bytecompiler/BytecodeGenerator.h: Added m_expressionTooDeep, removed emitThrowSyntaxError. * bytecompiler/NodesCodegen.cpp: (JSC::RegExpNode::emitBytecode): (JSC::ContinueNode::emitBytecode): (JSC::BreakNode::emitBytecode): (JSC::ReturnNode::emitBytecode): (JSC::LabelNode::emitBytecode): Conditions that threw syntax error are now handled during parsing; during bytecompilation these are now just ASSERTs. * interpreter/Interpreter.cpp: (JSC::Interpreter::privateExecute): * jit/JIT.cpp: (JSC::JIT::privateCompileMainPass): * jit/JIT.h: * jit/JITOpcodes.cpp: * jit/JITOpcodes32_64.cpp: * jit/JITStubs.cpp: * jit/JITStubs.h: Removed op_throw_syntax_error. * parser/ASTBuilder.h: (JSC::ASTBuilder::createRegExp): Renamed; added syntax check. * parser/JSParser.cpp: (JSC::JSParser::breakIsValid): (JSC::JSParser::hasLabel): (JSC::JSParser::Scope::Scope): (JSC::JSParser::Scope::setIsFunction): (JSC::JSParser::Scope::isFunctionBoundary): (JSC::JSParser::ScopeRef::hasContainingScope): (JSC::JSParser::ScopeRef::containingScope): (JSC::JSParser::AutoPopScopeRef::AutoPopScopeRef): (JSC::JSParser::AutoPopScopeRef::~AutoPopScopeRef): (JSC::JSParser::AutoPopScopeRef::setPopped): (JSC::JSParser::popScopeInternal): (JSC::JSParser::popScope): (JSC::jsParse): (JSC::JSParser::JSParser): (JSC::JSParser::parseProgram): (JSC::JSParser::parseBreakStatement): (JSC::JSParser::parseContinueStatement): (JSC::JSParser::parseReturnStatement): (JSC::JSParser::parseTryStatement): (JSC::JSParser::parseFunctionInfo): (JSC::JSParser::parseExpressionOrLabelStatement): (JSC::JSParser::parsePrimaryExpression): * parser/JSParser.h: * parser/Nodes.h: * parser/Parser.cpp: (JSC::Parser::parse): * parser/SyntaxChecker.h: (JSC::SyntaxChecker::createRegExp): Renamed; added syntax check. * runtime/ExceptionHelpers.cpp: (JSC::createOutOfMemoryError): (JSC::throwOutOfMemoryError): * runtime/ExceptionHelpers.h: Broke out createOutOfMemoryError. * runtime/Executable.cpp: (JSC::EvalExecutable::compileInternal): (JSC::ProgramExecutable::compileInternal): (JSC::FunctionExecutable::compileForCallInternal): (JSC::FunctionExecutable::compileForConstructInternal): Add check for exception after bytecode generation. * runtime/RegExpConstructor.cpp: (JSC::constructRegExp): * runtime/RegExpPrototype.cpp: (JSC::regExpProtoFuncCompile): RegExp error prefixes not included in error string. * yarr/RegexParser.h: (JSC::Yarr::Parser::parse): Removed regexBegin/regexEnd/regexError. * yarr/RegexPattern.cpp: (JSC::Yarr::RegexPatternConstructor::regexBegin): Removed regexEnd/regexError. (JSC::Yarr::compileRegex): Add call to regexBegin (no longer called from the parser). * yarr/YarrSyntaxChecker.cpp: Added. (JSC::Yarr::SyntaxChecker::assertionBOL): (JSC::Yarr::SyntaxChecker::assertionEOL): (JSC::Yarr::SyntaxChecker::assertionWordBoundary): (JSC::Yarr::SyntaxChecker::atomPatternCharacter): (JSC::Yarr::SyntaxChecker::atomBuiltInCharacterClass): (JSC::Yarr::SyntaxChecker::atomCharacterClassBegin): (JSC::Yarr::SyntaxChecker::atomCharacterClassAtom): (JSC::Yarr::SyntaxChecker::atomCharacterClassRange): (JSC::Yarr::SyntaxChecker::atomCharacterClassBuiltIn): (JSC::Yarr::SyntaxChecker::atomCharacterClassEnd): (JSC::Yarr::SyntaxChecker::atomParenthesesSubpatternBegin): (JSC::Yarr::SyntaxChecker::atomParentheticalAssertionBegin): (JSC::Yarr::SyntaxChecker::atomParenthesesEnd): (JSC::Yarr::SyntaxChecker::atomBackReference): (JSC::Yarr::SyntaxChecker::quantifyAtom): (JSC::Yarr::SyntaxChecker::disjunction): (JSC::Yarr::checkSyntax): * yarr/YarrSyntaxChecker.h: Added. Check RegExp syntax. LayoutTests: Fix syntax errors in layout tests, and update expected results. * editing/selection/select-crash-001.html: * editing/selection/select-crash-002.html: * fast/canvas/webgl/renderbuffer-initialization.html: * fast/forms/25153.html: * fast/forms/textfield-drag-into-disabled.html: * fast/js/exception-codegen-crash-expected.txt: * fast/js/exception-codegen-crash.html: * fast/js/kde/parse-expected.txt: * fast/js/kde/script-tests/parse.js: * fast/js/large-expressions-expected.txt: * fast/js/named-function-expression-expected.txt: * fast/js/parser-syntax-check-expected.txt: * fast/js/script-tests/large-expressions.js: * fast/js/script-tests/named-function-expression.js: * fast/js/script-tests/parser-syntax-check.js: * fast/js/sputnik/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A11.1_T3-expected.txt: * fast/js/sputnik/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A11_T3-expected.txt: * fast/js/sputnik/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A12.1_T3-expected.txt: * fast/js/sputnik/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A12_T3-expected.txt: * fast/js/sputnik/Conformance/12_Statement/12.7_The_continue_Statement/S12.7_A1_T1-expected.txt: * fast/js/sputnik/Conformance/12_Statement/12.7_The_continue_Statement/S12.7_A1_T2-expected.txt: * fast/js/sputnik/Conformance/12_Statement/12.7_The_continue_Statement/S12.7_A1_T3-expected.txt: * fast/js/sputnik/Conformance/12_Statement/12.7_The_continue_Statement/S12.7_A1_T4-expected.txt: * fast/js/sputnik/Conformance/12_Statement/12.7_The_continue_Statement/S12.7_A5_T1-expected.txt: * fast/js/sputnik/Conformance/12_Statement/12.7_The_continue_Statement/S12.7_A5_T2-expected.txt: * fast/js/sputnik/Conformance/12_Statement/12.7_The_continue_Statement/S12.7_A5_T3-expected.txt: * fast/js/sputnik/Conformance/12_Statement/12.7_The_continue_Statement/S12.7_A6-expected.txt: * fast/js/sputnik/Conformance/12_Statement/12.7_The_continue_Statement/S12.7_A8_T1-expected.txt: * fast/js/sputnik/Conformance/12_Statement/12.7_The_continue_Statement/S12.7_A8_T2-expected.txt: * fast/js/sputnik/Conformance/12_Statement/12.8_The_break_Statement/S12.8_A1_T1-expected.txt: * fast/js/sputnik/Conformance/12_Statement/12.8_The_break_Statement/S12.8_A1_T2-expected.txt: * fast/js/sputnik/Conformance/12_Statement/12.8_The_break_Statement/S12.8_A1_T3-expected.txt: * fast/js/sputnik/Conformance/12_Statement/12.8_The_break_Statement/S12.8_A1_T4-expected.txt: * fast/js/sputnik/Conformance/12_Statement/12.8_The_break_Statement/S12.8_A5_T1-expected.txt: * fast/js/sputnik/Conformance/12_Statement/12.8_The_break_Statement/S12.8_A5_T2-expected.txt: * fast/js/sputnik/Conformance/12_Statement/12.8_The_break_Statement/S12.8_A5_T3-expected.txt: * fast/js/sputnik/Conformance/12_Statement/12.8_The_break_Statement/S12.8_A6-expected.txt: * fast/js/sputnik/Conformance/12_Statement/12.8_The_break_Statement/S12.8_A8_T1-expected.txt: * fast/js/sputnik/Conformance/12_Statement/12.8_The_break_Statement/S12.8_A8_T2-expected.txt: * fast/js/sputnik/Conformance/12_Statement/12.9_The_return_Statement/S12.9_A1_T1-expected.txt: * fast/js/sputnik/Conformance/12_Statement/12.9_The_return_Statement/S12.9_A1_T10-expected.txt: * fast/js/sputnik/Conformance/12_Statement/12.9_The_return_Statement/S12.9_A1_T2-expected.txt: * fast/js/sputnik/Conformance/12_Statement/12.9_The_return_Statement/S12.9_A1_T3-expected.txt: * fast/js/sputnik/Conformance/12_Statement/12.9_The_return_Statement/S12.9_A1_T4-expected.txt: * fast/js/sputnik/Conformance/12_Statement/12.9_The_return_Statement/S12.9_A1_T5-expected.txt: * fast/js/sputnik/Conformance/12_Statement/12.9_The_return_Statement/S12.9_A1_T6-expected.txt: * fast/js/sputnik/Conformance/12_Statement/12.9_The_return_Statement/S12.9_A1_T7-expected.txt: * fast/js/sputnik/Conformance/12_Statement/12.9_The_return_Statement/S12.9_A1_T8-expected.txt: * fast/js/sputnik/Conformance/12_Statement/12.9_The_return_Statement/S12.9_A1_T9-expected.txt: * http/tests/security/isolatedWorld/events.html: * http/tests/security/isolatedWorld/userGestureEvents.html: * svg/custom/resources/use-instanceRoot-event-listeners.js: * svg/custom/rgbcolor-syntax.svg: * svg/custom/use-instanceRoot-modifications.svg: * svg/custom/use-property-changes-through-svg-dom.svg: * webarchive/adopt-attribute-styled-body-webarchive-expected.webarchive: * webarchive/resources/adopt-attribute-styled-body-iframe.html: git-svn-id: http://svn.webkit.org/repository/webkit/trunk@75408 268f45cc-cd09-0410-ab3c-d52691b4dbfc
-
- 08 Jan, 2011 1 commit
-
-
abarth@webkit.org authored
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@75314 268f45cc-cd09-0410-ab3c-d52691b4dbfc
-
- 09 Sep, 2009 1 commit
-
-
kevino@webkit.org authored
[wx port] Move functions in TemporaryLinkStubs.cpp out to files where they belong. https://bugs.webkit.org/show_bug.cgi?id=29088 git-svn-id: http://svn.webkit.org/repository/webkit/trunk@48213 268f45cc-cd09-0410-ab3c-d52691b4dbfc
-
- 07 Apr, 2009 1 commit
-
-
aroben@apple.com authored
Rubber-stamped in advance by Dave Hyatt. * WebCore.vcproj/WebCore.vcproj: Added SystemInfo.{cpp,h}, and let VS have its way with the rest of the file. * platform/win/ScrollbarThemeWin.cpp: Moved isRunningOnVistaOrLater from here... * platform/win/SystemInfo.cpp: Added. (WebCore::isRunningOnVistaOrLater): ...to here. * platform/win/SystemInfo.h: Added. git-svn-id: http://svn.webkit.org/repository/webkit/trunk@42288 268f45cc-cd09-0410-ab3c-d52691b4dbfc
-
- 30 Oct, 2008 1 commit
-
-
timothy@apple.com authored
that allows starting and stopping the profiler remotely for use in conjunction with the profiler's DTace probes. https://bugs.webkit.org/show_bug.cgi?id=21719 Reviewed by Timothy Hatcher. * JavaScriptCore.xcodeproj/project.pbxproj: * kjs/JSGlobalData.cpp: (JSC::JSGlobalData::JSGlobalData): Calls startProfilerServerIfNeeded. * profiler/ProfilerServer.h: Added. * profiler/ProfilerServer.mm: Added. (+[ProfilerServer sharedProfileServer]): (-[ProfilerServer init]): (-[ProfilerServer startProfiling]): (-[ProfilerServer stopProfiling]): (JSC::startProfilerServerIfNeeded): git-svn-id: http://svn.webkit.org/repository/webkit/trunk@38022 268f45cc-cd09-0410-ab3c-d52691b4dbfc
-
- 11 Aug, 2008 1 commit
-
-
aroben@apple.com authored
JavaScriptCore: Move WTF::notFound into its own header so that it can be used independently of Vector Rubberstamped by Darin Adler. * JavaScriptCore.vcproj/WTF/WTF.vcproj: * JavaScriptCore.xcodeproj/project.pbxproj: Added NotFound.h to the project. * wtf/NotFound.h: Added. Moved the notFound constant here... * wtf/Vector.h: ...from here. WebCore: Add a ForwardingHeader for wtf/NotFound.h Rubberstamped by Darin Adler. * ForwardingHeaders/wtf/NotFound.h: Added. git-svn-id: http://svn.webkit.org/repository/webkit/trunk@35665 268f45cc-cd09-0410-ab3c-d52691b4dbfc
-
- 21 May, 2008 1 commit
-
-
mrowe@apple.com authored
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@33979 268f45cc-cd09-0410-ab3c-d52691b4dbfc
-
- 23 Feb, 2008 1 commit
-
-
ddkilzer@apple.com authored
Please clarify licensing for some files <http://bugs.webkit.org/show_bug.cgi?id=14970> Reviewed by Darin. * bindings/objc/WebScriptObject.h: Added Apple BSD-style license. * bindings/objc/WebScriptObjectPrivate.h: Ditto. * platform/text/mac/ShapeArabic.c: Added ICU license from WebCore/icu/LICENSE. WebKit/mac: Please clarify licensing for some files <http://bugs.webkit.org/show_bug.cgi?id=14970> Reviewed by Darin. * Plugins/WebNetscapeDeprecatedFunctions.c: Updated copyright statement and added Apple BSD-style license. * Plugins/WebNetscapeDeprecatedFunctions.h: Ditto. WebKitTools: Please clarify licensing for some files <http://bugs.webkit.org/show_bug.cgi?id=14970> Reviewed by Darin. * DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.cpp: Added copyright statement. Replaced license with newer Apple BSD-style license. * DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.h: Ditto. * DumpRenderTree/TestNetscapePlugIn.subproj/TestObject.cpp: Ditto. * DumpRenderTree/TestNetscapePlugIn.subproj/TestObject.h: Ditto. * DumpRenderTree/TestNetscapePlugIn.subproj/main.cpp: Ditto. * DumpRenderTree/win/TestNetscapePlugin/main.c: Ditto. * mangleme/LICENSE: Added (LGPL). git-svn-id: http://svn.webkit.org/repository/webkit/trunk@30520 268f45cc-cd09-0410-ab3c-d52691b4dbfc
-
- 30 Mar, 2007 2 commits
-
-
andersca authored
* DumpRenderTree/TestNetscapePlugIn.subproj/TestObject.c: (testAllocate): (testEnumerate): Add casts. * DumpRenderTree/TestNetscapePlugIn.subproj/TestObject.h: Don't use #import, use #include. git-svn-id: http://svn.webkit.org/repository/webkit/trunk@20619 268f45cc-cd09-0410-ab3c-d52691b4dbfc
-
andersca authored
Reviewed by Geoff. Implement _NPN_Enumerate support. * JavaScriptCore.exp: * bindings/NP_jsobject.cpp: (_NPN_Enumerate): * bindings/c/c_instance.cpp: (KJS::Bindings::CInstance::getPropertyNames): * bindings/c/c_instance.h: * bindings/npapi.h: * bindings/npruntime.h: * bindings/npruntime_impl.h: * bindings/runtime.h: (KJS::Bindings::Instance::getPropertyNames): * bindings/runtime_object.cpp: (RuntimeObjectImp::getPropertyNames): * bindings/runtime_object.h: (KJS::RuntimeObjectImp::getInternalInstance): LayoutTests: Reviewed by Geoff. Add enumeration test. * plugins/netscape-enumerate-expected.txt: Added. * plugins/netscape-enumerate.html: Added. WebKit: Reviewed by Geoff. * Plugins/WebNetscapePluginPackage.m: (-[WebNetscapePluginPackage load]): Initialize pushpopupsenabledstate, poppopupsenabledstate and enumerate. * Plugins/npapi.m: (NPN_PushPopupsEnabledState): (NPN_PopPopupsEnabledState): Add stubs for these functions. * Plugins/npfunctions.h: Add new methods to NPNetscapeFuncs. WebKitTools: Reviewed by Geoff. * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj: Add TestObject.c and TestObject.h * DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.c: (pluginGetProperty): Implement the testObject property. (pluginInvoke): Implement testEnumerate which takes an object and an array and enumerates the properties of the object and adds them to the array. (pluginAllocate): Allocate the test object. (pluginDeallocate): Free the test object. * DumpRenderTree/TestNetscapePlugIn.subproj/TestObject.c: Added. * DumpRenderTree/TestNetscapePlugIn.subproj/TestObject.h: Added. Add a test object with two enumerable properties. git-svn-id: http://svn.webkit.org/repository/webkit/trunk@20613 268f45cc-cd09-0410-ab3c-d52691b4dbfc
-
- 29 Mar, 2007 1 commit
-
-
ggaren authored
Reviewed by Beth Dakin. Layout test for <rdar://problem/5091330> REGRESSION: Repro crash in -[WebBaseNetscapePluginView(WebNPPCallbacks) destroyStream:reason:] navigating away from page with DivX movie plug-in (13203) * plugins/destroy-stream-twice-expected.txt: Added. * plugins/destroy-stream-twice.html: Added. WebKit: Reviewed by Beth Dakin, reviewed by Maciej Stachowiak. Layout test for <rdar://problem/5091330> REGRESSION: Repro crash in -[WebBaseNetscapePluginView(WebNPPCallbacks) destroyStream:reason:] navigating away from page with DivX movie plug-in (13203) Changed LOG_ERROR to LOG so the layout test doesn't produce console spew every time you run it. * Plugins/WebBaseNetscapePluginView.mm: (-[WebBaseNetscapePluginView destroyStream:reason:]): WebKitTools: Reviewed by Beth Dakin. Layout test for <rdar://problem/5091330> REGRESSION: Repro crash in -[WebBaseNetscapePluginView(WebNPPCallbacks) destroyStream:reason:] navigating away from page with DivX movie plug-in (13203) Added hasStream property and destroyStream function, used by layout test. * DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.c: (pluginGetProperty): (pluginInvoke): (pluginAllocate): * DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.h: * DumpRenderTree/TestNetscapePlugIn.subproj/main.c: (NPP_NewStream): git-svn-id: http://svn.webkit.org/repository/webkit/trunk@20597 268f45cc-cd09-0410-ab3c-d52691b4dbfc
-
- 05 Mar, 2007 1 commit
-
-
andersca authored
Reviewed by Adam, Darin. <rdar://problem/5025212> In Mail, a crash occurs at WebCore::Frame::tree() when clicking on embedded flash object * plugins/get-url-with-blank-target-expected.txt: Added. * plugins/get-url-with-blank-target.html: Added. WebKit: Reviewed by Adam, Darin. <rdar://problem/5025212> In Mail, a crash occurs at WebCore::Frame::tree() when clicking on embedded flash object * Plugins/WebBaseNetscapePluginView.mm: (-[WebBaseNetscapePluginView loadPluginRequest:]): Handle the case where the web view returned from the delegate method is null. Also, send out an error notification in that case so we can catch it. WebKitTools: Reviewed by Adam, Darin. <rdar://problem/5025212> In Mail, a crash occurs at WebCore::Frame::tree() when clicking on embedded flash object Add a "getURLNotify" method to the plugin object. This lets you pass a URL, a target and a callback function to be run when the URL has finished (or failed) loading. * DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.c: (pluginInvoke): (handleCallback): * DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.h: * DumpRenderTree/TestNetscapePlugIn.subproj/main.c: (NPP_URLNotify): git-svn-id: http://svn.webkit.org/repository/webkit/trunk@19966 268f45cc-cd09-0410-ab3c-d52691b4dbfc
-
- 06 Nov, 2006 1 commit
-
-
ap authored
http://bugs.webkit.org/show_bug.cgi?id=11517 REGRESSION: Flash clicks/interactivity not working properly WebCore: * bridge/mac/FrameMac.mm: (WebCore::FrameMac::handleMouseMoveEvent): (WebCore::FrameMac::handleMouseReleaseEvent): Restore parts of event dispatching that were removed when fixing bug 7323 - just bypass those for subframes. WebKitTools: Teach TestNetscapePlugin to log events passed to it. To enable, set eventLoggingEnabled to true: <embed name="plg" type="application/x-webkit-test-netscape" width=100 height=100></embed> <script> plg.eventLoggingEnabled = true; // use eventSender to simulate events... </script> * DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.c: (pluginGetProperty): (pluginSetProperty): (pluginAllocate): * DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.h: * DumpRenderTree/TestNetscapePlugIn.subproj/main.c: (NPP_HandleEvent): LayoutTests: * plugins/mouse-events-expected.txt: Added. * plugins/mouse-events.html: Added. git-svn-id: http://svn.webkit.org/repository/webkit/trunk@17611 268f45cc-cd09-0410-ab3c-d52691b4dbfc
-
- 09 Mar, 2006 1 commit
-
-
darin authored
- fix http://bugzilla.opendarwin.org/show_bug.cgi?id=7681 memory leak in the plug-in tests * DumpRenderTree/TestNetscapePlugIn.subproj/main.c: (NPP_Destroy): Added code to release the plug-in object. This is the leak fix. (NPP_SetWindow): Remove unneeded code to store the window pointer. * DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.c: Moved the browser global in here since it's declared in this file's header. Changed the code to set up the pluginClass structure to not use function pointer casts. Those are dangerous because they can hide many types of mismatch. And indeed when I did this I discovered that many functions were missing their boolean return values or had parameter declarations with the wrong types. (pluginGetProperty): Use STRINGZ_TO_NPVARIANT macro for greater simplicity and clarity. Added boolean return value: return true when successful and false when not. (pluginSetProperty): Added boolean return value, return false since we have no properties we can set. (pluginInvoke): Added boolean return value. Return true when successful and false when not. Use NPVARIANT macros where appropriate. Added a missing release for the return value from calling the browser. Changed code to put the strings in malloc buffers instead of relying on GCC's extension that allows variable-sized arrays on the stack. (pluginInvokeDefault): Added boolean return value, return false since we have no default function to call. (pluginInvalidate): Added missing parameter. Removed comment. (pluginAllocate): Removed unneeded cast. This is C code, not C++, so you don't have to cast the result of malloc. (pluginDeallocate): Removed uneeded cast. * DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.h: Removed some unneeded includes. Changed our PluginObject to use NPObject instead of re-declaring fields that match NPObject's fields. Removed unused NPWindow pointer. git-svn-id: http://svn.webkit.org/repository/webkit/trunk@13233 268f45cc-cd09-0410-ab3c-d52691b4dbfc
-
- 05 Jan, 2006 1 commit
-
-
ggaren authored
Layout test for http://bugzilla.opendarwin.org/show_bug.cgi?id=6318 REGRESSION: Repro crash in JS called from Flash on bdash.net.nz * fast/plugins/netscape-back-forward-expected.txt: Added. * fast/plugins/netscape-back-forward.html: Added. * fast/plugins/resources/go-back.html: Added. WebKit: Reviewed by Darin. - Fixed http://bugzilla.opendarwin.org/show_bug.cgi?id=6361 Add plugin support to DumpRenderTree * WebKit.exp: export WebPluginDatabase class, which DumpRenderTree needs to add plugins to the runtime. WebKitTools: Reviewed by darin. - Fixed http://bugzilla.opendarwin.org/show_bug.cgi?id=6361 Add plugin support to DumpRenderTree Also wrote first test plugin. * DumpRenderTree/DumpRenderTree.m: (main): (1) Put the WebView in an invisible window, because PlugIns are optimized not to load if there's no parent window. (2) Tell WebKit to load any PlugIns in the directory from which we loaded. This means we can build nasty PlugIns alongside DumpRenderTree and they'll load automagically during layout testing, but they won't be added to the user's system, hosing apps like Safari. * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj: Added new test PlugIn to project. PlugIn added to project: * DumpRenderTree/TestNetscapePlugIn.subproj/Info.plist: Added. * DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.c: Added. (getPluginClass): (initializeIdentifiers): (pluginHasProperty): (pluginHasMethod): (pluginGetProperty): (pluginSetProperty): (pluginInvoke): (pluginInvokeDefault): (pluginInvalidate): (pluginAllocate): (pluginDeallocate): * DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.h: Added. * DumpRenderTree/TestNetscapePlugIn.subproj/main.c: Added. (NP_Initialize): (NP_GetEntryPoints): (NP_Shutdown): (NPP_New): (NPP_Destroy): (NPP_SetWindow): (NPP_NewStream): (NPP_DestroyStream): (NPP_WriteReady): (NPP_Write): (NPP_StreamAsFile): (NPP_Print): (NPP_HandleEvent): (NPP_URLNotify): (NPP_GetValue): (NPP_SetValue): git-svn-id: http://svn.webkit.org/repository/webkit/trunk@11885 268f45cc-cd09-0410-ab3c-d52691b4dbfc
-