- 10 Sep, 2013 1 commit
-
-
oliver@apple.com authored
https://bugs.webkit.org/show_bug.cgi?id=120912 Reviewed by Geoffrey Garen. Source/JavaScriptCore: Add support for ES6 WeakMap. Add the cluster of boilerplate classes around the core WeakMapData class. WeakMapData is a simple object->value hash table that uses a combo of WeakReferenceHarvester to conditionally keep the weak value reference live, and UnconditionalFinalizer to clean the dead keys from the table post-GC. * CMakeLists.txt: * GNUmakefile.list.am: * JavaScriptCore.vcxproj/JavaScriptCore.vcxproj: * JavaScriptCore.vcxproj/JavaScriptCore.vcxproj.filters: * JavaScriptCore.xcodeproj/project.pbxproj: * Target.pri: * runtime/CommonIdentifiers.h: * runtime/JSGlobalObject.cpp: * runtime/JSGlobalObject.h: (JSC::JSGlobalObject::weakMapDataStructure): * runtime/JSWeakMap.cpp: Added. (JSC::JSWeakMap::finishCreation): (JSC::JSWeakMap::visitChildren): * runtime/JSWeakMap.h: Added. (JSC::JSWeakMap::createStructure): (JSC::JSWeakMap::create): (JSC::JSWeakMap::weakMapData): (JSC::JSWeakMap::JSWeakMap): * runtime/WeakMapConstructor.cpp: Added. (JSC::WeakMapConstructor::finishCreation): (JSC::constructWeakMap): (JSC::WeakMapConstructor::getConstructData): (JSC::WeakMapConstructor::getCallData): * runtime/WeakMapConstructor.h: Added. (JSC::WeakMapConstructor::create): (JSC::WeakMapConstructor::createStructure): (JSC::WeakMapConstructor::WeakMapConstructor): * runtime/WeakMapData.cpp: Added. (JSC::WeakMapData::WeakMapData): (JSC::WeakMapData::finishCreation): (JSC::WeakMapData::destroy): (JSC::WeakMapData::visitChildren): (JSC::WeakMapData::set): (JSC::WeakMapData::get): (JSC::WeakMapData::remove): (JSC::WeakMapData::contains): (JSC::WeakMapData::clear): (JSC::WeakMapData::DeadKeyCleaner::visitWeakReferences): (JSC::WeakMapData::DeadKeyCleaner::finalizeUnconditionally): * runtime/WeakMapData.h: Added. (JSC::WeakMapData::create): (JSC::WeakMapData::createStructure): (JSC::WeakMapData::DeadKeyCleaner::DeadKeyCleaner): * runtime/WeakMapPrototype.cpp: Added. (JSC::WeakMapPrototype::finishCreation): (JSC::getWeakMapData): (JSC::protoFuncWeakMapClear): (JSC::protoFuncWeakMapDelete): (JSC::protoFuncWeakMapGet): (JSC::protoFuncWeakMapHas): (JSC::protoFuncWeakMapSet): * runtime/WeakMapPrototype.h: Added. (JSC::WeakMapPrototype::create): (JSC::WeakMapPrototype::createStructure): (JSC::WeakMapPrototype::WeakMapPrototype): LayoutTests: Basic tests. * js/basic-weakmap-expected.txt: Added. * js/basic-weakmap.html: Added. * js/script-tests/basic-weakmap.js: Added. git-svn-id: http://svn.webkit.org/repository/webkit/trunk@155473 268f45cc-cd09-0410-ab3c-d52691b4dbfc
-
- 04 Sep, 2013 3 commits
-
-
fpizlo@apple.com authored
https://bugs.webkit.org/show_bug.cgi?id=120697 Reviewed by Mark Hahnenberg. Source/JavaScriptCore: * API/JSCTestRunnerUtils.cpp: (JSC::numberOfDFGCompiles): (JSC::setNeverInline): * CMakeLists.txt: * GNUmakefile.list.am: * JavaScriptCore.vcxproj/JavaScriptCore.vcxproj: * JavaScriptCore.xcodeproj/project.pbxproj: * Target.pri: * jsc.cpp: (GlobalObject::finishCreation): (functionNeverInlineFunction): (functionNumberOfDFGCompiles): * runtime/TestRunnerUtils.cpp: Added. (JSC::getExecutable): (JSC::numberOfDFGCompiles): (JSC::setNeverInline): * runtime/TestRunnerUtils.h: Added. LayoutTests: * fast/js/resources/standalone-pre.js: (testPassed): (testFailed): (dfgCompiled): git-svn-id: http://svn.webkit.org/repository/webkit/trunk@155090 268f45cc-cd09-0410-ab3c-d52691b4dbfc
-
mark.lam@apple.com authored
https://bugs.webkit.org/show_bug.cgi?id=120706. Reviewed by Geoffrey Garen. Source/JavaScriptCore: Also did some minor refactoring: - Renamed StackIterator::iterate() to StackVisitor::visit(). - Make StackVisitor::visit() a static method. - Move the instantiation of the StackVisitor instance into StackVisitor::visit() from CallFrame::iterate(). - Removed StackIterator::resetIterator() and inline its body into the StackVisitor constructor since this is the only remaining caller of it. * API/JSContextRef.cpp: (BacktraceFunctor::operator()): * CMakeLists.txt: * GNUmakefile.list.am: * JavaScriptCore.vcxproj/JavaScriptCore.vcxproj: * JavaScriptCore.vcxproj/JavaScriptCore.vcxproj.filters: * JavaScriptCore.xcodeproj/project.pbxproj: * Target.pri: * interpreter/CallFrame.h: (JSC::ExecState::iterate): * interpreter/Interpreter.cpp: (JSC::DumpRegisterFunctor::operator()): (JSC::unwindCallFrame): (JSC::getStackFrameCodeType): (JSC::GetStackTraceFunctor::operator()): (JSC::UnwindFunctor::operator()): * interpreter/Interpreter.h: * interpreter/StackIterator.cpp: Removed. * interpreter/StackIterator.h: Removed. * interpreter/StackVisitor.cpp: Copied from Source/JavaScriptCore/interpreter/StackIterator.cpp. (JSC::StackVisitor::StackVisitor): (JSC::StackVisitor::gotoNextFrame): (JSC::StackVisitor::readFrame): (JSC::StackVisitor::readNonInlinedFrame): (JSC::StackVisitor::readInlinedFrame): (JSC::StackVisitor::Frame::codeType): (JSC::StackVisitor::Frame::functionName): (JSC::StackVisitor::Frame::sourceURL): (JSC::StackVisitor::Frame::toString): (JSC::StackVisitor::Frame::arguments): (JSC::StackVisitor::Frame::computeLineAndColumn): (JSC::StackVisitor::Frame::retrieveExpressionInfo): (JSC::StackVisitor::Frame::setToEnd): (JSC::StackVisitor::Frame::print): (DebugPrintFrameFunctor::operator()): * interpreter/StackVisitor.h: Copied from Source/JavaScriptCore/interpreter/StackIterator.h. (JSC::StackVisitor::visit): * jsc.cpp: (FunctionJSCStackFunctor::operator()): * profiler/ProfileGenerator.cpp: (JSC::AddParentForConsoleStartFunctor::operator()): * runtime/JSFunction.cpp: (JSC::RetrieveArgumentsFunctor::operator()): (JSC::RetrieveCallerFunctionFunctor::operator()): * runtime/JSGlobalObjectFunctions.cpp: (JSC::GlobalFuncProtoGetterFunctor::operator()): (JSC::GlobalFuncProtoSetterFunctor::operator()): * runtime/ObjectConstructor.cpp: (JSC::ObjectConstructorGetPrototypeOfFunctor::operator()): Source/WebCore: No new tests. * ForwardingHeaders/interpreter/StackIterator.h: Removed. * ForwardingHeaders/interpreter/StackVisitor.h: Copied from Source/WebCore/ForwardingHeaders/interpreter/StackIterator.h. * bindings/js/JSXMLHttpRequestCustom.cpp: (WebCore::SendFunctor::operator()): * bindings/js/ScriptCallStackFactory.cpp: (WebCore::CreateScriptCallStackFunctor::operator()): (WebCore::CreateScriptCallStackForConsoleFunctor::operator()): git-svn-id: http://svn.webkit.org/repository/webkit/trunk@155081 268f45cc-cd09-0410-ab3c-d52691b4dbfc
-
fpizlo@apple.com authored
https://bugs.webkit.org/show_bug.cgi?id=112838 Source/JavaScriptCore: Reviewed by Mark Hahnenberg. This adds the ability for the DFG to tier-up into the FTL. This works in both of the expected tier-up modes: Replacement: frequently called functions eventually have their entrypoint replaced with one that goes into FTL-compiled code. Note, this will be a slow-down for now since we don't yet have LLVM calling convention integration. OSR entry: code stuck in hot loops gets OSR'd into the FTL from the DFG. This means that if the DFG detects that a function is an FTL candidate, it inserts execution counting code similar to the kind that the baseline JIT would use. If you trip on a loop count in a loop header that is an OSR candidate (it's not an inlined loop), we do OSR; otherwise we do replacement. OSR almost always also implies future replacement. OSR entry into the FTL is really cool. It uses a specialized FTL compile of the code, where early in the DFG pipeline we replace the original root block with an OSR entrypoint block that jumps to the pre-header of the hot loop. The OSR entrypoint loads all live state at the loop pre-header using loads from a scratch buffer, which gets populated by the runtime's OSR entry preparation code (FTL::prepareOSREntry()). This approach appears to work well with all of our subsequent optimizations, including prediction propagation, CFA, and LICM. LLVM seems happy with it, too. Best of all, it works naturally with concurrent compilation: when we hit the tier-up trigger we spawn a compilation plan at the bytecode index from which we triggered; once the compilation finishes the next trigger will try to enter, at that bytecode index. If it can't - for example because the code has moved on to another loop - then we just try again. Loops that get hot enough for OSR entry (about 25,000 iterations) will probably still be running when a concurrent compile finishes, so this doesn't appear to be a big problem. This immediately gives us a 70% speed-up on imaging-gaussian-blur. We could get a bigger speed-up by adding some more intelligence and tweaking LLVM to compile code faster. Those things will happen eventually but this is a good start. Probably this code will see more tuning as we get more coverage in the FTL JIT, but I'll worry about that in future patches. * CMakeLists.txt: * GNUmakefile.list.am: * JavaScriptCore.xcodeproj/project.pbxproj: * Target.pri: * bytecode/CodeBlock.cpp: (JSC::CodeBlock::CodeBlock): (JSC::CodeBlock::hasOptimizedReplacement): (JSC::CodeBlock::setOptimizationThresholdBasedOnCompilationResult): * bytecode/CodeBlock.h: * dfg/DFGAbstractInterpreterInlines.h: (JSC::DFG::::executeEffects): * dfg/DFGByteCodeParser.cpp: (JSC::DFG::ByteCodeParser::parseBlock): (JSC::DFG::ByteCodeParser::parse): * dfg/DFGCFGSimplificationPhase.cpp: (JSC::DFG::CFGSimplificationPhase::run): * dfg/DFGClobberize.h: (JSC::DFG::clobberize): * dfg/DFGDriver.cpp: (JSC::DFG::compileImpl): (JSC::DFG::compile): * dfg/DFGDriver.h: * dfg/DFGFixupPhase.cpp: (JSC::DFG::FixupPhase::fixupNode): * dfg/DFGGraph.cpp: (JSC::DFG::Graph::dump): (JSC::DFG::Graph::killBlockAndItsContents): (JSC::DFG::Graph::killUnreachableBlocks): * dfg/DFGGraph.h: * dfg/DFGInPlaceAbstractState.cpp: (JSC::DFG::InPlaceAbstractState::initialize): * dfg/DFGJITCode.cpp: (JSC::DFG::JITCode::reconstruct): (JSC::DFG::JITCode::checkIfOptimizationThresholdReached): (JSC::DFG::JITCode::optimizeNextInvocation): (JSC::DFG::JITCode::dontOptimizeAnytimeSoon): (JSC::DFG::JITCode::optimizeAfterWarmUp): (JSC::DFG::JITCode::optimizeSoon): (JSC::DFG::JITCode::forceOptimizationSlowPathConcurrently): (JSC::DFG::JITCode::setOptimizationThresholdBasedOnCompilationResult): * dfg/DFGJITCode.h: * dfg/DFGJITFinalizer.cpp: (JSC::DFG::JITFinalizer::finalize): (JSC::DFG::JITFinalizer::finalizeFunction): (JSC::DFG::JITFinalizer::finalizeCommon): * dfg/DFGLoopPreHeaderCreationPhase.cpp: (JSC::DFG::createPreHeader): (JSC::DFG::LoopPreHeaderCreationPhase::run): * dfg/DFGLoopPreHeaderCreationPhase.h: * dfg/DFGNode.h: (JSC::DFG::Node::hasUnlinkedLocal): (JSC::DFG::Node::unlinkedLocal): * dfg/DFGNodeType.h: * dfg/DFGOSREntry.cpp: (JSC::DFG::prepareOSREntry): * dfg/DFGOSREntrypointCreationPhase.cpp: Added. (JSC::DFG::OSREntrypointCreationPhase::OSREntrypointCreationPhase): (JSC::DFG::OSREntrypointCreationPhase::run): (JSC::DFG::performOSREntrypointCreation): * dfg/DFGOSREntrypointCreationPhase.h: Added. * dfg/DFGOperations.cpp: * dfg/DFGOperations.h: * dfg/DFGPlan.cpp: (JSC::DFG::Plan::Plan): (JSC::DFG::Plan::compileInThread): (JSC::DFG::Plan::compileInThreadImpl): * dfg/DFGPlan.h: * dfg/DFGPredictionInjectionPhase.cpp: (JSC::DFG::PredictionInjectionPhase::run): * dfg/DFGPredictionPropagationPhase.cpp: (JSC::DFG::PredictionPropagationPhase::propagate): * dfg/DFGSafeToExecute.h: (JSC::DFG::safeToExecute): * dfg/DFGSpeculativeJIT32_64.cpp: (JSC::DFG::SpeculativeJIT::compile): * dfg/DFGSpeculativeJIT64.cpp: (JSC::DFG::SpeculativeJIT::compile): * dfg/DFGTierUpCheckInjectionPhase.cpp: Added. (JSC::DFG::TierUpCheckInjectionPhase::TierUpCheckInjectionPhase): (JSC::DFG::TierUpCheckInjectionPhase::run): (JSC::DFG::performTierUpCheckInjection): * dfg/DFGTierUpCheckInjectionPhase.h: Added. * dfg/DFGToFTLDeferredCompilationCallback.cpp: Added. (JSC::DFG::ToFTLDeferredCompilationCallback::ToFTLDeferredCompilationCallback): (JSC::DFG::ToFTLDeferredCompilationCallback::~ToFTLDeferredCompilationCallback): (JSC::DFG::ToFTLDeferredCompilationCallback::create): (JSC::DFG::ToFTLDeferredCompilationCallback::compilationDidBecomeReadyAsynchronously): (JSC::DFG::ToFTLDeferredCompilationCallback::compilationDidComplete): * dfg/DFGToFTLDeferredCompilationCallback.h: Added. * dfg/DFGToFTLForOSREntryDeferredCompilationCallback.cpp: Added. (JSC::DFG::ToFTLForOSREntryDeferredCompilationCallback::ToFTLForOSREntryDeferredCompilationCallback): (JSC::DFG::ToFTLForOSREntryDeferredCompilationCallback::~ToFTLForOSREntryDeferredCompilationCallback): (JSC::DFG::ToFTLForOSREntryDeferredCompilationCallback::create): (JSC::DFG::ToFTLForOSREntryDeferredCompilationCallback::compilationDidBecomeReadyAsynchronously): (JSC::DFG::ToFTLForOSREntryDeferredCompilationCallback::compilationDidComplete): * dfg/DFGToFTLForOSREntryDeferredCompilationCallback.h: Added. * dfg/DFGWorklist.cpp: (JSC::DFG::globalWorklist): * dfg/DFGWorklist.h: * ftl/FTLCapabilities.cpp: (JSC::FTL::canCompile): * ftl/FTLCapabilities.h: * ftl/FTLForOSREntryJITCode.cpp: Added. (JSC::FTL::ForOSREntryJITCode::ForOSREntryJITCode): (JSC::FTL::ForOSREntryJITCode::~ForOSREntryJITCode): (JSC::FTL::ForOSREntryJITCode::ftlForOSREntry): (JSC::FTL::ForOSREntryJITCode::initializeEntryBuffer): * ftl/FTLForOSREntryJITCode.h: Added. (JSC::FTL::ForOSREntryJITCode::entryBuffer): (JSC::FTL::ForOSREntryJITCode::setBytecodeIndex): (JSC::FTL::ForOSREntryJITCode::bytecodeIndex): (JSC::FTL::ForOSREntryJITCode::countEntryFailure): (JSC::FTL::ForOSREntryJITCode::entryFailureCount): * ftl/FTLJITFinalizer.cpp: (JSC::FTL::JITFinalizer::finalizeFunction): * ftl/FTLLink.cpp: (JSC::FTL::link): * ftl/FTLLowerDFGToLLVM.cpp: (JSC::FTL::LowerDFGToLLVM::compileBlock): (JSC::FTL::LowerDFGToLLVM::compileNode): (JSC::FTL::LowerDFGToLLVM::compileExtractOSREntryLocal): (JSC::FTL::LowerDFGToLLVM::compileGetLocal): (JSC::FTL::LowerDFGToLLVM::addWeakReference): * ftl/FTLOSREntry.cpp: Added. (JSC::FTL::prepareOSREntry): * ftl/FTLOSREntry.h: Added. * ftl/FTLOutput.h: (JSC::FTL::Output::crashNonTerminal): (JSC::FTL::Output::crash): * ftl/FTLState.cpp: (JSC::FTL::State::State): * interpreter/Register.h: (JSC::Register::unboxedDouble): * jit/JIT.cpp: (JSC::JIT::emitEnterOptimizationCheck): * jit/JITCode.cpp: (JSC::JITCode::ftlForOSREntry): * jit/JITCode.h: * jit/JITStubs.cpp: (JSC::DEFINE_STUB_FUNCTION): * runtime/Executable.cpp: (JSC::ScriptExecutable::newReplacementCodeBlockFor): * runtime/Options.h: * runtime/VM.cpp: (JSC::VM::ensureWorklist): * runtime/VM.h: LayoutTests: Reviewed by Mark Hahnenberg. Fix marsaglia to check the result instead of printing, and add a second version that relies on OSR entry. * fast/js/regress/marsaglia-osr-entry-expected.txt: Added. * fast/js/regress/marsaglia-osr-entry.html: Added. * fast/js/regress/script-tests/marsaglia-osr-entry.js: Added. (marsaglia): * fast/js/regress/script-tests/marsaglia.js: git-svn-id: http://svn.webkit.org/repository/webkit/trunk@155023 268f45cc-cd09-0410-ab3c-d52691b4dbfc
-
- 03 Sep, 2013 1 commit
-
-
fpizlo@apple.com authored
https://bugs.webkit.org/show_bug.cgi?id=120567 Reviewed by Oliver Hunt. This is a risky change from a performance standpoint, but I believe it's necessary. This makes all CodeBlocks get swept by GC. Nobody but the GC can delete CodeBlocks because the GC always holds a reference to them. Once a CodeBlock reaches just one reference (i.e. the one from the GC) then the GC will free it only if it's not on the stack. This allows me to get rid of the jettisoning logic. We need this for FTL tier-up. Well; we don't need it, but it will help prevent a lot of bugs. Previously, if you wanted to to replace one code block with another, you had to remember to tell the GC that the previous code block is "jettisoned". We would need to do this when tiering up from DFG to FTL and when dealing with DFG-to-FTL OSR entry code blocks. There are a lot of permutations here - tiering up to the FTL, OSR entering into the FTL, deciding that an OSR entry code block is not relevant anymore - just to name a few. In each of these cases we'd have to jettison the previous code block. It smells like a huge source of future bugs. So I made jettisoning implicit by making the GC always watch out for a CodeBlock being owned solely by the GC. This change is performance neutral. * CMakeLists.txt: * GNUmakefile.list.am: * JavaScriptCore.vcxproj/JavaScriptCore.vcxproj: * JavaScriptCore.xcodeproj/project.pbxproj: * Target.pri: * bytecode/CodeBlock.cpp: (JSC::CodeBlock::CodeBlock): (JSC::CodeBlock::~CodeBlock): (JSC::CodeBlock::visitAggregate): (JSC::CodeBlock::jettison): * bytecode/CodeBlock.h: (JSC::CodeBlock::setJITCode): (JSC::CodeBlock::shouldImmediatelyAssumeLivenessDuringScan): (JSC::CodeBlockSet::mark): * dfg/DFGCommonData.h: (JSC::DFG::CommonData::CommonData): * heap/CodeBlockSet.cpp: Added. (JSC::CodeBlockSet::CodeBlockSet): (JSC::CodeBlockSet::~CodeBlockSet): (JSC::CodeBlockSet::add): (JSC::CodeBlockSet::clearMarks): (JSC::CodeBlockSet::deleteUnmarkedAndUnreferenced): (JSC::CodeBlockSet::traceMarked): * heap/CodeBlockSet.h: Added. * heap/ConservativeRoots.cpp: (JSC::ConservativeRoots::add): * heap/ConservativeRoots.h: * heap/DFGCodeBlocks.cpp: Removed. * heap/DFGCodeBlocks.h: Removed. * heap/Heap.cpp: (JSC::Heap::markRoots): (JSC::Heap::deleteAllCompiledCode): (JSC::Heap::deleteUnmarkedCompiledCode): * heap/Heap.h: * interpreter/JSStack.cpp: (JSC::JSStack::gatherConservativeRoots): * interpreter/JSStack.h: * runtime/Executable.cpp: (JSC::ScriptExecutable::installCode): * runtime/Executable.h: * runtime/VM.h: git-svn-id: http://svn.webkit.org/repository/webkit/trunk@154986 268f45cc-cd09-0410-ab3c-d52691b4dbfc
-
- 30 Aug, 2013 1 commit
-
-
oliver@apple.com authored
https://bugs.webkit.org/show_bug.cgi?id=120549 Reviewed by Filip Pizlo. Source/JavaScriptCore: We simply reuse the MapData type from JSMap making the it much simpler. * JavaScriptCore.xcodeproj/project.pbxproj: * runtime/CommonIdentifiers.h: * runtime/JSGlobalObject.cpp: (JSC::JSGlobalObject::reset): (JSC::JSGlobalObject::visitChildren): * runtime/JSGlobalObject.h: (JSC::JSGlobalObject::setStructure): * runtime/JSSet.cpp: Added. (JSC::JSSet::visitChildren): (JSC::JSSet::finishCreation): * runtime/JSSet.h: Added. (JSC::JSSet::createStructure): (JSC::JSSet::create): (JSC::JSSet::mapData): (JSC::JSSet::JSSet): * runtime/SetConstructor.cpp: Added. (JSC::SetConstructor::finishCreation): (JSC::callSet): (JSC::constructSet): (JSC::SetConstructor::getConstructData): (JSC::SetConstructor::getCallData): * runtime/SetConstructor.h: Added. (JSC::SetConstructor::create): (JSC::SetConstructor::createStructure): (JSC::SetConstructor::SetConstructor): * runtime/SetPrototype.cpp: Added. (JSC::SetPrototype::finishCreation): (JSC::getMapData): (JSC::setProtoFuncAdd): (JSC::setProtoFuncClear): (JSC::setProtoFuncDelete): (JSC::setProtoFuncForEach): (JSC::setProtoFuncHas): (JSC::setProtoFuncSize): * runtime/SetPrototype.h: Added. (JSC::SetPrototype::create): (JSC::SetPrototype::createStructure): (JSC::SetPrototype::SetPrototype): LayoutTests: Add tests * fast/js/basic-set-expected.txt: Added. * fast/js/basic-set.html: Added. * fast/js/script-tests/basic-set.js: Added. (set new): (otherString.string_appeared_here.set add): (try.set forEach): (set forEach): (set gc): git-svn-id: http://svn.webkit.org/repository/webkit/trunk@154916 268f45cc-cd09-0410-ab3c-d52691b4dbfc
-
- 29 Aug, 2013 6 commits
-
-
ryuan.choi@samsung.com authored
https://bugs.webkit.org/show_bug.cgi?id=120503 Reviewed by Geoffrey Garen. Unreviewed build fix attempt for GTK, Qt Windows and CMake based ports. * CMakeLists.txt: * GNUmakefile.list.am: * JavaScriptCore.vcxproj/JavaScriptCore.vcxproj.filters: * Target.pri: * runtime/MapData.h: (JSC::MapData::KeyType::KeyType): git-svn-id: http://svn.webkit.org/repository/webkit/trunk@154864 268f45cc-cd09-0410-ab3c-d52691b4dbfc
-
oliver@apple.com authored
https://bugs.webkit.org/show_bug.cgi?id=120333 Reviewed by Geoffrey Garen. Source/JavaScriptCore: Implement support for the ES6 Map type and related classes. * JavaScriptCore.xcodeproj/project.pbxproj: * heap/CopyToken.h: Add a new token to track copying the backing store * runtime/CommonIdentifiers.h: Add new identifiers * runtime/JSGlobalObject.cpp: * runtime/JSGlobalObject.h: Add new structures and prototypes * runtime/JSMap.cpp: Added. * runtime/JSMap.h: Added. New JSMap class to represent a Map instance * runtime/MapConstructor.cpp: Added. * runtime/MapConstructor.h: Added. The Map constructor * runtime/MapData.cpp: Added. * runtime/MapData.h: Added. The most interesting data structure. The roughly corresponds to the ES6 notion of MapData. It provides the core JSValue->JSValue map implementation. We implement it using 2 hashtables and a flat table. Due to the different semantics of string comparisons vs. all others we need have one map keyed by String and the other by generic JSValue. The actual table is represented more or less exactly as described in the ES6 draft - a single contiguous list of key/value pairs. The entire map could be achieved with just this table, however we need the HashMaps in order to maintain O(1) lookup. Deleted values are simply cleared as the draft says, however the implementation compacts the storage on copy as long as the are no active iterators. * runtime/MapPrototype.cpp: Added. * runtime/MapPrototype.h: Added. Implement Map prototype functions * runtime/VM.cpp: Add new structures. LayoutTests: Tests * fast/js/basic-map-expected.txt: Added. * fast/js/basic-map.html: Added. * fast/js/script-tests/basic-map.js: Added. git-svn-id: http://svn.webkit.org/repository/webkit/trunk@154861 268f45cc-cd09-0410-ab3c-d52691b4dbfc
-
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
-
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
-
- 26 Aug, 2013 1 commit
-
-
weinig@apple.com authored
https://bugs.webkit.org/show_bug.cgi?id=120260 Reviewed by Darin Adler. Source/JavaScriptCore: Add an initial implementation of Promises - http://dom.spec.whatwg.org/#promises. - Despite Promises being defined in the DOM, the implementation is being put in JSC in preparation for the Promises eventually being defined in ECMAScript. * CMakeLists.txt: * DerivedSources.make: * DerivedSources.pri: * GNUmakefile.list.am: * JavaScriptCore.vcxproj/JavaScriptCore.vcxproj: * JavaScriptCore.xcodeproj/project.pbxproj: * Target.pri: Add new files. * jsc.cpp: Update jsc's GlobalObjectMethodTable to stub out the new QueueTaskToEventLoop callback. This mean's you can't quite use Promises with with the command line tool yet. * interpreter/CallFrame.h: (JSC::ExecState::promisePrototypeTable): (JSC::ExecState::promiseConstructorTable): (JSC::ExecState::promiseResolverPrototypeTable): * runtime/VM.cpp: (JSC::VM::VM): (JSC::VM::~VM): * runtime/VM.h: Add supporting code for the new static lookup tables. * runtime/CommonIdentifiers.h: Add 3 new identifiers, "Promise", "PromiseResolver", and "then". * runtime/JSGlobalObject.cpp: (JSC::JSGlobalObject::reset): (JSC::JSGlobalObject::visitChildren): Add supporting code Promise and PromiseResolver's constructors and structures. * runtime/JSGlobalObject.h: (JSC::TaskContext::~TaskContext): Add a new callback to the GlobalObjectMethodTable to post a task on the embedder's runloop. (JSC::JSGlobalObject::promisePrototype): (JSC::JSGlobalObject::promiseResolverPrototype): (JSC::JSGlobalObject::promiseStructure): (JSC::JSGlobalObject::promiseResolverStructure): (JSC::JSGlobalObject::promiseCallbackStructure): (JSC::JSGlobalObject::promiseWrapperCallbackStructure): Add supporting code Promise and PromiseResolver's constructors and structures. * runtime/JSPromise.cpp: Added. * runtime/JSPromise.h: Added. * runtime/JSPromiseCallback.cpp: Added. * runtime/JSPromiseCallback.h: Added. * runtime/JSPromiseConstructor.cpp: Added. * runtime/JSPromiseConstructor.h: Added. * runtime/JSPromisePrototype.cpp: Added. * runtime/JSPromisePrototype.h: Added. * runtime/JSPromiseResolver.cpp: Added. * runtime/JSPromiseResolver.h: Added. * runtime/JSPromiseResolverConstructor.cpp: Added. * runtime/JSPromiseResolverConstructor.h: Added. * runtime/JSPromiseResolverPrototype.cpp: Added. * runtime/JSPromiseResolverPrototype.h: Added. Add Promise implementation. Source/WebCore: Add an initial implementation of Promises - http://dom.spec.whatwg.org/#promises. - Despite Promises being defined in the DOM, the implementation is being put in JSC in preparation for the Promises eventually being defined in ECMAScript. Tests: fast/js/Promise-already-fulfilled.html fast/js/Promise-already-rejected.html fast/js/Promise-already-resolved.html fast/js/Promise-catch-in-workers.html fast/js/Promise-catch.html fast/js/Promise-chain.html fast/js/Promise-exception.html fast/js/Promise-fulfill-in-workers.html fast/js/Promise-fulfill.html fast/js/Promise-init-in-workers.html fast/js/Promise-init.html fast/js/Promise-reject-in-workers.html fast/js/Promise-reject.html fast/js/Promise-resolve-chain.html fast/js/Promise-resolve-in-workers.html fast/js/Promise-resolve-with-then-exception.html fast/js/Promise-resolve-with-then-fulfill.html fast/js/Promise-resolve-with-then-reject.html fast/js/Promise-resolve.html fast/js/Promise-simple-fulfill-inside-callback.html fast/js/Promise-simple-fulfill.html fast/js/Promise-simple-in-workers.html fast/js/Promise-simple.html fast/js/Promise-static-fulfill.html fast/js/Promise-static-reject.html fast/js/Promise-static-resolve.html fast/js/Promise-then-in-workers.html fast/js/Promise-then-without-callbacks-in-workers.html fast/js/Promise-then-without-callbacks.html fast/js/Promise-then.html fast/js/Promise-types.html fast/js/Promise.html * GNUmakefile.list.am: * Target.pri: * UseJSC.cmake: * WebCore.vcxproj/WebCore.vcxproj: * WebCore.vcxproj/WebCore.vcxproj.filters: * WebCore.xcodeproj/project.pbxproj: * bindings/js/JSBindingsAllInOne.cpp: Add new files. * bindings/js/JSDOMGlobalObjectTask.cpp: Added. (WebCore::JSGlobalObjectCallback::create): (WebCore::JSGlobalObjectCallback::~JSGlobalObjectCallback): (WebCore::JSGlobalObjectCallback::call): (WebCore::JSGlobalObjectCallback::JSGlobalObjectCallback): (WebCore::JSGlobalObjectTask::JSGlobalObjectTask): (WebCore::JSGlobalObjectTask::~JSGlobalObjectTask): (WebCore::JSGlobalObjectTask::performTask): * bindings/js/JSDOMGlobalObjectTask.h: Added. (WebCore::JSGlobalObjectTask::create): Add a new task type to be used with the GlobalObjectMethodTable's new QueueTaskToEventLoop callback. * bindings/js/JSDOMWindowBase.cpp: (WebCore::JSDOMWindowBase::queueTaskToEventLoop): * bindings/js/JSDOMWindowBase.h: Implement the GlobalObjectMethodTable callback, QueueTaskToEventLoop. * bindings/js/JSMainThreadExecState.h: All using JSMainThreadExecState as a simple RAII object. * bindings/js/JSWorkerGlobalScopeBase.cpp: (WebCore::JSWorkerGlobalScopeBase::JSWorkerGlobalScopeBase): (WebCore::JSWorkerGlobalScopeBase::allowsAccessFrom): (WebCore::JSWorkerGlobalScopeBase::supportsProfiling): (WebCore::JSWorkerGlobalScopeBase::supportsRichSourceInfo): (WebCore::JSWorkerGlobalScopeBase::shouldInterruptScript): (WebCore::JSWorkerGlobalScopeBase::javaScriptExperimentsEnabled): (WebCore::JSWorkerGlobalScopeBase::queueTaskToEventLoop): * bindings/js/JSWorkerGlobalScopeBase.h: Add a GlobalObjectMethodTable and implement QueueTaskToEventLoop. Forward the other callbacks to JSGlobalObject so they retain their existing behavior. LayoutTests: Add tests adapted from the Mozilla and Blink projects. * fast/js/Promise-already-fulfilled-expected.txt: Added. * fast/js/Promise-already-fulfilled.html: Added. * fast/js/Promise-already-rejected-expected.txt: Added. * fast/js/Promise-already-rejected.html: Added. * fast/js/Promise-already-resolved-expected.txt: Added. * fast/js/Promise-already-resolved.html: Added. * fast/js/Promise-catch-expected.txt: Added. * fast/js/Promise-catch-in-workers-expected.txt: Added. * fast/js/Promise-catch-in-workers.html: Added. * fast/js/Promise-catch.html: Added. * fast/js/Promise-chain-expected.txt: Added. * fast/js/Promise-chain.html: Added. * fast/js/Promise-exception-expected.txt: Added. * fast/js/Promise-exception.html: Added. * fast/js/Promise-expected.txt: Added. * fast/js/Promise-fulfill-expected.txt: Added. * fast/js/Promise-fulfill-in-workers-expected.txt: Added. * fast/js/Promise-fulfill-in-workers.html: Added. * fast/js/Promise-fulfill.html: Added. * fast/js/Promise-init-expected.txt: Added. * fast/js/Promise-init-in-workers-expected.txt: Added. * fast/js/Promise-init-in-workers.html: Added. * fast/js/Promise-init.html: Added. * fast/js/Promise-reject-expected.txt: Added. * fast/js/Promise-reject-in-workers-expected.txt: Added. * fast/js/Promise-reject-in-workers.html: Added. * fast/js/Promise-reject.html: Added. * fast/js/Promise-resolve-chain-expected.txt: Added. * fast/js/Promise-resolve-chain.html: Added. * fast/js/Promise-resolve-expected.txt: Added. * fast/js/Promise-resolve-in-workers-expected.txt: Added. * fast/js/Promise-resolve-in-workers.html: Added. * fast/js/Promise-resolve-with-then-exception-expected.txt: Added. * fast/js/Promise-resolve-with-then-exception.html: Added. * fast/js/Promise-resolve-with-then-fulfill-expected.txt: Added. * fast/js/Promise-resolve-with-then-fulfill.html: Added. * fast/js/Promise-resolve-with-then-reject-expected.txt: Added. * fast/js/Promise-resolve-with-then-reject.html: Added. * fast/js/Promise-resolve.html: Added. * fast/js/Promise-simple-expected.txt: Added. * fast/js/Promise-simple-fulfill-expected.txt: Added. * fast/js/Promise-simple-fulfill-inside-callback-expected.txt: Added. * fast/js/Promise-simple-fulfill-inside-callback.html: Added. * fast/js/Promise-simple-fulfill.html: Added. * fast/js/Promise-simple-in-workers-expected.txt: Added. * fast/js/Promise-simple-in-workers.html: Added. * fast/js/Promise-simple.html: Added. * fast/js/Promise-static-fulfill-expected.txt: Added. * fast/js/Promise-static-fulfill.html: Added. * fast/js/Promise-static-reject-expected.txt: Added. * fast/js/Promise-static-reject.html: Added. * fast/js/Promise-static-resolve-expected.txt: Added. * fast/js/Promise-static-resolve.html: Added. * fast/js/Promise-then-expected.txt: Added. * fast/js/Promise-then-in-workers-expected.txt: Added. * fast/js/Promise-then-in-workers.html: Added. * fast/js/Promise-then-without-callbacks-expected.txt: Added. * fast/js/Promise-then-without-callbacks-in-workers-expected.txt: Added. * fast/js/Promise-then-without-callbacks-in-workers.html: Added. * fast/js/Promise-then-without-callbacks.html: Added. * fast/js/Promise-then.html: Added. * fast/js/Promise-types-expected.txt: Added. * fast/js/Promise-types.html: Added. * fast/js/Promise.html: Added. * fast/js/resources/Promise-catch-in-workers.js: Added. * fast/js/resources/Promise-fulfill-in-workers.js: Added. * fast/js/resources/Promise-init-in-workers.js: Added. * fast/js/resources/Promise-reject-in-workers.js: Added. * fast/js/resources/Promise-resolve-in-workers.js: Added. * fast/js/resources/Promise-simple-in-workers.js: Added. * fast/js/resources/Promise-then-in-workers.js: Added. * fast/js/resources/Promise-then-without-callbacks-in-workers.js: Added. git-svn-id: http://svn.webkit.org/repository/webkit/trunk@154629 268f45cc-cd09-0410-ab3c-d52691b4dbfc
-
- 15 Aug, 2013 2 commits
-
-
https://webkit.org/b/119833mhahnenberg@apple.com authored
Reviewed by Oliver Hunt. The concurrent compilation thread should interact minimally with the Heap, including not triggering WriteBarriers. This is a prerequisite for generational GC. * JavaScriptCore.xcodeproj/project.pbxproj: * bytecode/CodeBlock.cpp: (JSC::CodeBlock::addOrFindConstant): (JSC::CodeBlock::findConstant): * bytecode/CodeBlock.h: (JSC::CodeBlock::addConstantLazily): * dfg/DFGByteCodeParser.cpp: (JSC::DFG::ByteCodeParser::getJSConstantForValue): (JSC::DFG::ByteCodeParser::constantUndefined): (JSC::DFG::ByteCodeParser::constantNull): (JSC::DFG::ByteCodeParser::one): (JSC::DFG::ByteCodeParser::constantNaN): (JSC::DFG::ByteCodeParser::InlineStackEntry::InlineStackEntry): * dfg/DFGCommonData.cpp: (JSC::DFG::CommonData::notifyCompilingStructureTransition): * dfg/DFGCommonData.h: * dfg/DFGDesiredTransitions.cpp: Added. (JSC::DFG::DesiredTransition::DesiredTransition): (JSC::DFG::DesiredTransition::reallyAdd): (JSC::DFG::DesiredTransitions::DesiredTransitions): (JSC::DFG::DesiredTransitions::~DesiredTransitions): (JSC::DFG::DesiredTransitions::addLazily): (JSC::DFG::DesiredTransitions::reallyAdd): * dfg/DFGDesiredTransitions.h: Added. * dfg/DFGDesiredWeakReferences.cpp: Added. (JSC::DFG::DesiredWeakReferences::DesiredWeakReferences): (JSC::DFG::DesiredWeakReferences::~DesiredWeakReferences): (JSC::DFG::DesiredWeakReferences::addLazily): (JSC::DFG::DesiredWeakReferences::reallyAdd): * dfg/DFGDesiredWeakReferences.h: Added. * dfg/DFGDesiredWriteBarriers.cpp: Added. (JSC::DFG::DesiredWriteBarrier::DesiredWriteBarrier): (JSC::DFG::DesiredWriteBarrier::trigger): (JSC::DFG::DesiredWriteBarriers::DesiredWriteBarriers): (JSC::DFG::DesiredWriteBarriers::~DesiredWriteBarriers): (JSC::DFG::DesiredWriteBarriers::addImpl): (JSC::DFG::DesiredWriteBarriers::trigger): * dfg/DFGDesiredWriteBarriers.h: Added. (JSC::DFG::DesiredWriteBarriers::add): (JSC::DFG::initializeLazyWriteBarrier): * dfg/DFGFixupPhase.cpp: (JSC::DFG::FixupPhase::truncateConstantToInt32): * dfg/DFGGraph.h: (JSC::DFG::Graph::convertToConstant): * dfg/DFGJITCompiler.h: (JSC::DFG::JITCompiler::addWeakReference): * dfg/DFGPlan.cpp: (JSC::DFG::Plan::Plan): (JSC::DFG::Plan::reallyAdd): * dfg/DFGPlan.h: * dfg/DFGSpeculativeJIT32_64.cpp: (JSC::DFG::SpeculativeJIT::compile): * dfg/DFGSpeculativeJIT64.cpp: (JSC::DFG::SpeculativeJIT::compile): * runtime/WriteBarrier.h: (JSC::WriteBarrierBase::set): (JSC::WriteBarrier::WriteBarrier): git-svn-id: http://svn.webkit.org/repository/webkit/trunk@154162 268f45cc-cd09-0410-ab3c-d52691b4dbfc
-
fpizlo@apple.com authored
https://bugs.webkit.org/show_bug.cgi?id=119064 .: Reviewed by Oliver Hunt. Automake work courtesy of Zan Dobersek <zdobersek@igalia.com>. * Source/autotools/symbols.filter: Source/JavaScriptCore: Reviewed by Oliver Hunt. Typed arrays were previously deficient in several major ways: - They were defined separately in WebCore and in the jsc shell. The two implementations were different, and the jsc shell one was basically wrong. The WebCore one was quite awful, also. - Typed arrays were not visible to the JIT except through some weird hooks. For example, the JIT could not ask "what is the Structure that this typed array would have if I just allocated it from this global object". Also, it was difficult to wire any of the typed array intrinsics, because most of the functionality wasn't visible anywhere in JSC. - Typed array allocation was brain-dead. Allocating a typed array involved two JS objects, two GC weak handles, and three malloc allocations. - Neutering. It involved keeping tabs on all native views but not the view wrappers, even though the native views can autoneuter just by asking the buffer if it was neutered anytime you touch them; while the JS view wrappers are the ones that you really want to reach out to. - Common case-ing. Most typed arrays have one buffer and one view, and usually nobody touches the buffer. Yet we created all of that stuff anyway, using data structures optimized for the case where you had a lot of views. - Semantic goofs. Typed arrays should, in the future, behave like ES features rather than DOM features, for example when it comes to exceptions. Firefox already does this and I agree with them. This patch cleanses our codebase of these sins: - Typed arrays are almost entirely defined in JSC. Only the lifecycle management of native references to buffers is left to WebCore. - Allocating a typed array requires either two GC allocations (a cell and a copied storage vector) or one GC allocation, a malloc allocation, and a weak handle (a cell and a malloc'd storage vector, plus a finalizer for the latter). The latter is only used for oversize arrays. Remember that before it was 7 allocations no matter what. - Typed arrays require just 4 words of overhead: Structure*, Butterfly*, mode/length, void* vector. Before it was a lot more than that - remember, there were five additional objects that did absolutely nothing for anybody. - Native views aren't tracked by the buffer, or by the wrappers. They are transient. In the future we'll probably switch to not even having them be malloc'd. - Native array buffers have an efficient way of tracking all of their JS view wrappers, both for neutering, and for lifecycle management. The GC special-cases native array buffers. This saves a bunch of grief; for example it means that a JS view wrapper can refer to its buffer via the butterfly, which would be dead by the time we went to finalize. - Typed array semantics now match Firefox, which also happens to be where the standards are going. The discussion on webkit-dev seemed to confirm that Chrome is also heading in this direction. This includes making Uint8ClampedArray not a subtype of Uint8Array, and getting rid of ArrayBufferView as a JS-visible construct. This is up to a 10x speed-up on programs that allocate a lot of typed arrays. It's a 1% speed-up on Octane. It also opens up a bunch of possibilities for further typed array optimizations in the JSC JITs, including inlining typed array allocation, inlining more of the accessors, reducing the cost of type checks, etc. An additional property of this patch is that typed arrays are mostly implemented using templates. This deduplicates a bunch of code, but does mean that we need some hacks for exporting s_info's of template classes. See JSGenericTypedArrayView.h and JSTypedArrays.cpp. Those hacks are fairly low-impact compared to code duplication. Automake work courtesy of Zan Dobersek <zdobersek@igalia.com>. * CMakeLists.txt: * DerivedSources.make: * GNUmakefile.list.am: * JSCTypedArrayStubs.h: Removed. * JavaScriptCore.vcxproj/JavaScriptCore.vcxproj: * JavaScriptCore.xcodeproj/project.pbxproj: * Target.pri: * bytecode/ByValInfo.h: (JSC::hasOptimizableIndexingForClassInfo): (JSC::jitArrayModeForClassInfo): (JSC::typedArrayTypeForJITArrayMode): * bytecode/SpeculatedType.cpp: (JSC::speculationFromClassInfo): * dfg/DFGArrayMode.cpp: (JSC::DFG::toTypedArrayType): * dfg/DFGArrayMode.h: (JSC::DFG::ArrayMode::typedArrayType): * dfg/DFGSpeculativeJIT.cpp: (JSC::DFG::SpeculativeJIT::checkArray): (JSC::DFG::SpeculativeJIT::compileGetByValOnIntTypedArray): (JSC::DFG::SpeculativeJIT::compilePutByValForIntTypedArray): (JSC::DFG::SpeculativeJIT::compileGetByValOnFloatTypedArray): (JSC::DFG::SpeculativeJIT::compilePutByValForFloatTypedArray): (JSC::DFG::SpeculativeJIT::compileGetIndexedPropertyStorage): (JSC::DFG::SpeculativeJIT::compileGetArrayLength): * dfg/DFGSpeculativeJIT.h: * dfg/DFGSpeculativeJIT32_64.cpp: (JSC::DFG::SpeculativeJIT::compile): * dfg/DFGSpeculativeJIT64.cpp: (JSC::DFG::SpeculativeJIT::compile): * heap/CopyToken.h: * heap/DeferGC.h: (JSC::DeferGCForAWhile::DeferGCForAWhile): (JSC::DeferGCForAWhile::~DeferGCForAWhile): * heap/GCIncomingRefCounted.h: Added. (JSC::GCIncomingRefCounted::GCIncomingRefCounted): (JSC::GCIncomingRefCounted::~GCIncomingRefCounted): (JSC::GCIncomingRefCounted::numberOfIncomingReferences): (JSC::GCIncomingRefCounted::incomingReferenceAt): (JSC::GCIncomingRefCounted::singletonFlag): (JSC::GCIncomingRefCounted::hasVectorOfCells): (JSC::GCIncomingRefCounted::hasAnyIncoming): (JSC::GCIncomingRefCounted::hasSingleton): (JSC::GCIncomingRefCounted::singleton): (JSC::GCIncomingRefCounted::vectorOfCells): * heap/GCIncomingRefCountedInlines.h: Added. (JSC::::addIncomingReference): (JSC::::filterIncomingReferences): * heap/GCIncomingRefCountedSet.h: Added. (JSC::GCIncomingRefCountedSet::size): * heap/GCIncomingRefCountedSetInlines.h: Added. (JSC::::GCIncomingRefCountedSet): (JSC::::~GCIncomingRefCountedSet): (JSC::::addReference): (JSC::::sweep): (JSC::::removeAll): (JSC::::removeDead): * heap/Heap.cpp: (JSC::Heap::addReference): (JSC::Heap::extraSize): (JSC::Heap::size): (JSC::Heap::capacity): (JSC::Heap::collect): (JSC::Heap::decrementDeferralDepth): (JSC::Heap::decrementDeferralDepthAndGCIfNeeded): * heap/Heap.h: * interpreter/CallFrame.h: (JSC::ExecState::dataViewTable): * jit/JIT.h: * jit/JITPropertyAccess.cpp: (JSC::JIT::privateCompileGetByVal): (JSC::JIT::privateCompilePutByVal): (JSC::JIT::emitIntTypedArrayGetByVal): (JSC::JIT::emitFloatTypedArrayGetByVal): (JSC::JIT::emitIntTypedArrayPutByVal): (JSC::JIT::emitFloatTypedArrayPutByVal): * jsc.cpp: (GlobalObject::finishCreation): * runtime/ArrayBuffer.cpp: (JSC::ArrayBuffer::transfer): * runtime/ArrayBuffer.h: (JSC::ArrayBuffer::createAdopted): (JSC::ArrayBuffer::ArrayBuffer): (JSC::ArrayBuffer::gcSizeEstimateInBytes): (JSC::ArrayBuffer::pin): (JSC::ArrayBuffer::unpin): (JSC::ArrayBufferContents::tryAllocate): * runtime/ArrayBufferView.cpp: (JSC::ArrayBufferView::ArrayBufferView): (JSC::ArrayBufferView::~ArrayBufferView): (JSC::ArrayBufferView::setNeuterable): * runtime/ArrayBufferView.h: (JSC::ArrayBufferView::isNeutered): (JSC::ArrayBufferView::buffer): (JSC::ArrayBufferView::baseAddress): (JSC::ArrayBufferView::byteOffset): (JSC::ArrayBufferView::verifySubRange): (JSC::ArrayBufferView::clampOffsetAndNumElements): (JSC::ArrayBufferView::calculateOffsetAndLength): * runtime/ClassInfo.h: * runtime/CommonIdentifiers.h: * runtime/DataView.cpp: Added. (JSC::DataView::DataView): (JSC::DataView::create): (JSC::DataView::wrap): * runtime/DataView.h: Added. (JSC::DataView::byteLength): (JSC::DataView::getType): (JSC::DataView::get): (JSC::DataView::set): * runtime/Float32Array.h: * runtime/Float64Array.h: * runtime/GenericTypedArrayView.h: Added. (JSC::GenericTypedArrayView::data): (JSC::GenericTypedArrayView::set): (JSC::GenericTypedArrayView::setRange): (JSC::GenericTypedArrayView::zeroRange): (JSC::GenericTypedArrayView::zeroFill): (JSC::GenericTypedArrayView::length): (JSC::GenericTypedArrayView::byteLength): (JSC::GenericTypedArrayView::item): (JSC::GenericTypedArrayView::checkInboundData): (JSC::GenericTypedArrayView::getType): * runtime/GenericTypedArrayViewInlines.h: Added. (JSC::::GenericTypedArrayView): (JSC::::create): (JSC::::createUninitialized): (JSC::::subarray): (JSC::::wrap): * runtime/IndexingHeader.h: (JSC::IndexingHeader::arrayBuffer): (JSC::IndexingHeader::setArrayBuffer): * runtime/Int16Array.h: * runtime/Int32Array.h: * runtime/Int8Array.h: * runtime/JSArrayBuffer.cpp: Added. (JSC::JSArrayBuffer::JSArrayBuffer): (JSC::JSArrayBuffer::finishCreation): (JSC::JSArrayBuffer::create): (JSC::JSArrayBuffer::createStructure): (JSC::JSArrayBuffer::getOwnPropertySlot): (JSC::JSArrayBuffer::getOwnPropertyDescriptor): (JSC::JSArrayBuffer::put): (JSC::JSArrayBuffer::defineOwnProperty): (JSC::JSArrayBuffer::deleteProperty): (JSC::JSArrayBuffer::getOwnNonIndexPropertyNames): * runtime/JSArrayBuffer.h: Added. (JSC::JSArrayBuffer::impl): (JSC::toArrayBuffer): * runtime/JSArrayBufferConstructor.cpp: Added. (JSC::JSArrayBufferConstructor::JSArrayBufferConstructor): (JSC::JSArrayBufferConstructor::finishCreation): (JSC::JSArrayBufferConstructor::create): (JSC::JSArrayBufferConstructor::createStructure): (JSC::constructArrayBuffer): (JSC::JSArrayBufferConstructor::getConstructData): (JSC::JSArrayBufferConstructor::getCallData): * runtime/JSArrayBufferConstructor.h: Added. * runtime/JSArrayBufferPrototype.cpp: Added. (JSC::arrayBufferProtoFuncSlice): (JSC::JSArrayBufferPrototype::JSArrayBufferPrototype): (JSC::JSArrayBufferPrototype::finishCreation): (JSC::JSArrayBufferPrototype::create): (JSC::JSArrayBufferPrototype::createStructure): * runtime/JSArrayBufferPrototype.h: Added. * runtime/JSArrayBufferView.cpp: Added. (JSC::JSArrayBufferView::ConstructionContext::ConstructionContext): (JSC::JSArrayBufferView::JSArrayBufferView): (JSC::JSArrayBufferView::finishCreation): (JSC::JSArrayBufferView::getOwnPropertySlot): (JSC::JSArrayBufferView::getOwnPropertyDescriptor): (JSC::JSArrayBufferView::put): (JSC::JSArrayBufferView::defineOwnProperty): (JSC::JSArrayBufferView::deleteProperty): (JSC::JSArrayBufferView::getOwnNonIndexPropertyNames): (JSC::JSArrayBufferView::finalize): * runtime/JSArrayBufferView.h: Added. (JSC::JSArrayBufferView::sizeOf): (JSC::JSArrayBufferView::ConstructionContext::operator!): (JSC::JSArrayBufferView::ConstructionContext::structure): (JSC::JSArrayBufferView::ConstructionContext::vector): (JSC::JSArrayBufferView::ConstructionContext::length): (JSC::JSArrayBufferView::ConstructionContext::mode): (JSC::JSArrayBufferView::ConstructionContext::butterfly): (JSC::JSArrayBufferView::mode): (JSC::JSArrayBufferView::vector): (JSC::JSArrayBufferView::length): (JSC::JSArrayBufferView::offsetOfVector): (JSC::JSArrayBufferView::offsetOfLength): (JSC::JSArrayBufferView::offsetOfMode): * runtime/JSArrayBufferViewInlines.h: Added. (JSC::JSArrayBufferView::slowDownAndWasteMemoryIfNecessary): (JSC::JSArrayBufferView::buffer): (JSC::JSArrayBufferView::impl): (JSC::JSArrayBufferView::neuter): (JSC::JSArrayBufferView::byteOffset): * runtime/JSCell.cpp: (JSC::JSCell::slowDownAndWasteMemory): (JSC::JSCell::getTypedArrayImpl): * runtime/JSCell.h: * runtime/JSDataView.cpp: Added. (JSC::JSDataView::JSDataView): (JSC::JSDataView::create): (JSC::JSDataView::createUninitialized): (JSC::JSDataView::set): (JSC::JSDataView::typedImpl): (JSC::JSDataView::getOwnPropertySlot): (JSC::JSDataView::getOwnPropertyDescriptor): (JSC::JSDataView::slowDownAndWasteMemory): (JSC::JSDataView::getTypedArrayImpl): (JSC::JSDataView::createStructure): * runtime/JSDataView.h: Added. * runtime/JSDataViewPrototype.cpp: Added. (JSC::JSDataViewPrototype::JSDataViewPrototype): (JSC::JSDataViewPrototype::create): (JSC::JSDataViewPrototype::createStructure): (JSC::JSDataViewPrototype::getOwnPropertySlot): (JSC::JSDataViewPrototype::getOwnPropertyDescriptor): (JSC::getData): (JSC::setData): (JSC::dataViewProtoFuncGetInt8): (JSC::dataViewProtoFuncGetInt16): (JSC::dataViewProtoFuncGetInt32): (JSC::dataViewProtoFuncGetUint8): (JSC::dataViewProtoFuncGetUint16): (JSC::dataViewProtoFuncGetUint32): (JSC::dataViewProtoFuncGetFloat32): (JSC::dataViewProtoFuncGetFloat64): (JSC::dataViewProtoFuncSetInt8): (JSC::dataViewProtoFuncSetInt16): (JSC::dataViewProtoFuncSetInt32): (JSC::dataViewProtoFuncSetUint8): (JSC::dataViewProtoFuncSetUint16): (JSC::dataViewProtoFuncSetUint32): (JSC::dataViewProtoFuncSetFloat32): (JSC::dataViewProtoFuncSetFloat64): * runtime/JSDataViewPrototype.h: Added. * runtime/JSFloat32Array.h: Added. * runtime/JSFloat64Array.h: Added. * runtime/JSGenericTypedArrayView.h: Added. (JSC::JSGenericTypedArrayView::byteLength): (JSC::JSGenericTypedArrayView::byteSize): (JSC::JSGenericTypedArrayView::typedVector): (JSC::JSGenericTypedArrayView::canGetIndexQuickly): (JSC::JSGenericTypedArrayView::canSetIndexQuickly): (JSC::JSGenericTypedArrayView::getIndexQuicklyAsNativeValue): (JSC::JSGenericTypedArrayView::getIndexQuicklyAsDouble): (JSC::JSGenericTypedArrayView::getIndexQuickly): (JSC::JSGenericTypedArrayView::setIndexQuicklyToNativeValue): (JSC::JSGenericTypedArrayView::setIndexQuicklyToDouble): (JSC::JSGenericTypedArrayView::setIndexQuickly): (JSC::JSGenericTypedArrayView::canAccessRangeQuickly): (JSC::JSGenericTypedArrayView::typedImpl): (JSC::JSGenericTypedArrayView::createStructure): (JSC::JSGenericTypedArrayView::info): (JSC::toNativeTypedView): * runtime/JSGenericTypedArrayViewConstructor.h: Added. * runtime/JSGenericTypedArrayViewConstructorInlines.h: Added. (JSC::::JSGenericTypedArrayViewConstructor): (JSC::::finishCreation): (JSC::::create): (JSC::::createStructure): (JSC::constructGenericTypedArrayView): (JSC::::getConstructData): (JSC::::getCallData): * runtime/JSGenericTypedArrayViewInlines.h: Added. (JSC::::JSGenericTypedArrayView): (JSC::::create): (JSC::::createUninitialized): (JSC::::validateRange): (JSC::::setWithSpecificType): (JSC::::set): (JSC::::getOwnPropertySlot): (JSC::::getOwnPropertyDescriptor): (JSC::::put): (JSC::::defineOwnProperty): (JSC::::deleteProperty): (JSC::::getOwnPropertySlotByIndex): (JSC::::putByIndex): (JSC::::deletePropertyByIndex): (JSC::::getOwnNonIndexPropertyNames): (JSC::::getOwnPropertyNames): (JSC::::visitChildren): (JSC::::copyBackingStore): (JSC::::slowDownAndWasteMemory): (JSC::::getTypedArrayImpl): * runtime/JSGenericTypedArrayViewPrototype.h: Added. * runtime/JSGenericTypedArrayViewPrototypeInlines.h: Added. (JSC::genericTypedArrayViewProtoFuncSet): (JSC::genericTypedArrayViewProtoFuncSubarray): (JSC::::JSGenericTypedArrayViewPrototype): (JSC::::finishCreation): (JSC::::create): (JSC::::createStructure): * runtime/JSGlobalObject.cpp: (JSC::JSGlobalObject::reset): (JSC::JSGlobalObject::visitChildren): * runtime/JSGlobalObject.h: (JSC::JSGlobalObject::arrayBufferPrototype): (JSC::JSGlobalObject::arrayBufferStructure): (JSC::JSGlobalObject::typedArrayStructure): * runtime/JSInt16Array.h: Added. * runtime/JSInt32Array.h: Added. * runtime/JSInt8Array.h: Added. * runtime/JSTypedArrayConstructors.cpp: Added. * runtime/JSTypedArrayConstructors.h: Added. * runtime/JSTypedArrayPrototypes.cpp: Added. * runtime/JSTypedArrayPrototypes.h: Added. * runtime/JSTypedArrays.cpp: Added. * runtime/JSTypedArrays.h: Added. * runtime/JSUint16Array.h: Added. * runtime/JSUint32Array.h: Added. * runtime/JSUint8Array.h: Added. * runtime/JSUint8ClampedArray.h: Added. * runtime/Operations.h: * runtime/Options.h: * runtime/SimpleTypedArrayController.cpp: Added. (JSC::SimpleTypedArrayController::SimpleTypedArrayController): (JSC::SimpleTypedArrayController::~SimpleTypedArrayController): (JSC::SimpleTypedArrayController::toJS): * runtime/SimpleTypedArrayController.h: Added. * runtime/Structure.h: (JSC::Structure::couldHaveIndexingHeader): * runtime/StructureInlines.h: (JSC::Structure::hasIndexingHeader): * runtime/TypedArrayAdaptors.h: Added. (JSC::IntegralTypedArrayAdaptor::toNative): (JSC::IntegralTypedArrayAdaptor::toJSValue): (JSC::IntegralTypedArrayAdaptor::toDouble): (JSC::FloatTypedArrayAdaptor::toNative): (JSC::FloatTypedArrayAdaptor::toJSValue): (JSC::FloatTypedArrayAdaptor::toDouble): (JSC::Uint8ClampedAdaptor::toNative): (JSC::Uint8ClampedAdaptor::toJSValue): (JSC::Uint8ClampedAdaptor::toDouble): (JSC::Uint8ClampedAdaptor::clamp): * runtime/TypedArrayController.cpp: Added. (JSC::TypedArrayController::TypedArrayController): (JSC::TypedArrayController::~TypedArrayController): * runtime/TypedArrayController.h: Added. * runtime/TypedArrayDescriptor.h: Removed. * runtime/TypedArrayInlines.h: Added. * runtime/TypedArrayType.cpp: Added. (JSC::classInfoForType): (WTF::printInternal): * runtime/TypedArrayType.h: Added. (JSC::toIndex): (JSC::isTypedView): (JSC::elementSize): (JSC::isInt): (JSC::isFloat): (JSC::isSigned): (JSC::isClamped): * runtime/TypedArrays.h: Added. * runtime/Uint16Array.h: * runtime/Uint32Array.h: * runtime/Uint8Array.h: * runtime/Uint8ClampedArray.h: * runtime/VM.cpp: (JSC::VM::VM): (JSC::VM::~VM): * runtime/VM.h: Source/WebCore: Reviewed by Oliver Hunt. Typed arrays are now implemented in JavaScriptCore, and WebCore is merely a client of them. There is only one layering violation: WebCore installs a WebCoreTypedArrayController on VM, which makes the ArrayBuffer<->JSArrayBuffer relationship resemble DOM wrappers. By default, JSC makes the ownership go one way; the JSArrayBuffer keeps the ArrayBuffer alive but if ArrayBuffer is kept alive from native code then the JSArrayByffer may die. WebCoreTypedArrayController will keep the JSArrayBuffer alive if the ArrayBuffer is in the opaque root set. To make non-JSDOMWrappers behave like DOM wrappers, a bunch of code is changed to make most references to wrappers refer to JSObject* rather than JSDOMWrapper*. Array buffer views are now transient; the JS array buffer view wrappers don't own them or keep them alive. This required a bunch of changes to make bindings code use RefPtr<ArrayBufferView> to hold onto their views. Also there is a bunch of new code to make JSC-provided array buffers and views obey the toJS/to<ClassName> idiom for wrapping and unwrapping. Finally, the DataView API is now completely different: the JSDataView provides the same user-visible JS API but using its own internal magic; the C++ code that uses DataView now uses a rather different API that is not aware of usual DOM semantics, since it's in JSC and not WebCore. It's equally useful for all of WebCore's purposes, but some code had to change to adapt the new conventions. Some tests have been changed or rebased due to changes in behavior, that bring us into conformance with where the standards are going and allow us to match Firefox behavior. Automake work and some additional GTK changes courtesy of Zan Dobersek <zdobersek@igalia.com>. Additional Qt changes courtesy of Arunprasad Rajkumar <arurajku@cisco.com>. * CMakeLists.txt: * DerivedSources.make: * ForwardingHeaders/runtime/DataView.h: Added. * ForwardingHeaders/runtime/JSArrayBuffer.h: Added. * ForwardingHeaders/runtime/JSArrayBufferView.h: Added. * ForwardingHeaders/runtime/JSDataView.h: Added. * ForwardingHeaders/runtime/JSTypedArrays.h: Added. * ForwardingHeaders/runtime/TypedArrayController.h: Added. * ForwardingHeaders/runtime/TypedArrayInlines.h: Added. * ForwardingHeaders/runtime/TypedArrays.h: Added. * GNUmakefile.list.am: * Modules/webaudio/RealtimeAnalyser.h: * Target.pri: * UseJSC.cmake: * WebCore.exp.in: * WebCore.vcxproj/WebCore.vcxproj: * WebCore.xcodeproj/project.pbxproj: * bindings/js/DOMWrapperWorld.h: * bindings/js/JSArrayBufferCustom.cpp: Removed. * bindings/js/JSArrayBufferViewHelper.h: Removed. * bindings/js/JSAudioContextCustom.cpp: * bindings/js/JSBindingsAllInOne.cpp: * bindings/js/JSBlobCustom.cpp: * bindings/js/JSCSSRuleCustom.cpp: (WebCore::toJS): * bindings/js/JSCSSValueCustom.cpp: (WebCore::toJS): * bindings/js/JSCryptoCustom.cpp: (WebCore::JSCrypto::getRandomValues): * bindings/js/JSDOMBinding.h: (WebCore::wrapperOwner): (WebCore::wrapperContext): (WebCore::getInlineCachedWrapper): (WebCore::setInlineCachedWrapper): (WebCore::clearInlineCachedWrapper): (WebCore::getCachedWrapper): (WebCore::cacheWrapper): (WebCore::uncacheWrapper): (WebCore::wrap): (WebCore::toJS): (WebCore::toArrayBufferView): (WebCore::toInt8Array): (WebCore::toInt16Array): (WebCore::toInt32Array): (WebCore::toUint8Array): (WebCore::toUint8ClampedArray): (WebCore::toUint16Array): (WebCore::toUint32Array): (WebCore::toFloat32Array): (WebCore::toFloat64Array): (WebCore::toDataView): * bindings/js/JSDataViewCustom.cpp: Removed. * bindings/js/JSDictionary.cpp: * bindings/js/JSDictionary.h: * bindings/js/JSDocumentCustom.cpp: (WebCore::JSDocument::location): (WebCore::toJS): * bindings/js/JSEventCustom.cpp: (WebCore::toJS): * bindings/js/JSFileReaderCustom.cpp: * bindings/js/JSHTMLCollectionCustom.cpp: (WebCore::toJS): * bindings/js/JSHTMLTemplateElementCustom.cpp: (WebCore::JSHTMLTemplateElement::content): * bindings/js/JSImageDataCustom.cpp: (WebCore::toJS): * bindings/js/JSInjectedScriptHostCustom.cpp: * bindings/js/JSMessageEventCustom.cpp: * bindings/js/JSMessagePortCustom.cpp: * bindings/js/JSSVGPathSegCustom.cpp: (WebCore::toJS): * bindings/js/JSStyleSheetCustom.cpp: (WebCore::toJS): * bindings/js/JSTrackCustom.cpp: (WebCore::toJS): * bindings/js/JSWebGLRenderingContextCustom.cpp: * bindings/js/JSXMLHttpRequestCustom.cpp: (WebCore::JSXMLHttpRequest::send): * bindings/js/SerializedScriptValue.cpp: (WebCore::SerializedScriptValue::transferArrayBuffers): * bindings/js/WebCoreJSClientData.h: (WebCore::initNormalWorldClientData): * bindings/js/WebCoreTypedArrayController.cpp: Added. (WebCore::WebCoreTypedArrayController::WebCoreTypedArrayController): (WebCore::WebCoreTypedArrayController::~WebCoreTypedArrayController): (WebCore::WebCoreTypedArrayController::toJS): (WebCore::WebCoreTypedArrayController::JSArrayBufferOwner::isReachableFromOpaqueRoots): (WebCore::WebCoreTypedArrayController::JSArrayBufferOwner::finalize): * bindings/js/WebCoreTypedArrayController.h: Added. (WebCore::WebCoreTypedArrayController::wrapperOwner): * bindings/scripts/CodeGenerator.pm: (ForAllParents): (ParseInterface): (SkipIncludeHeader): (IsTypedArrayType): (IsWrapperType): * bindings/scripts/CodeGeneratorJS.pm: (AddIncludesForType): (GenerateHeader): (GenerateImplementation): (GenerateParametersCheck): (GetNativeType): (JSValueToNative): (NativeToJSValue): (GenerateConstructorDefinition): (GenerateConstructorHelperMethods): * fileapi/WebKitBlobBuilder.cpp: (WebCore::BlobBuilder::append): * fileapi/WebKitBlobBuilder.h: * html/canvas/ArrayBuffer.idl: Removed. * html/canvas/ArrayBufferView.idl: Removed. * html/canvas/DataView.cpp: Removed. * html/canvas/DataView.h: Removed. * html/canvas/DataView.idl: Removed. * html/canvas/Float32Array.idl: Removed. * html/canvas/Float64Array.idl: Removed. * html/canvas/Int16Array.idl: Removed. * html/canvas/Int32Array.idl: Removed. * html/canvas/Int8Array.idl: Removed. * html/canvas/Uint16Array.idl: Removed. * html/canvas/Uint32Array.idl: Removed. * html/canvas/Uint8Array.idl: Removed. * html/canvas/Uint8ClampedArray.idl: Removed. * html/canvas/WebGLRenderingContext.cpp: (WebCore::WebGLRenderingContext::readPixels): (WebCore::WebGLRenderingContext::validateTexFuncData): * page/Crypto.cpp: * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm: (WebCore::MediaPlayerPrivateAVFoundationObjC::shouldWaitForLoadingOfResource): (WebCore::MediaPlayerPrivateAVFoundationObjC::extractKeyURIKeyIDAndCertificateFromInitData): * platform/graphics/filters/FECustomFilter.h: * platform/graphics/filters/FEGaussianBlur.cpp: * platform/graphics/filters/FilterEffect.cpp: * testing/MockCDM.cpp: Source/WebKit2: Reviewed by Oliver Hunt. You don't need to include JSUint8Array anymore if you just want to unwrap one; JSDOMBinding gives you all of the things you need. * WebProcess/InjectedBundle/InjectedBundle.cpp: Source/WTF: Reviewed by Oliver Hunt. - Added the notion of a reference counted object that can be marked Deferred, which is like a special-purpose upref. - Added a common byte flipper. Automake work courtesy of Zan Dobersek <zdobersek@igalia.com>. * GNUmakefile.list.am: * WTF.xcodeproj/project.pbxproj: * wtf/DeferrableRefCounted.h: Added. (WTF::DeferrableRefCountedBase::ref): (WTF::DeferrableRefCountedBase::hasOneRef): (WTF::DeferrableRefCountedBase::refCount): (WTF::DeferrableRefCountedBase::isDeferred): (WTF::DeferrableRefCountedBase::DeferrableRefCountedBase): (WTF::DeferrableRefCountedBase::~DeferrableRefCountedBase): (WTF::DeferrableRefCountedBase::derefBase): (WTF::DeferrableRefCountedBase::setIsDeferredBase): (WTF::DeferrableRefCounted::deref): (WTF::DeferrableRefCounted::setIsDeferred): (WTF::DeferrableRefCounted::DeferrableRefCounted): (WTF::DeferrableRefCounted::~DeferrableRefCounted): * wtf/FlipBytes.h: Added. (WTF::needToFlipBytesIfLittleEndian): (WTF::flipBytes): (WTF::flipBytesIfLittleEndian): LayoutTests: Reviewed by Oliver Hunt. * fast/canvas/webgl/array-set-invalid-arguments-expected.txt: * fast/canvas/webgl/array-set-out-of-bounds-expected.txt: * fast/canvas/webgl/array-unit-tests-expected.txt: * fast/canvas/webgl/array-unit-tests.html: * fast/canvas/webgl/data-view-crash-expected.txt: * fast/canvas/webgl/script-tests/arraybuffer-transfer-of-control.js: (checkView): * fast/dom/call-a-constructor-as-a-function-expected.txt: * fast/dom/call-a-constructor-as-a-function.html: * fast/js/constructor-length.html: * fast/js/global-constructors-attributes-dedicated-worker-expected.txt: * fast/js/global-constructors-attributes-expected.txt: * fast/js/global-constructors-attributes-shared-worker-expected.txt: * fast/js/regress/ArrayBuffer-Int8Array-alloc-expected.txt: Added. * fast/js/regress/ArrayBuffer-Int8Array-alloc-huge-long-lived-expected.txt: Added. * fast/js/regress/ArrayBuffer-Int8Array-alloc-huge-long-lived.html: Added. * fast/js/regress/ArrayBuffer-Int8Array-alloc-large-long-lived-expected.txt: Added. * fast/js/regress/ArrayBuffer-Int8Array-alloc-large-long-lived.html: Added. * fast/js/regress/ArrayBuffer-Int8Array-alloc-long-lived-buffer-expected.txt: Added. * fast/js/regress/ArrayBuffer-Int8Array-alloc-long-lived-buffer.html: Added. * fast/js/regress/ArrayBuffer-Int8Array-alloc-long-lived-expected.txt: Added. * fast/js/regress/ArrayBuffer-Int8Array-alloc-long-lived.html: Added. * fast/js/regress/ArrayBuffer-Int8Array-alloc.html: Added. * fast/js/regress/Int32Array-Int8Array-view-alloc-expected.txt: Added. * fast/js/regress/Int32Array-Int8Array-view-alloc.html: Added. * fast/js/regress/Int32Array-alloc-expected.txt: Added. * fast/js/regress/Int32Array-alloc-huge-expected.txt: Added. * fast/js/regress/Int32Array-alloc-huge-long-lived-expected.txt: Added. * fast/js/regress/Int32Array-alloc-huge-long-lived.html: Added. * fast/js/regress/Int32Array-alloc-huge.html: Added. * fast/js/regress/Int32Array-alloc-large-expected.txt: Added. * fast/js/regress/Int32Array-alloc-large-long-lived-expected.txt: Added. * fast/js/regress/Int32Array-alloc-large-long-lived.html: Added. * fast/js/regress/Int32Array-alloc-large.html: Added. * fast/js/regress/Int32Array-alloc-long-lived-expected.txt: Added. * fast/js/regress/Int32Array-alloc-long-lived.html: Added. * fast/js/regress/Int32Array-alloc.html: Added. * fast/js/regress/script-tests/ArrayBuffer-Int8Array-alloc-huge-long-lived.js: Added. * fast/js/regress/script-tests/ArrayBuffer-Int8Array-alloc-large-long-lived.js: Added. * fast/js/regress/script-tests/ArrayBuffer-Int8Array-alloc-long-lived-buffer.js: Added. * fast/js/regress/script-tests/ArrayBuffer-Int8Array-alloc-long-lived.js: Added. * fast/js/regress/script-tests/ArrayBuffer-Int8Array-alloc.js: Added. * fast/js/regress/script-tests/Int32Array-Int8Array-view-alloc.js: Added. * fast/js/regress/script-tests/Int32Array-alloc-huge-long-lived.js: Added. * fast/js/regress/script-tests/Int32Array-alloc-huge.js: Added. * fast/js/regress/script-tests/Int32Array-alloc-large-long-lived.js: Added. * fast/js/regress/script-tests/Int32Array-alloc-large.js: Added. * fast/js/regress/script-tests/Int32Array-alloc-long-lived.js: Added. * fast/js/regress/script-tests/Int32Array-alloc.js: Added. * platform/mac/fast/js/constructor-length-expected.txt: * webgl/resources/webgl_test_files/conformance/typedarrays/array-unit-tests.html: * webgl/resources/webgl_test_files/conformance/typedarrays/data-view-test.html: git-svn-id: http://svn.webkit.org/repository/webkit/trunk@154127 268f45cc-cd09-0410-ab3c-d52691b4dbfc
-
- 06 Aug, 2013 1 commit
-
-
paroga@webkit.org authored
Read the stub template from a header files instead of the JITStubs.cpp. * CMakeLists.txt: * DerivedSources.pri: * create_jit_stubs: git-svn-id: http://svn.webkit.org/repository/webkit/trunk@153744 268f45cc-cd09-0410-ab3c-d52691b4dbfc
-
- 05 Aug, 2013 1 commit
-
-
oliver@apple.com authored
https://bugs.webkit.org/show_bug.cgi?id=119489 Reviewed by Filip Pizlo. Source/JavaScriptCore: Move TypedArray implementation into JSC in advance of re-implementation * GNUmakefile.list.am: * JSCTypedArrayStubs.h: * JavaScriptCore.xcodeproj/project.pbxproj: * runtime/ArrayBuffer.cpp: Renamed from Source/WTF/wtf/ArrayBuffer.cpp. (JSC::ArrayBuffer::transfer): (JSC::ArrayBuffer::addView): (JSC::ArrayBuffer::removeView): * runtime/ArrayBuffer.h: Renamed from Source/WTF/wtf/ArrayBuffer.h. (JSC::ArrayBufferContents::ArrayBufferContents): (JSC::ArrayBufferContents::data): (JSC::ArrayBufferContents::sizeInBytes): (JSC::ArrayBufferContents::transfer): (JSC::ArrayBufferContents::copyTo): (JSC::ArrayBuffer::isNeutered): (JSC::ArrayBuffer::~ArrayBuffer): (JSC::ArrayBuffer::clampValue): (JSC::ArrayBuffer::create): (JSC::ArrayBuffer::createUninitialized): (JSC::ArrayBuffer::ArrayBuffer): (JSC::ArrayBuffer::data): (JSC::ArrayBuffer::byteLength): (JSC::ArrayBuffer::slice): (JSC::ArrayBuffer::sliceImpl): (JSC::ArrayBuffer::clampIndex): (JSC::ArrayBufferContents::tryAllocate): (JSC::ArrayBufferContents::~ArrayBufferContents): * runtime/ArrayBufferView.cpp: Renamed from Source/WTF/wtf/ArrayBufferView.cpp. (JSC::ArrayBufferView::ArrayBufferView): (JSC::ArrayBufferView::~ArrayBufferView): (JSC::ArrayBufferView::neuter): * runtime/ArrayBufferView.h: Renamed from Source/WTF/wtf/ArrayBufferView.h. (JSC::ArrayBufferView::buffer): (JSC::ArrayBufferView::baseAddress): (JSC::ArrayBufferView::byteOffset): (JSC::ArrayBufferView::setNeuterable): (JSC::ArrayBufferView::isNeuterable): (JSC::ArrayBufferView::verifySubRange): (JSC::ArrayBufferView::clampOffsetAndNumElements): (JSC::ArrayBufferView::setImpl): (JSC::ArrayBufferView::setRangeImpl): (JSC::ArrayBufferView::zeroRangeImpl): (JSC::ArrayBufferView::calculateOffsetAndLength): * runtime/Float32Array.h: Renamed from Source/WTF/wtf/Float32Array.h. (JSC::Float32Array::set): (JSC::Float32Array::getType): (JSC::Float32Array::create): (JSC::Float32Array::createUninitialized): (JSC::Float32Array::Float32Array): (JSC::Float32Array::subarray): * runtime/Float64Array.h: Renamed from Source/WTF/wtf/Float64Array.h. (JSC::Float64Array::set): (JSC::Float64Array::getType): (JSC::Float64Array::create): (JSC::Float64Array::createUninitialized): (JSC::Float64Array::Float64Array): (JSC::Float64Array::subarray): * runtime/Int16Array.h: Renamed from Source/WTF/wtf/Int16Array.h. (JSC::Int16Array::getType): (JSC::Int16Array::create): (JSC::Int16Array::createUninitialized): (JSC::Int16Array::Int16Array): (JSC::Int16Array::subarray): * runtime/Int32Array.h: Renamed from Source/WTF/wtf/Int32Array.h. (JSC::Int32Array::getType): (JSC::Int32Array::create): (JSC::Int32Array::createUninitialized): (JSC::Int32Array::Int32Array): (JSC::Int32Array::subarray): * runtime/Int8Array.h: Renamed from Source/WTF/wtf/Int8Array.h. (JSC::Int8Array::getType): (JSC::Int8Array::create): (JSC::Int8Array::createUninitialized): (JSC::Int8Array::Int8Array): (JSC::Int8Array::subarray): * runtime/IntegralTypedArrayBase.h: Renamed from Source/WTF/wtf/IntegralTypedArrayBase.h. (JSC::IntegralTypedArrayBase::set): (JSC::IntegralTypedArrayBase::IntegralTypedArrayBase): * runtime/TypedArrayBase.h: Renamed from Source/WTF/wtf/TypedArrayBase.h. (JSC::TypedArrayBase::data): (JSC::TypedArrayBase::set): (JSC::TypedArrayBase::setRange): (JSC::TypedArrayBase::zeroRange): (JSC::TypedArrayBase::length): (JSC::TypedArrayBase::byteLength): (JSC::TypedArrayBase::item): (JSC::TypedArrayBase::checkInboundData): (JSC::TypedArrayBase::TypedArrayBase): (JSC::TypedArrayBase::create): (JSC::TypedArrayBase::createUninitialized): (JSC::TypedArrayBase::subarrayImpl): (JSC::TypedArrayBase::neuter): * runtime/Uint16Array.h: Renamed from Source/WTF/wtf/Uint16Array.h. (JSC::Uint16Array::getType): (JSC::Uint16Array::create): (JSC::Uint16Array::createUninitialized): (JSC::Uint16Array::Uint16Array): (JSC::Uint16Array::subarray): * runtime/Uint32Array.h: Renamed from Source/WTF/wtf/Uint32Array.h. (JSC::Uint32Array::getType): (JSC::Uint32Array::create): (JSC::Uint32Array::createUninitialized): (JSC::Uint32Array::Uint32Array): (JSC::Uint32Array::subarray): * runtime/Uint8Array.h: Renamed from Source/WTF/wtf/Uint8Array.h. (JSC::Uint8Array::getType): (JSC::Uint8Array::create): (JSC::Uint8Array::createUninitialized): (JSC::Uint8Array::Uint8Array): (JSC::Uint8Array::subarray): * runtime/Uint8ClampedArray.h: Renamed from Source/WTF/wtf/Uint8ClampedArray.h. (JSC::Uint8ClampedArray::getType): (JSC::Uint8ClampedArray::create): (JSC::Uint8ClampedArray::createUninitialized): (JSC::Uint8ClampedArray::zeroFill): (JSC::Uint8ClampedArray::set): (JSC::Uint8ClampedArray::Uint8ClampedArray): (JSC::Uint8ClampedArray::subarray): * runtime/VM.h: Source/WebCore: Update WebCore for new location of TypedArray implementation. * ForwardingHeaders/runtime/ArrayBuffer.h: Added. * ForwardingHeaders/runtime/ArrayBufferView.h: Added. * ForwardingHeaders/runtime/Float32Array.h: Added. * ForwardingHeaders/runtime/Float64Array.h: Added. * ForwardingHeaders/runtime/Int16Array.h: Added. * ForwardingHeaders/runtime/Int32Array.h: Added. * ForwardingHeaders/runtime/Int8Array.h: Added. * ForwardingHeaders/runtime/IntegralTypedArrayBase.h: Added. * ForwardingHeaders/runtime/TypedArrayBase.h: Added. * ForwardingHeaders/runtime/Uint16Array.h: Added. * ForwardingHeaders/runtime/Uint32Array.h: Added. * ForwardingHeaders/runtime/Uint8Array.h: Added. * ForwardingHeaders/runtime/Uint8ClampedArray.h: Added. * Modules/webaudio/AnalyserNode.h: (WebCore::AnalyserNode::getFloatFrequencyData): (WebCore::AnalyserNode::getByteFrequencyData): (WebCore::AnalyserNode::getByteTimeDomainData): * Modules/webaudio/AsyncAudioDecoder.cpp: * Modules/webaudio/AsyncAudioDecoder.h: (WebCore::AsyncAudioDecoder::DecodingTask::audioData): * Modules/webaudio/AudioBuffer.h: * Modules/webaudio/AudioContext.cpp: * Modules/webaudio/AudioParam.h: * Modules/webaudio/AudioParamTimeline.h: * Modules/webaudio/PeriodicWave.h: * Modules/webaudio/RealtimeAnalyser.cpp: * Modules/webaudio/RealtimeAnalyser.h: * Modules/webaudio/ScriptProcessorNode.cpp: * Modules/webaudio/WaveShaperProcessor.h: * Modules/websockets/ThreadableWebSocketChannel.h: * Modules/websockets/WebSocket.cpp: * Modules/websockets/WebSocket.h: * Modules/websockets/WebSocketChannel.cpp: * Modules/websockets/WebSocketChannel.h: * Modules/websockets/WorkerThreadableWebSocketChannel.cpp: * Modules/websockets/WorkerThreadableWebSocketChannel.h: * WebCore.exp.in: * bindings/js/JSArrayBufferCustom.cpp: * bindings/js/JSArrayBufferViewHelper.h: * bindings/js/JSAudioContextCustom.cpp: * bindings/js/JSCryptoCustom.cpp: * bindings/js/JSDictionary.h: * bindings/js/JSFileReaderCustom.cpp: * bindings/js/JSWebGLRenderingContextCustom.cpp: * bindings/js/JSXMLHttpRequestCustom.cpp: * bindings/js/SerializedScriptValue.cpp: (WebCore::SerializedScriptValue::transferArrayBuffers): * bindings/js/SerializedScriptValue.h: * bindings/scripts/CodeGeneratorJS.pm: (AddIncludesForType): (GenerateHeader): (NativeToJSValue): * dom/MessageEvent.h: * fileapi/FileReader.cpp: * fileapi/FileReader.h: * fileapi/FileReaderLoader.cpp: * fileapi/FileReaderLoader.h: * fileapi/FileReaderSync.cpp: * fileapi/FileReaderSync.h: * fileapi/WebKitBlobBuilder.cpp: * fileapi/WebKitBlobBuilder.h: * html/HTMLMediaElement.cpp: * html/ImageData.h: * html/canvas/ArrayBuffer.idl: * html/canvas/ArrayBufferView.idl: * html/canvas/CanvasRenderingContext2D.cpp: * html/canvas/DataView.h: * html/canvas/Float32Array.idl: * html/canvas/Float64Array.idl: * html/canvas/Int16Array.idl: * html/canvas/Int32Array.idl: * html/canvas/Int8Array.idl: * html/canvas/Uint16Array.idl: * html/canvas/Uint32Array.idl: * html/canvas/Uint8Array.idl: * html/canvas/Uint8ClampedArray.idl: * html/canvas/WebGLBuffer.h: (WebCore::WebGLBuffer::elementArrayBuffer): * html/canvas/WebGLGetInfo.cpp: * html/canvas/WebGLGetInfo.h: * html/canvas/WebGLRenderingContext.cpp: * html/canvas/WebGLRenderingContext.h: * inspector/InspectorMemoryAgent.cpp: * page/Crypto.cpp: * page/Crypto.h: * platform/graphics/GraphicsContext3D.cpp: * platform/graphics/ImageBuffer.h: * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm: * platform/graphics/cg/ImageBufferDataCG.h: * platform/graphics/filters/FEBlend.cpp: * platform/graphics/filters/FEColorMatrix.cpp: * platform/graphics/filters/FEComponentTransfer.cpp: * platform/graphics/filters/FEComposite.cpp: * platform/graphics/filters/FEConvolveMatrix.cpp: * platform/graphics/filters/FECustomFilter.cpp: * platform/graphics/filters/FEDisplacementMap.cpp: * platform/graphics/filters/FEDropShadow.cpp: * platform/graphics/filters/FEGaussianBlur.cpp: * platform/graphics/filters/FELighting.h: * platform/graphics/filters/FEMorphology.cpp: * platform/graphics/filters/FETurbulence.cpp: * platform/graphics/filters/FilterEffect.cpp: * platform/graphics/filters/FilterEffect.h: * platform/graphics/mac/GraphicsContext3DMac.mm: * platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp: * testing/Internals.h: * xml/XMLHttpRequest.cpp: * xml/XMLHttpRequest.h: (WebCore::XMLHttpRequest::optionalResponseArrayBuffer): Source/WTF: Remove TypedArray implementation from WTF * GNUmakefile.list.am: * WTF.xcodeproj/project.pbxproj: * wtf/Forward.h: git-svn-id: http://svn.webkit.org/repository/webkit/trunk@153728 268f45cc-cd09-0410-ab3c-d52691b4dbfc
-
- 02 Aug, 2013 1 commit
-
-
paroga@webkit.org authored
* CMakeLists.txt: git-svn-id: http://svn.webkit.org/repository/webkit/trunk@153644 268f45cc-cd09-0410-ab3c-d52691b4dbfc
-
- 25 Jul, 2013 4 commits
-
-
gyuyoung.kim@samsung.com authored
* CMakeLists.txt: Add CommonSlowPathsExceptions.cpp. git-svn-id: http://svn.webkit.org/repository/webkit/trunk@153365 268f45cc-cd09-0410-ab3c-d52691b4dbfc
-
ryuan.choi@samsung.com authored
* CMakeLists.txt: Added JSCTestRunnerUtils.cpp. git-svn-id: http://svn.webkit.org/repository/webkit/trunk@153325 268f45cc-cd09-0410-ab3c-d52691b4dbfc
-
ryuan.choi@samsung.com authored
Source/JavaScriptCore: * CMakeLists.txt: Added SourceCode.cpp and removed BlackBerry file. * jit/JITCode.h: (JSC::JITCode::nextTierJIT): Fixed to build break because of -Werror=return-type * parser/Lexer.cpp: Includes JSFunctionInlines.h * runtime/JSScope.h: (JSC::makeType): Fixed to build break because of -Werror=return-type Source/WTF: * wtf/CMakeLists.txt: Added SixCharacterHash.cpp git-svn-id: http://svn.webkit.org/repository/webkit/trunk@153319 268f45cc-cd09-0410-ab3c-d52691b4dbfc
-
ossy@webkit.org authored
Add ftl directory as include path. * CMakeLists.txt: * JavaScriptCore.pri: git-svn-id: http://svn.webkit.org/repository/webkit/trunk@153300 268f45cc-cd09-0410-ab3c-d52691b4dbfc
-
- 24 Jul, 2013 6 commits
-
-
oliver@apple.com authored
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@153298 268f45cc-cd09-0410-ab3c-d52691b4dbfc
-
oliver@apple.com authored
This was a non trivial merge as trunk has changed computation of line and column information Introducing the StackIterator class. https://bugs.webkit.org/show_bug.cgi?id=117390. Reviewed by Geoffrey Garen. Source/JavaScriptCore: The StackIterator class is meant to unify the way we iterate the JS stack. It also makes it so that we don't have to copy the frame data into the intermediate StackFrame struct before processing it. Unfortunately we still can't get rid of StackFrame because it is used to record frame information for the Exception stack that is expected to persist beyond when the frames have been popped off the JS stack. The StackIterator will iterate over all "logical" frames (i.e. including inlined frames). As it iterates the JS stack, if it encounters a DFG frame that has inlined frames, the iterator will canonicalize the inlined frames before returning. Once canonicalized, the frame can be read like any other frame. The StackIterator implements a Frame class that inherits from CallFrame. The StackIterator::Frame serves as reader of the CallFrame that makes it easier to access information about the frame. The StackIterator::Frame only adds functions, and no additional data fields. * API/JSContextRef.cpp: (JSContextCreateBacktrace): * CMakeLists.txt: * GNUmakefile.list.am: * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: * JavaScriptCore.vcxproj/JavaScriptCore.vcxproj: * JavaScriptCore.vcxproj/JavaScriptCore.vcxproj.filters: * JavaScriptCore.xcodeproj/project.pbxproj: * Target.pri: * interpreter/CallFrame.cpp: (JSC::CallFrame::begin): (JSC::CallFrame::beginAt): * interpreter/CallFrame.h: (JSC::ExecState::setInlineCallFrame): (ExecState): (JSC::ExecState::end): * interpreter/Interpreter.cpp: (JSC::Interpreter::dumpRegisters): (JSC::Interpreter::unwindCallFrame): (JSC::Interpreter::getStackTrace): (JSC::Interpreter::throwException): (JSC::Interpreter::debug): * interpreter/Interpreter.h: (Interpreter): * interpreter/StackIterator.cpp: Added. (JSC::StackIterator::StackIterator): (JSC::StackIterator::beginAt): (JSC::StackIterator::gotoNextFrame): - Based on the deleted Interpreter::findFunctionCallFrameFromVMCode(). (JSC::StackIterator::findFrameForFunction): - Based on the deleted Interpreter::retrieveCallerFromVMCode(). (JSC::StackIterator::Frame::codeType): - Based on the deleted getStackFrameCodeType(). (JSC::StackIterator::Frame::functionName): - Based on StackFrame::friendlyFunctionName(). (JSC::StackIterator::Frame::sourceURL): - Based on StackFrame::friendlySourceURL(). (JSC::StackIterator::Frame::toString): - Based on StackFrame::toString(). (JSC::StackIterator::Frame::bytecodeOffset): (JSC::StackIterator::Frame::line): - Based on StackFrame::line(). (JSC::StackIterator::Frame::column): - Based on StackFrame::column(). (JSC::StackIterator::Frame::arguments): - Based on the deleted Interpreter::retrieveArgumentsFromVMCode(). (JSC::StackIterator::Frame::retrieveExpressionInfo): - Based on StackFrame::expressionInfo(). (JSC::StackIterator::Frame::logicalFrame): - Based on the now deleted CallFrame::trueCallFrame(). (JSC::StackIterator::Frame::logicalCallerFrame): - Based on the now deleted CallFrame::trueCallerFrame(). (JSC::jitTypeName): (JSC::printIndents): (JSC::printif): (JSC::StackIterator::Frame::print): (debugPrintCallFrame): - Prints the contents of the frame for debugging purposes. There are 2 versions that can be used as follows: 1. When you have a valid StackIterator, you can print the current frame's content using the print instance method: iter->print(indentLevel); 2. When you have a CallFrame* that you want to dump from a debugger console, you can print its content as follows: (gdb) call debugPrintCallFrame(callFrame) A sample of the output looks like this: frame 0x1510c70b0 { name 'shouldBe' sourceURL 'testapi.js' hostFlag 0 isInlinedFrame 0 callee 0x15154efb0 returnPC 0x10ed0786d callerFrame 0x1510c7058 logicalCallerFrame 0x1510c7058 rawLocationBits 27 0x1b codeBlock 0x7fe79b037200 bytecodeOffset 27 0x1b / 210 line 46 column 20 jitType 3 <BaselineJIT> isOptimizingJIT 0 hasCodeOrigins 0 } * interpreter/StackIterator.h: Added. (StackIterator::Frame): (JSC::StackIterator::Frame::create): (JSC::StackIterator::Frame::isJSFrame): (JSC::StackIterator::Frame::callFrame): * interpreter/StackIteratorPrivate.h: Added. (StackIterator): (JSC::StackIterator::operator*): (JSC::StackIterator::operator->): (JSC::StackIterator::operator==): (JSC::StackIterator::operator!=): (JSC::StackIterator::operator++): (JSC::StackIterator::end): (JSC::StackIterator::empty): * jsc.cpp: (functionJSCStack): * profiler/ProfileGenerator.cpp: (JSC::ProfileGenerator::addParentForConsoleStart): * profiler/ProfileNode.h: (ProfileNode): * runtime/JSFunction.cpp: (JSC::retrieveArguments): (JSC::JSFunction::argumentsGetter): (JSC::skipOverBoundFunctions): (JSC::retrieveCallerFunction): (JSC::JSFunction::callerGetter): (JSC::JSFunction::getOwnPropertyDescriptor): (JSC::JSFunction::defineOwnProperty): * runtime/JSGlobalObjectFunctions.cpp: (JSC::globalFuncProtoGetter): (JSC::globalFuncProtoSetter): * runtime/ObjectConstructor.cpp: (JSC::objectConstructorGetPrototypeOf): * runtime/Operations.h: Source/WebCore: No new tests. * ForwardingHeaders/interpreter/StackIterator.h: Added. * bindings/js/JSXMLHttpRequestCustom.cpp: (WebCore::JSXMLHttpRequest::send): * bindings/js/ScriptCallStackFactory.cpp: (WebCore::createScriptCallStack): git-svn-id: http://svn.webkit.org/repository/webkit/trunk@153218 268f45cc-cd09-0410-ab3c-d52691b4dbfc
-
oliver@apple.com authored
https://bugs.webkit.org/show_bug.cgi?id=115705. Reviewed by Geoffrey Garen. The probe is in the form of a MacroAssembler pseudo instruction. It takes 3 arguments: a ProbeFunction, and 2 void* args. When inserted into the JIT at some code generation site, the probe pseudo "instruction" will emit a minimal amount of code to save the stack pointer, 1 (or more) scratch register(s), and the probe arguments into a ProbeContext record on the stack. The emitted code will then call a probe trampoline to do the rest of the work, which consists of: 1. saving the remaining registers into the ProbeContext. 2. calling the ProbeFunction, and passing it the ProbeContext pointer. 3. restoring the registers from the ProbeContext after the ProbeFunction returns, and then returning to the JIT generated code. The ProbeContext is stack allocated and is only valid for the duration that the ProbeFunction is executing. If the user supplied ProbeFunction alters the register values in the ProbeContext, the new values will be installed into the registers upon returning from the probe. This can be useful for some debugging or testing purposes. The probe mechanism is built conditional on USE(MASM_PROBE) which is defined in config.h. USE(MASM_PROBE) will off by default. This changeset only implements the probe mechanism for X86 and X86_64. * CMakeLists.txt: * GNUmakefile.list.am: * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: * JavaScriptCore.vcxproj/JavaScriptCore.vcxproj: * JavaScriptCore.vcxproj/JavaScriptCore.vcxproj.filters: * JavaScriptCore.xcodeproj/project.pbxproj: * Target.pri: * assembler/MacroAssembler.h: (MacroAssembler): (JSC::MacroAssembler::shouldBlind): (JSC::MacroAssembler::store32): * assembler/MacroAssemblerX86.h: (MacroAssemblerX86): (JSC::MacroAssemblerX86::trustedImm32FromPtr): (JSC::MacroAssemblerX86::probe): * assembler/MacroAssemblerX86Common.cpp: Added. (JSC::MacroAssemblerX86Common::ProbeContext::dumpCPURegisters): - CPU specific register dumper called by ProbeContext::dump(). (JSC::MacroAssemblerX86Common::ProbeContext::dump): - Prints the ProbeContext to the DataLog. * assembler/MacroAssemblerX86Common.h: (MacroAssemblerX86Common): (CPUState): Added. (ProbeContext): Added. * assembler/MacroAssemblerX86_64.h: (MacroAssemblerX86_64): (JSC::MacroAssemblerX86_64::trustedImm64FromPtr): (JSC::MacroAssemblerX86_64::probe): * assembler/X86Assembler.h: * config.h: Added WTF_USE_MASM_PROBE flag. * jit/JITStubs.cpp: * jit/JITStubs.h: * jit/JITStubsX86.h: * jit/JITStubsX86Common.h: Added. * jit/JITStubsX86_64.h: git-svn-id: http://svn.webkit.org/repository/webkit/trunk@153162 268f45cc-cd09-0410-ab3c-d52691b4dbfc
-
oliver@apple.com authored
broken builds. git-svn-id: http://svn.webkit.org/repository/webkit/trunk@153121 268f45cc-cd09-0410-ab3c-d52691b4dbfc
-
oliver@apple.com authored
https://bugs.webkit.org/show_bug.cgi?id=114306 Reviewed by Mark Hahnenberg. Just abstract out some things that the FTL will want to use as well. * CMakeLists.txt: * GNUmakefile.list.am: * JavaScriptCore.xcodeproj/project.pbxproj: * Target.pri: * dfg/DFGDriver.cpp: (JSC::DFG::compile): * dfg/DFGOSRExitCompiler.cpp: * dfg/DFGOSRExitCompiler.h: (OSRExitCompiler): * dfg/DFGOSRExitCompiler32_64.cpp: (JSC::DFG::OSRExitCompiler::compileExit): * dfg/DFGOSRExitCompiler64.cpp: (JSC::DFG::OSRExitCompiler::compileExit): * dfg/DFGOSRExitCompilerCommon.cpp: Added. (DFG): (JSC::DFG::handleExitCounts): (JSC::DFG::reifyInlinedCallFrames): (JSC::DFG::adjustAndJumpToTarget): * dfg/DFGOSRExitCompilerCommon.h: Added. (DFG): git-svn-id: http://svn.webkit.org/repository/webkit/trunk@153119 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
-
- 04 Jul, 2013 2 commits
-
-
paroga@webkit.org authored
https://bugs.webkit.org/show_bug.cgi?id=116666 Reviewed by Laszlo Gombos. Also move the generation for ARM CPU into the CMakeLists.txt, since it's compiler specific and not dedicated to Windows CE. * CMakeLists.txt: * PlatformWinCE.cmake: Removed. git-svn-id: http://svn.webkit.org/repository/webkit/trunk@152395 268f45cc-cd09-0410-ab3c-d52691b4dbfc
-
paroga@webkit.org authored
https://bugs.webkit.org/show_bug.cgi?id=118120 Reviewed by Gyuyoung Kim. Since WTF is a static library linked to JavaScriptCore on all CMake ports we need to define STATICALLY_LINKED_WITH_WTF for all of them. This makes only a difference for Windows, since WTF_EXPORT and WTF_IMPORT are the same on all other platforms. * CMakeLists.txt: git-svn-id: http://svn.webkit.org/repository/webkit/trunk@152393 268f45cc-cd09-0410-ab3c-d52691b4dbfc
-
- 18 May, 2013 1 commit
-
-
paroga@webkit.org authored
https://bugs.webkit.org/show_bug.cgi?id=114554 Reviewed by Gyuyoung Kim. Using variables as target names is very uncommon in CMake. The usual way to specify the name of the resulting binary is to set the OUTPUT_NAME target property. .: * CMakeLists.txt: * Source/CMakeLists.txt: * Source/PlatformEfl.cmake: * Source/PlatformGTK.cmake: * Source/cmake/OptionsBlackBerry.cmake: * Source/cmake/OptionsEfl.cmake: * Source/cmake/OptionsGTK.cmake: * Source/cmake/WebKitHelpers.cmake: * Source/cmake/gtest/CMakeLists.txt: Source/JavaScriptCore: * CMakeLists.txt: * shell/CMakeLists.txt: Source/WebCore: * CMakeLists.txt: Source/WebKit: * CMakeLists.txt: * PlatformBlackBerry.cmake: * PlatformEfl.cmake: Source/WebKit/efl: * ewebkit.pc.in: Source/WebKit2: * CMakeLists.txt: * PlatformEfl.cmake: * efl/ewebkit2.pc.in: Source/WTF: * wtf/CMakeLists.txt: Tools: * DumpRenderTree/efl/CMakeLists.txt: * EWebLauncher/CMakeLists.txt: * ImageDiff/CMakeLists.txt: * MiniBrowser/efl/CMakeLists.txt: * TestWebKitAPI/CMakeLists.txt: * WebKitTestRunner/CMakeLists.txt: * WebKitTestRunner/PlatformEfl.cmake: * WinCELauncher/CMakeLists.txt: git-svn-id: http://svn.webkit.org/repository/webkit/trunk@150336 268f45cc-cd09-0410-ab3c-d52691b4dbfc
-
- 16 May, 2013 1 commit
-
-
paroga@webkit.org authored
https://bugs.webkit.org/show_bug.cgi?id=115992 Reviewed by Gyuyoung Kim. Move common files into the CMakeLists.txt to avoid duplicating the list of files. Also rebase the recently added GTK files to match the other CMake ports, since the submitted patch was based on an older version of the source tree. * CMakeLists.txt: * PlatformEfl.cmake: * PlatformGTK.cmake: * shell/CMakeLists.txt: * shell/PlatformEfl.cmake: * shell/PlatformGTK.cmake: git-svn-id: http://svn.webkit.org/repository/webkit/trunk@150220 268f45cc-cd09-0410-ab3c-d52691b4dbfc
-
- 10 May, 2013 1 commit
-
-
mhahnenberg@apple.com authored
https://bugs.webkit.org/show_bug.cgi?id=115938 We're going to add some more types of check hoisting soon, so let's have the right name here. Rubber stamped by Filip Pizlo. * CMakeLists.txt: * GNUmakefile.list.am: * JavaScriptCore.xcodeproj/project.pbxproj: * Target.pri: * dfg/DFGDriver.cpp: (JSC::DFG::compile): * dfg/DFGStructureCheckHoistingPhase.cpp: Removed. * dfg/DFGStructureCheckHoistingPhase.h: Removed. * dfg/DFGTypeCheckHoistingPhase.cpp: Copied from Source/JavaScriptCore/dfg/DFGStructureCheckHoistingPhase.cpp. (JSC::DFG::TypeCheckHoistingPhase::TypeCheckHoistingPhase): (JSC::DFG::performTypeCheckHoisting): * dfg/DFGTypeCheckHoistingPhase.h: Copied from Source/JavaScriptCore/dfg/DFGStructureCheckHoistingPhase.h. git-svn-id: http://svn.webkit.org/repository/webkit/trunk@149911 268f45cc-cd09-0410-ab3c-d52691b4dbfc
-
- 30 Apr, 2013 1 commit
-
-
rniwa@webkit.org authored
http://trac.webkit.org/changeset/149349 http://trac.webkit.org/changeset/149354 https://bugs.webkit.org/show_bug.cgi?id=115444 The Thumb version of compileSoftModulo make invalid use of registers (Requested by benjaminp on #webkit). Source/JavaScriptCore: * CMakeLists.txt: * GNUmakefile.list.am: * JavaScriptCore.xcodeproj/project.pbxproj: * assembler/ARMv7Assembler.h: (ARMv7Assembler): * assembler/AbstractMacroAssembler.h: (JSC::isARMv7s): (JSC): * assembler/MacroAssemblerARMv7.cpp: Removed. * assembler/MacroAssemblerARMv7.h: (MacroAssemblerARMv7): * dfg/DFGFixupPhase.cpp: (JSC::DFG::FixupPhase::fixupNode): * dfg/DFGOperations.cpp: * dfg/DFGOperations.h: * dfg/DFGSpeculativeJIT.cpp: (JSC::DFG::SpeculativeJIT::compileSoftModulo): (DFG): (JSC::DFG::SpeculativeJIT::compileIntegerArithDivForARMv7s): * dfg/DFGSpeculativeJIT.h: (JSC::DFG::SpeculativeJIT::callOperation): (SpeculativeJIT): * dfg/DFGSpeculativeJIT32_64.cpp: (JSC::DFG::SpeculativeJIT::compile): Source/WTF: * wtf/Platform.h: git-svn-id: http://svn.webkit.org/repository/webkit/trunk@149395 268f45cc-cd09-0410-ab3c-d52691b4dbfc
-
- 29 Apr, 2013 1 commit
-
-
commit-queue@webkit.org authored
https://bugs.webkit.org/show_bug.cgi?id=115138 Patch by Cosmin Truta <ctruta@blackberry.com> on 2013-04-29 Reviewed by Benjamin Poulain. Source/JavaScriptCore: If availability of hardware integer division isn't known at compile time, check the CPU flags and decide at runtime whether to fall back to software. Currently, this OS-specific check is implemented on QNX. Moreover, use operator % instead of fmod() in the calculation of the software modulo. Even when it's software-emulated, operator % is faster than fmod(): on ARM v7 QNX, without hardware division, we noticed >3% speedup on SunSpider. * CMakeLists.txt: * GNUmakefile.list.am: * JavaScriptCore.xcodeproj/project.pbxproj: * assembler/ARMv7Assembler.h: (JSC::ARMv7Assembler::sdiv): Did not compile conditionally. (JSC::ARMv7Assembler::udiv): Ditto. * assembler/AbstractMacroAssembler.h: (JSC::isARMv7s): Removed. * assembler/MacroAssemblerARMv7.cpp: Added. (JSC::isIntegerDivSupported): Added. * assembler/MacroAssemblerARMv7.h: (JSC::MacroAssemblerARMv7::supportsIntegerDiv): Added. * dfg/DFGFixupPhase.cpp: (JSC::DFG::FixupPhase::fixupNode): Checked MacroAssembler::supportsIntegerDiv() in ArithDiv case. * dfg/DFGOperations.cpp: (JSC::DFG::operationModOnInts): Added. * dfg/DFGOperations.h: (JSC::DFG::Z_DFGOperation_ZZ): Added. * dfg/DFGSpeculativeJIT.cpp: (JSC::DFG::SpeculativeJIT::compileSoftModulo): Separated the X86-specific and ARM-specific codegen from the common implementation; used operationModOnInts on ARM. (JSC::DFG::SpeculativeJIT::compileIntegerArithDivForARM): Renamed from compileIntegerArithDivForARMv7. (JSC::DFG::SpeculativeJIT::compileArithMod): Allowed run-time detection of integer div on ARM. * dfg/DFGSpeculativeJIT.h: (JSC::DFG::SpeculativeJIT::callOperation): Added overloads with Z_DFGOperation_ZZ arguments. * dfg/DFGSpeculativeJIT32_64.cpp: (JSC::DFG::SpeculativeJIT::compile): Used compileIntegerArithDivForARM. Source/WTF: * wtf/Platform.h: Added ENABLE_ARM_INTEGER_DIV. git-svn-id: http://svn.webkit.org/repository/webkit/trunk@149349 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
-
- 17 Apr, 2013 1 commit
-
-
mark.lam@apple.com authored
https://bugs.webkit.org/show_bug.cgi?id=114577. Reviewed by Geoffrey Garen. Introduces the new Watchdog class which is used to track script execution time, and initiate script termination if needed. * API/JSContextRef.cpp: (internalScriptTimeoutCallback): (JSContextGroupSetExecutionTimeLimit): (JSContextGroupClearExecutionTimeLimit): * API/JSContextRefPrivate.h: - Added new script execution time limit APIs. * API/tests/testapi.c: (currentCPUTime): (shouldTerminateCallback): (cancelTerminateCallback): (extendTerminateCallback): (main): - Added new API tests for script execution time limit. * CMakeLists.txt: * GNUmakefile.list.am: * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: * JavaScriptCore.vcxproj/JavaScriptCore.vcxproj: * JavaScriptCore.vcxproj/JavaScriptCore.vcxproj.filters: * JavaScriptCore.xcodeproj/project.pbxproj: * Target.pri: * bytecompiler/BytecodeGenerator.cpp: (JSC::BytecodeGenerator::emitLoopHint): - loop hints are needed for the llint as well. Hence, it will be emitted unconditionally. * interpreter/Interpreter.cpp: (JSC::Interpreter::addStackTraceIfNecessary): (JSC::Interpreter::throwException): (JSC::Interpreter::execute): (JSC::Interpreter::executeCall): (JSC::Interpreter::executeConstruct): - Added checks for script termination before entering script code. * jit/JIT.cpp: (JSC::JIT::emitWatchdogTimerCheck): * jit/JIT.h: (JSC::JIT::emit_op_loop_hint): * jit/JITStubs.cpp: (JSC::DEFINE_STUB_FUNCTION(void, handle_watchdog_timer)): * jit/JITStubs.h: * llint/LLIntExceptions.cpp: (JSC::LLInt::doThrow): - Factored out some common code from returnToThrow() and callToThrow(). (JSC::LLInt::returnToThrow): (JSC::LLInt::callToThrow): * llint/LLIntSlowPaths.cpp: (JSC::LLInt::LLINT_SLOW_PATH_DECL(slow_path_handle_watchdog_timer)): * llint/LLIntSlowPaths.h: * llint/LowLevelInterpreter.asm: * llint/LowLevelInterpreter32_64.asm: * llint/LowLevelInterpreter64.asm: * runtime/ExceptionHelpers.cpp: (JSC::throwTerminatedExecutionException): - Also removed the now unused InterruptedExecutionException. * runtime/ExceptionHelpers.h: * runtime/JSGlobalData.cpp: (JSC::JSGlobalData::JSGlobalData): * runtime/JSGlobalData.h: - Added watchdog, and removed the now obsolete Terminator. * runtime/Terminator.h: Removed. * runtime/Watchdog.cpp: Added. (JSC::Watchdog::Watchdog): (JSC::Watchdog::~Watchdog): (JSC::Watchdog::setTimeLimit): (JSC::Watchdog::didFire): (JSC::Watchdog::isEnabled): (JSC::Watchdog::fire): (JSC::Watchdog::arm): (JSC::Watchdog::disarm): (JSC::Watchdog::startCountdownIfNeeded): (JSC::Watchdog::startCountdown): (JSC::Watchdog::stopCountdown): (JSC::Watchdog::Scope::Scope): (JSC::Watchdog::Scope::~Scope): * runtime/Watchdog.h: Added. (Watchdog): (JSC::Watchdog::didFire): (JSC::Watchdog::timerDidFireAddress): (JSC::Watchdog::isArmed): (Watchdog::Scope): * runtime/WatchdogMac.cpp: Added. (JSC::Watchdog::initTimer): (JSC::Watchdog::destroyTimer): (JSC::Watchdog::startTimer): (JSC::Watchdog::stopTimer): * runtime/WatchdogNone.cpp: Added. (JSC::Watchdog::initTimer): (JSC::Watchdog::destroyTimer): (JSC::Watchdog::startTimer): (JSC::Watchdog::stopTimer): Source/WebCore: Add LLINT and baseline JIT support for timing out scripts. https://bugs.webkit.org/show_bug.cgi?id=114577. Reviewed by Geoffrey Garen. Replaced use of the obsolete JSGlobalData.terminator methods with the JSGlobalData.watchdog equivalents. * bindings/js/JSEventListener.cpp: (WebCore::JSEventListener::handleEvent): * bindings/js/SerializedScriptValue.cpp: (WebCore::SerializedScriptValue::maybeThrowExceptionIfSerializationFailed): * bindings/js/WorkerScriptController.cpp: (WebCore::WorkerScriptController::evaluate): (WebCore::WorkerScriptController::scheduleExecutionTermination): (WebCore::WorkerScriptController::isExecutionTerminating): Source/WTF: Added currentCPUTime() and currentCPUTimeMS(). https://bugs.webkit.org/show_bug.cgi?id=114577. Reviewed by Geoffrey Garen. The currentCPUTime() implementation came from the old TimeoutChecker.cpp. * wtf/CurrentTime.cpp: (WTF::currentCPUTime): (WTF::currentCPUTimeMS): * wtf/CurrentTime.h: git-svn-id: http://svn.webkit.org/repository/webkit/trunk@148639 268f45cc-cd09-0410-ab3c-d52691b4dbfc
-
- 16 Apr, 2013 1 commit
-
-
paroga@webkit.org authored
https://bugs.webkit.org/show_bug.cgi?id=114265 Reviewed by Brent Fulgham. * Source/cmake/WebKitMacros.cmake: Removed macro GENERATE_HASH_LUT. Source/JavaScriptCore: [CMake] Do not use JAVASCRIPTCORE_DIR in add_custom_command() of JavaScriptCore project https://bugs.webkit.org/show_bug.cgi?id=114265 Reviewed by Brent Fulgham. Use CMAKE_CURRENT_SOURCE_DIR instead, since it provides the same value and is more understandable. Also move the GENERATE_HASH_LUT macro into the CMakeLists.txt of JavaScriptCore to avoid the usage of JAVASCRIPTCORE_DIR there too. * CMakeLists.txt: git-svn-id: http://svn.webkit.org/repository/webkit/trunk@148571 268f45cc-cd09-0410-ab3c-d52691b4dbfc
-
- 15 Apr, 2013 1 commit
-
-
andersca@apple.com authored
https://bugs.webkit.org/show_bug.cgi?id=114641 Reviewed by Alexey Proskuryakov. Source/JavaScriptCore: Move back the Weak constructor, destructor and clear() to Weak.h. Add a new weakClearSlowCase function and put it in Weak.cpp. * CMakeLists.txt: * GNUmakefile.list.am: * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: * JavaScriptCore.vcxproj/JavaScriptCore.vcxproj: * JavaScriptCore.vcxproj/JavaScriptCore.vcxproj.filters: * JavaScriptCore.xcodeproj/project.pbxproj: * Target.pri: * heap/Weak.cpp: Added. * heap/Weak.h: * heap/WeakInlines.h: * heap/WeakSetInlines.h: Source/WebCore: Remove ScriptWrappableInlines.h includes, they're not needed anymore. * css/WebKitCSSMatrix.cpp: * dom/ClientRect.cpp: * dom/ClientRectList.cpp: * dom/Clipboard.cpp: * dom/DOMStringMap.cpp: * dom/Event.cpp: * dom/MutationRecord.cpp: * fileapi/FileList.cpp: * page/BarInfo.cpp: * plugins/DOMMimeTypeArray.cpp: * plugins/DOMPlugin.cpp: * plugins/DOMPluginArray.cpp: * storage/Storage.cpp: git-svn-id: http://svn.webkit.org/repository/webkit/trunk@148479 268f45cc-cd09-0410-ab3c-d52691b4dbfc
-