Renamed JSGlobalData to VM
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
diff --git a/Source/JavaScriptCore/runtime/ArgList.h b/Source/JavaScriptCore/runtime/ArgList.h
index 6b6467c..84a0cdd 100644
--- a/Source/JavaScriptCore/runtime/ArgList.h
+++ b/Source/JavaScriptCore/runtime/ArgList.h
@@ -33,7 +33,7 @@
class MarkedArgumentBuffer {
WTF_MAKE_NONCOPYABLE(MarkedArgumentBuffer);
- friend class JSGlobalData;
+ friend class VM;
friend class ArgList;
private:
diff --git a/Source/JavaScriptCore/runtime/Arguments.cpp b/Source/JavaScriptCore/runtime/Arguments.cpp
index e61ca83..a188885 100644
--- a/Source/JavaScriptCore/runtime/Arguments.cpp
+++ b/Source/JavaScriptCore/runtime/Arguments.cpp
@@ -198,7 +198,7 @@
void Arguments::putByIndex(JSCell* cell, ExecState* exec, unsigned i, JSValue value, bool shouldThrow)
{
Arguments* thisObject = jsCast<Arguments*>(cell);
- if (thisObject->trySetArgument(exec->globalData(), i, value))
+ if (thisObject->trySetArgument(exec->vm(), i, value))
return;
PutPropertySlot slot(shouldThrow);
@@ -209,19 +209,19 @@
{
Arguments* thisObject = jsCast<Arguments*>(cell);
unsigned i = propertyName.asIndex();
- if (thisObject->trySetArgument(exec->globalData(), i, value))
+ if (thisObject->trySetArgument(exec->vm(), i, value))
return;
if (propertyName == exec->propertyNames().length && !thisObject->m_overrodeLength) {
thisObject->m_overrodeLength = true;
- thisObject->putDirect(exec->globalData(), propertyName, value, DontEnum);
+ thisObject->putDirect(exec->vm(), propertyName, value, DontEnum);
return;
}
if (propertyName == exec->propertyNames().callee && !thisObject->m_overrodeCallee) {
if (!thisObject->m_isStrictMode) {
thisObject->m_overrodeCallee = true;
- thisObject->putDirect(exec->globalData(), propertyName, value, DontEnum);
+ thisObject->putDirect(exec->vm(), propertyName, value, DontEnum);
return;
}
thisObject->createStrictModeCalleeIfNecessary(exec);
@@ -247,7 +247,7 @@
bool Arguments::deleteProperty(JSCell* cell, ExecState* exec, PropertyName propertyName)
{
- if (exec->globalData().isInDefineOwnProperty())
+ if (exec->vm().isInDefineOwnProperty())
return Base::deleteProperty(cell, exec, propertyName);
Arguments* thisObject = jsCast<Arguments*>(cell);
@@ -306,7 +306,7 @@
// i. If Desc.[[Value]] is present, then
// 1. Call the [[Put]] internal method of map passing P, Desc.[[Value]], and Throw as the arguments.
if (descriptor.value())
- thisObject->trySetArgument(exec->globalData(), i, descriptor.value());
+ thisObject->trySetArgument(exec->vm(), i, descriptor.value());
// ii. If Desc.[[Writable]] is present and its value is false, then
// 1. Call the [[Delete]] internal method of map passing P and false as arguments.
if (descriptor.writablePresent() && !descriptor.writable())
@@ -317,10 +317,10 @@
}
if (propertyName == exec->propertyNames().length && !thisObject->m_overrodeLength) {
- thisObject->putDirect(exec->globalData(), propertyName, jsNumber(thisObject->m_numArguments), DontEnum);
+ thisObject->putDirect(exec->vm(), propertyName, jsNumber(thisObject->m_numArguments), DontEnum);
thisObject->m_overrodeLength = true;
} else if (propertyName == exec->propertyNames().callee && !thisObject->m_overrodeCallee) {
- thisObject->putDirect(exec->globalData(), propertyName, thisObject->m_callee.get(), DontEnum);
+ thisObject->putDirect(exec->vm(), propertyName, thisObject->m_callee.get(), DontEnum);
thisObject->m_overrodeCallee = true;
} else if (propertyName == exec->propertyNames().caller && thisObject->m_isStrictMode)
thisObject->createStrictModeCallerIfNecessary(exec);
@@ -356,12 +356,12 @@
if (!callFrame->isInlineCallFrame()) {
for (size_t i = 0; i < m_numArguments; ++i)
- trySetArgument(callFrame->globalData(), i, callFrame->argumentAfterCapture(i));
+ trySetArgument(callFrame->vm(), i, callFrame->argumentAfterCapture(i));
return;
}
tearOffForInlineCallFrame(
- callFrame->globalData(), callFrame->registers(), callFrame->inlineCallFrame());
+ callFrame->vm(), callFrame->registers(), callFrame->inlineCallFrame());
}
void Arguments::didTearOffActivation(ExecState* exec, JSActivation* activation)
@@ -373,7 +373,7 @@
if (!m_numArguments)
return;
- m_activation.set(exec->globalData(), this, activation);
+ m_activation.set(exec->vm(), this, activation);
tearOff(exec);
}
@@ -389,11 +389,11 @@
m_registers = m_registerArray.get() + CallFrame::offsetFor(m_numArguments + 1);
tearOffForInlineCallFrame(
- callFrame->globalData(), callFrame->registers() + inlineCallFrame->stackOffset,
+ callFrame->vm(), callFrame->registers() + inlineCallFrame->stackOffset,
inlineCallFrame);
}
-void Arguments::tearOffForInlineCallFrame(JSGlobalData& globalData, Register* registers, InlineCallFrame* inlineCallFrame)
+void Arguments::tearOffForInlineCallFrame(VM& vm, Register* registers, InlineCallFrame* inlineCallFrame)
{
for (size_t i = 0; i < m_numArguments; ++i) {
ValueRecovery& recovery = inlineCallFrame->arguments[i + 1];
@@ -431,7 +431,7 @@
RELEASE_ASSERT_NOT_REACHED();
break;
}
- trySetArgument(globalData, i, value);
+ trySetArgument(vm, i, value);
}
}
diff --git a/Source/JavaScriptCore/runtime/Arguments.h b/Source/JavaScriptCore/runtime/Arguments.h
index 0cf3df7..58ac782 100644
--- a/Source/JavaScriptCore/runtime/Arguments.h
+++ b/Source/JavaScriptCore/runtime/Arguments.h
@@ -40,16 +40,16 @@
public:
typedef JSDestructibleObject Base;
- static Arguments* create(JSGlobalData& globalData, CallFrame* callFrame)
+ static Arguments* create(VM& vm, CallFrame* callFrame)
{
- Arguments* arguments = new (NotNull, allocateCell<Arguments>(globalData.heap)) Arguments(callFrame);
+ Arguments* arguments = new (NotNull, allocateCell<Arguments>(vm.heap)) Arguments(callFrame);
arguments->finishCreation(callFrame);
return arguments;
}
- static Arguments* create(JSGlobalData& globalData, CallFrame* callFrame, InlineCallFrame* inlineCallFrame)
+ static Arguments* create(VM& vm, CallFrame* callFrame, InlineCallFrame* inlineCallFrame)
{
- Arguments* arguments = new (NotNull, allocateCell<Arguments>(globalData.heap)) Arguments(callFrame);
+ Arguments* arguments = new (NotNull, allocateCell<Arguments>(vm.heap)) Arguments(callFrame);
arguments->finishCreation(callFrame, inlineCallFrame);
return arguments;
}
@@ -62,7 +62,7 @@
Arguments(CallFrame*);
Arguments(CallFrame*, NoParametersType);
- void tearOffForInlineCallFrame(JSGlobalData& globalData, Register*, InlineCallFrame*);
+ void tearOffForInlineCallFrame(VM& vm, Register*, InlineCallFrame*);
public:
static const ClassInfo s_info;
@@ -84,9 +84,9 @@
bool isTornOff() const { return m_registerArray; }
void didTearOffActivation(ExecState*, JSActivation*);
- static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype)
+ static Structure* createStructure(VM& vm, JSGlobalObject* globalObject, JSValue prototype)
{
- return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), &s_info);
+ return Structure::create(vm, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), &s_info);
}
protected:
@@ -110,7 +110,7 @@
void createStrictModeCalleeIfNecessary(ExecState*);
bool isArgument(size_t);
- bool trySetArgument(JSGlobalData&, size_t argument, JSValue);
+ bool trySetArgument(VM&, size_t argument, JSValue);
JSValue tryGetArgument(size_t argument);
bool isDeletedArgument(size_t);
bool tryDeleteArgument(size_t);
@@ -148,12 +148,12 @@
}
inline Arguments::Arguments(CallFrame* callFrame)
- : JSDestructibleObject(callFrame->globalData(), callFrame->lexicalGlobalObject()->argumentsStructure())
+ : JSDestructibleObject(callFrame->vm(), callFrame->lexicalGlobalObject()->argumentsStructure())
{
}
inline Arguments::Arguments(CallFrame* callFrame, NoParametersType)
- : JSDestructibleObject(callFrame->globalData(), callFrame->lexicalGlobalObject()->argumentsStructure())
+ : JSDestructibleObject(callFrame->vm(), callFrame->lexicalGlobalObject()->argumentsStructure())
{
}
@@ -177,11 +177,11 @@
return true;
}
-inline bool Arguments::trySetArgument(JSGlobalData& globalData, size_t argument, JSValue value)
+inline bool Arguments::trySetArgument(VM& vm, size_t argument, JSValue value)
{
if (!isArgument(argument))
return false;
- this->argument(argument).set(globalData, this, value);
+ this->argument(argument).set(vm, this, value);
return true;
}
@@ -227,13 +227,13 @@
inline void Arguments::finishCreation(CallFrame* callFrame)
{
- Base::finishCreation(callFrame->globalData());
+ Base::finishCreation(callFrame->vm());
ASSERT(inherits(&s_info));
JSFunction* callee = jsCast<JSFunction*>(callFrame->callee());
m_numArguments = callFrame->argumentCount();
m_registers = reinterpret_cast<WriteBarrierBase<Unknown>*>(callFrame->registers());
- m_callee.set(callFrame->globalData(), this, callee);
+ m_callee.set(callFrame->vm(), this, callee);
m_overrodeLength = false;
m_overrodeCallee = false;
m_overrodeCaller = false;
@@ -256,13 +256,13 @@
inline void Arguments::finishCreation(CallFrame* callFrame, InlineCallFrame* inlineCallFrame)
{
- Base::finishCreation(callFrame->globalData());
+ Base::finishCreation(callFrame->vm());
ASSERT(inherits(&s_info));
JSFunction* callee = inlineCallFrame->calleeForCallFrame(callFrame);
m_numArguments = inlineCallFrame->arguments.size() - 1;
m_registers = reinterpret_cast<WriteBarrierBase<Unknown>*>(callFrame->registers()) + inlineCallFrame->stackOffset;
- m_callee.set(callFrame->globalData(), this, callee);
+ m_callee.set(callFrame->vm(), this, callee);
m_overrodeLength = false;
m_overrodeCallee = false;
m_overrodeCaller = false;
diff --git a/Source/JavaScriptCore/runtime/ArrayConstructor.cpp b/Source/JavaScriptCore/runtime/ArrayConstructor.cpp
index 9aa8c1a..7520557 100644
--- a/Source/JavaScriptCore/runtime/ArrayConstructor.cpp
+++ b/Source/JavaScriptCore/runtime/ArrayConstructor.cpp
@@ -61,9 +61,9 @@
void ArrayConstructor::finishCreation(ExecState* exec, ArrayPrototype* arrayPrototype)
{
- Base::finishCreation(exec->globalData(), arrayPrototype->classInfo()->className);
- putDirectWithoutTransition(exec->globalData(), exec->propertyNames().prototype, arrayPrototype, DontEnum | DontDelete | ReadOnly);
- putDirectWithoutTransition(exec->globalData(), exec->propertyNames().length, jsNumber(1), ReadOnly | DontEnum | DontDelete);
+ Base::finishCreation(exec->vm(), arrayPrototype->classInfo()->className);
+ putDirectWithoutTransition(exec->vm(), exec->propertyNames().prototype, arrayPrototype, DontEnum | DontDelete | ReadOnly);
+ putDirectWithoutTransition(exec->vm(), exec->propertyNames().length, jsNumber(1), ReadOnly | DontEnum | DontDelete);
}
bool ArrayConstructor::getOwnPropertySlot(JSCell* cell, ExecState* exec, PropertyName propertyName, PropertySlot &slot)
diff --git a/Source/JavaScriptCore/runtime/ArrayConstructor.h b/Source/JavaScriptCore/runtime/ArrayConstructor.h
index f9f35c4..727475b 100644
--- a/Source/JavaScriptCore/runtime/ArrayConstructor.h
+++ b/Source/JavaScriptCore/runtime/ArrayConstructor.h
@@ -42,9 +42,9 @@
static const ClassInfo s_info;
- static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype)
+ static Structure* createStructure(VM& vm, JSGlobalObject* globalObject, JSValue prototype)
{
- return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), &s_info);
+ return Structure::create(vm, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), &s_info);
}
protected:
diff --git a/Source/JavaScriptCore/runtime/ArrayPrototype.cpp b/Source/JavaScriptCore/runtime/ArrayPrototype.cpp
index 137bb18..a09ff8c 100644
--- a/Source/JavaScriptCore/runtime/ArrayPrototype.cpp
+++ b/Source/JavaScriptCore/runtime/ArrayPrototype.cpp
@@ -124,16 +124,16 @@
// ECMA 15.4.4
ArrayPrototype::ArrayPrototype(JSGlobalObject* globalObject, Structure* structure)
- : JSArray(globalObject->globalData(), structure, 0)
+ : JSArray(globalObject->vm(), structure, 0)
{
}
void ArrayPrototype::finishCreation(JSGlobalObject* globalObject)
{
- JSGlobalData& globalData = globalObject->globalData();
- Base::finishCreation(globalData);
+ VM& vm = globalObject->vm();
+ Base::finishCreation(vm);
ASSERT(inherits(&s_info));
- globalData.prototypeMap.addPrototype(this);
+ vm.prototypeMap.addPrototype(this);
}
bool ArrayPrototype::getOwnPropertySlot(JSCell* cell, ExecState* exec, PropertyName propertyName, PropertySlot& slot)
@@ -739,7 +739,7 @@
return performSlowSort(exec, thisObj, length, function, callData, callType) ? JSValue::encode(thisObj) : JSValue::encode(jsUndefined());
JSGlobalObject* globalObject = JSGlobalObject::create(
- exec->globalData(), JSGlobalObject::createStructure(exec->globalData(), jsNull()));
+ exec->vm(), JSGlobalObject::createStructure(exec->vm(), jsNull()));
JSArray* flatArray = constructEmptyArray(globalObject->globalExec(), 0);
if (exec->hadException())
return JSValue::encode(jsUndefined());
@@ -818,17 +818,17 @@
deleteCount = static_cast<unsigned>(deleteDouble);
}
- JSArray* resObj = JSArray::tryCreateUninitialized(exec->globalData(), exec->lexicalGlobalObject()->arrayStructureForIndexingTypeDuringAllocation(ArrayWithUndecided), deleteCount);
+ JSArray* resObj = JSArray::tryCreateUninitialized(exec->vm(), exec->lexicalGlobalObject()->arrayStructureForIndexingTypeDuringAllocation(ArrayWithUndecided), deleteCount);
if (!resObj)
return JSValue::encode(throwOutOfMemoryError(exec));
JSValue result = resObj;
- JSGlobalData& globalData = exec->globalData();
+ VM& vm = exec->vm();
for (unsigned k = 0; k < deleteCount; k++) {
JSValue v = getProperty(exec, thisObj, k + begin);
if (exec->hadException())
return JSValue::encode(jsUndefined());
- resObj->initializeIndex(globalData, k, v);
+ resObj->initializeIndex(vm, k, v);
}
unsigned additionalArgs = std::max<int>(exec->argumentCount() - 2, 0);
diff --git a/Source/JavaScriptCore/runtime/ArrayPrototype.h b/Source/JavaScriptCore/runtime/ArrayPrototype.h
index c23bcde..37ba6eb 100644
--- a/Source/JavaScriptCore/runtime/ArrayPrototype.h
+++ b/Source/JavaScriptCore/runtime/ArrayPrototype.h
@@ -40,9 +40,9 @@
static const ClassInfo s_info;
- static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype)
+ static Structure* createStructure(VM& vm, JSGlobalObject* globalObject, JSValue prototype)
{
- return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), &s_info, ArrayClass);
+ return Structure::create(vm, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), &s_info, ArrayClass);
}
protected:
diff --git a/Source/JavaScriptCore/runtime/BatchedTransitionOptimizer.h b/Source/JavaScriptCore/runtime/BatchedTransitionOptimizer.h
index 178bf3f..76def71 100644
--- a/Source/JavaScriptCore/runtime/BatchedTransitionOptimizer.h
+++ b/Source/JavaScriptCore/runtime/BatchedTransitionOptimizer.h
@@ -34,8 +34,8 @@
class BatchedTransitionOptimizer {
WTF_MAKE_NONCOPYABLE(BatchedTransitionOptimizer);
public:
- BatchedTransitionOptimizer(JSGlobalData& globalData, JSObject* object)
- : m_globalData(&globalData)
+ BatchedTransitionOptimizer(VM& vm, JSObject* object)
+ : m_vm(&vm)
, m_object(object)
{
}
@@ -43,11 +43,11 @@
~BatchedTransitionOptimizer()
{
if (m_object->structure()->isDictionary())
- m_object->flattenDictionaryObject(*m_globalData);
+ m_object->flattenDictionaryObject(*m_vm);
}
private:
- JSGlobalData* m_globalData;
+ VM* m_vm;
JSObject* m_object;
};
diff --git a/Source/JavaScriptCore/runtime/BooleanConstructor.cpp b/Source/JavaScriptCore/runtime/BooleanConstructor.cpp
index d638a92..453983b 100644
--- a/Source/JavaScriptCore/runtime/BooleanConstructor.cpp
+++ b/Source/JavaScriptCore/runtime/BooleanConstructor.cpp
@@ -38,18 +38,18 @@
void BooleanConstructor::finishCreation(ExecState* exec, BooleanPrototype* booleanPrototype)
{
- Base::finishCreation(exec->globalData(), booleanPrototype->classInfo()->className);
- putDirectWithoutTransition(exec->globalData(), exec->propertyNames().prototype, booleanPrototype, DontEnum | DontDelete | ReadOnly);
+ Base::finishCreation(exec->vm(), booleanPrototype->classInfo()->className);
+ putDirectWithoutTransition(exec->vm(), exec->propertyNames().prototype, booleanPrototype, DontEnum | DontDelete | ReadOnly);
// no. of arguments for constructor
- putDirectWithoutTransition(exec->globalData(), exec->propertyNames().length, jsNumber(1), ReadOnly | DontDelete | DontEnum);
+ putDirectWithoutTransition(exec->vm(), exec->propertyNames().length, jsNumber(1), ReadOnly | DontDelete | DontEnum);
}
// ECMA 15.6.2
JSObject* constructBoolean(ExecState* exec, const ArgList& args)
{
- BooleanObject* obj = BooleanObject::create(exec->globalData(), asInternalFunction(exec->callee())->globalObject()->booleanObjectStructure());
- obj->setInternalValue(exec->globalData(), jsBoolean(args.at(0).toBoolean(exec)));
+ BooleanObject* obj = BooleanObject::create(exec->vm(), asInternalFunction(exec->callee())->globalObject()->booleanObjectStructure());
+ obj->setInternalValue(exec->vm(), jsBoolean(args.at(0).toBoolean(exec)));
return obj;
}
@@ -79,8 +79,8 @@
JSObject* constructBooleanFromImmediateBoolean(ExecState* exec, JSGlobalObject* globalObject, JSValue immediateBooleanValue)
{
- BooleanObject* obj = BooleanObject::create(exec->globalData(), globalObject->booleanObjectStructure());
- obj->setInternalValue(exec->globalData(), immediateBooleanValue);
+ BooleanObject* obj = BooleanObject::create(exec->vm(), globalObject->booleanObjectStructure());
+ obj->setInternalValue(exec->vm(), immediateBooleanValue);
return obj;
}
diff --git a/Source/JavaScriptCore/runtime/BooleanConstructor.h b/Source/JavaScriptCore/runtime/BooleanConstructor.h
index f395374..760d5d3 100644
--- a/Source/JavaScriptCore/runtime/BooleanConstructor.h
+++ b/Source/JavaScriptCore/runtime/BooleanConstructor.h
@@ -40,9 +40,9 @@
static const ClassInfo s_info;
- static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype)
+ static Structure* createStructure(VM& vm, JSGlobalObject* globalObject, JSValue prototype)
{
- return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), &s_info);
+ return Structure::create(vm, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), &s_info);
}
protected:
diff --git a/Source/JavaScriptCore/runtime/BooleanObject.cpp b/Source/JavaScriptCore/runtime/BooleanObject.cpp
index 100047d..3f7f2f6 100644
--- a/Source/JavaScriptCore/runtime/BooleanObject.cpp
+++ b/Source/JavaScriptCore/runtime/BooleanObject.cpp
@@ -30,14 +30,14 @@
const ClassInfo BooleanObject::s_info = { "Boolean", &JSWrapperObject::s_info, 0, 0, CREATE_METHOD_TABLE(BooleanObject) };
-BooleanObject::BooleanObject(JSGlobalData& globalData, Structure* structure)
- : JSWrapperObject(globalData, structure)
+BooleanObject::BooleanObject(VM& vm, Structure* structure)
+ : JSWrapperObject(vm, structure)
{
}
-void BooleanObject::finishCreation(JSGlobalData& globalData)
+void BooleanObject::finishCreation(VM& vm)
{
- Base::finishCreation(globalData);
+ Base::finishCreation(vm);
ASSERT(inherits(&s_info));
}
diff --git a/Source/JavaScriptCore/runtime/BooleanObject.h b/Source/JavaScriptCore/runtime/BooleanObject.h
index b6fcccd..299f341 100644
--- a/Source/JavaScriptCore/runtime/BooleanObject.h
+++ b/Source/JavaScriptCore/runtime/BooleanObject.h
@@ -27,24 +27,24 @@
class BooleanObject : public JSWrapperObject {
protected:
- JS_EXPORT_PRIVATE BooleanObject(JSGlobalData&, Structure*);
- JS_EXPORT_PRIVATE void finishCreation(JSGlobalData&);
+ JS_EXPORT_PRIVATE BooleanObject(VM&, Structure*);
+ JS_EXPORT_PRIVATE void finishCreation(VM&);
public:
typedef JSWrapperObject Base;
- static BooleanObject* create(JSGlobalData& globalData, Structure* structure)
+ static BooleanObject* create(VM& vm, Structure* structure)
{
- BooleanObject* boolean = new (NotNull, allocateCell<BooleanObject>(globalData.heap)) BooleanObject(globalData, structure);
- boolean->finishCreation(globalData);
+ BooleanObject* boolean = new (NotNull, allocateCell<BooleanObject>(vm.heap)) BooleanObject(vm, structure);
+ boolean->finishCreation(vm);
return boolean;
}
static JS_EXPORTDATA const ClassInfo s_info;
- static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype)
+ static Structure* createStructure(VM& vm, JSGlobalObject* globalObject, JSValue prototype)
{
- return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), &s_info);
+ return Structure::create(vm, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), &s_info);
}
};
diff --git a/Source/JavaScriptCore/runtime/BooleanPrototype.cpp b/Source/JavaScriptCore/runtime/BooleanPrototype.cpp
index 5bf48a5..a5b8390 100644
--- a/Source/JavaScriptCore/runtime/BooleanPrototype.cpp
+++ b/Source/JavaScriptCore/runtime/BooleanPrototype.cpp
@@ -51,14 +51,14 @@
ASSERT_HAS_TRIVIAL_DESTRUCTOR(BooleanPrototype);
BooleanPrototype::BooleanPrototype(ExecState* exec, Structure* structure)
- : BooleanObject(exec->globalData(), structure)
+ : BooleanObject(exec->vm(), structure)
{
}
void BooleanPrototype::finishCreation(ExecState* exec, JSGlobalObject*)
{
- Base::finishCreation(exec->globalData());
- setInternalValue(exec->globalData(), jsBoolean(false));
+ Base::finishCreation(exec->vm());
+ setInternalValue(exec->vm(), jsBoolean(false));
ASSERT(inherits(&s_info));
}
@@ -77,22 +77,22 @@
EncodedJSValue JSC_HOST_CALL booleanProtoFuncToString(ExecState* exec)
{
- JSGlobalData* globalData = &exec->globalData();
+ VM* vm = &exec->vm();
JSValue thisValue = exec->hostThisValue();
if (thisValue == jsBoolean(false))
- return JSValue::encode(globalData->smallStrings.falseString());
+ return JSValue::encode(vm->smallStrings.falseString());
if (thisValue == jsBoolean(true))
- return JSValue::encode(globalData->smallStrings.trueString());
+ return JSValue::encode(vm->smallStrings.trueString());
if (!thisValue.inherits(&BooleanObject::s_info))
return throwVMTypeError(exec);
if (asBooleanObject(thisValue)->internalValue() == jsBoolean(false))
- return JSValue::encode(globalData->smallStrings.falseString());
+ return JSValue::encode(vm->smallStrings.falseString());
ASSERT(asBooleanObject(thisValue)->internalValue() == jsBoolean(true));
- return JSValue::encode(globalData->smallStrings.trueString());
+ return JSValue::encode(vm->smallStrings.trueString());
}
EncodedJSValue JSC_HOST_CALL booleanProtoFuncValueOf(ExecState* exec)
diff --git a/Source/JavaScriptCore/runtime/BooleanPrototype.h b/Source/JavaScriptCore/runtime/BooleanPrototype.h
index 05790a7..43b81cb 100644
--- a/Source/JavaScriptCore/runtime/BooleanPrototype.h
+++ b/Source/JavaScriptCore/runtime/BooleanPrototype.h
@@ -38,9 +38,9 @@
static const ClassInfo s_info;
- static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype)
+ static Structure* createStructure(VM& vm, JSGlobalObject* globalObject, JSValue prototype)
{
- return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), &s_info);
+ return Structure::create(vm, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), &s_info);
}
protected:
diff --git a/Source/JavaScriptCore/runtime/Butterfly.h b/Source/JavaScriptCore/runtime/Butterfly.h
index 953ebc5..eb6d82a 100644
--- a/Source/JavaScriptCore/runtime/Butterfly.h
+++ b/Source/JavaScriptCore/runtime/Butterfly.h
@@ -34,7 +34,7 @@
namespace JSC {
-class JSGlobalData;
+class VM;
class CopyVisitor;
struct ArrayStorage;
@@ -104,10 +104,10 @@
static ptrdiff_t offsetOfPublicLength() { return offsetOfIndexingHeader() + IndexingHeader::offsetOfPublicLength(); }
static ptrdiff_t offsetOfVectorLength() { return offsetOfIndexingHeader() + IndexingHeader::offsetOfVectorLength(); }
- static Butterfly* createUninitialized(JSGlobalData&, size_t preCapacity, size_t propertyCapacity, bool hasIndexingHeader, size_t indexingPayloadSizeInBytes);
+ static Butterfly* createUninitialized(VM&, size_t preCapacity, size_t propertyCapacity, bool hasIndexingHeader, size_t indexingPayloadSizeInBytes);
- static Butterfly* create(JSGlobalData&, size_t preCapacity, size_t propertyCapacity, bool hasIndexingHeader, const IndexingHeader&, size_t indexingPayloadSizeInBytes);
- static Butterfly* create(JSGlobalData&, Structure*);
+ static Butterfly* create(VM&, size_t preCapacity, size_t propertyCapacity, bool hasIndexingHeader, const IndexingHeader&, size_t indexingPayloadSizeInBytes);
+ static Butterfly* create(VM&, Structure*);
static Butterfly* createUninitializedDuringCollection(CopyVisitor&, size_t preCapacity, size_t propertyCapacity, bool hasIndexingHeader, size_t indexingPayloadSizeInBytes);
IndexingHeader* indexingHeader() { return IndexingHeader::from(this); }
@@ -147,20 +147,20 @@
void* base(size_t preCapacity, size_t propertyCapacity) { return propertyStorage() - propertyCapacity - preCapacity; }
void* base(Structure*);
- static Butterfly* createOrGrowArrayRight(Butterfly*, JSGlobalData&, Structure* oldStructure, size_t propertyCapacity, bool hadIndexingHeader, size_t oldIndexingPayloadSizeInBytes, size_t newIndexingPayloadSizeInBytes);
+ static Butterfly* createOrGrowArrayRight(Butterfly*, VM&, Structure* oldStructure, size_t propertyCapacity, bool hadIndexingHeader, size_t oldIndexingPayloadSizeInBytes, size_t newIndexingPayloadSizeInBytes);
// The butterfly reallocation methods perform the reallocation itself but do not change any
// of the meta-data to reflect that the reallocation occurred. Note that this set of
// methods is not exhaustive and is not intended to encapsulate all possible allocation
// modes of butterflies - there are code paths that allocate butterflies by calling
// directly into Heap::tryAllocateStorage.
- Butterfly* growPropertyStorage(JSGlobalData&, size_t preCapacity, size_t oldPropertyCapacity, bool hasIndexingHeader, size_t indexingPayloadSizeInBytes, size_t newPropertyCapacity);
- Butterfly* growPropertyStorage(JSGlobalData&, Structure* oldStructure, size_t oldPropertyCapacity, size_t newPropertyCapacity);
- Butterfly* growPropertyStorage(JSGlobalData&, Structure* oldStructure, size_t newPropertyCapacity);
- Butterfly* growArrayRight(JSGlobalData&, Structure* oldStructure, size_t propertyCapacity, bool hadIndexingHeader, size_t oldIndexingPayloadSizeInBytes, size_t newIndexingPayloadSizeInBytes); // Assumes that preCapacity is zero, and asserts as much.
- Butterfly* growArrayRight(JSGlobalData&, Structure*, size_t newIndexingPayloadSizeInBytes);
- Butterfly* resizeArray(JSGlobalData&, size_t propertyCapacity, bool oldHasIndexingHeader, size_t oldIndexingPayloadSizeInBytes, size_t newPreCapacity, bool newHasIndexingHeader, size_t newIndexingPayloadSizeInBytes);
- Butterfly* resizeArray(JSGlobalData&, Structure*, size_t newPreCapacity, size_t newIndexingPayloadSizeInBytes); // Assumes that you're not changing whether or not the object has an indexing header.
+ Butterfly* growPropertyStorage(VM&, size_t preCapacity, size_t oldPropertyCapacity, bool hasIndexingHeader, size_t indexingPayloadSizeInBytes, size_t newPropertyCapacity);
+ Butterfly* growPropertyStorage(VM&, Structure* oldStructure, size_t oldPropertyCapacity, size_t newPropertyCapacity);
+ Butterfly* growPropertyStorage(VM&, Structure* oldStructure, size_t newPropertyCapacity);
+ Butterfly* growArrayRight(VM&, Structure* oldStructure, size_t propertyCapacity, bool hadIndexingHeader, size_t oldIndexingPayloadSizeInBytes, size_t newIndexingPayloadSizeInBytes); // Assumes that preCapacity is zero, and asserts as much.
+ Butterfly* growArrayRight(VM&, Structure*, size_t newIndexingPayloadSizeInBytes);
+ Butterfly* resizeArray(VM&, size_t propertyCapacity, bool oldHasIndexingHeader, size_t oldIndexingPayloadSizeInBytes, size_t newPreCapacity, bool newHasIndexingHeader, size_t newIndexingPayloadSizeInBytes);
+ Butterfly* resizeArray(VM&, Structure*, size_t newPreCapacity, size_t newIndexingPayloadSizeInBytes); // Assumes that you're not changing whether or not the object has an indexing header.
Butterfly* unshift(Structure*, size_t numberOfSlots);
Butterfly* shift(Structure*, size_t numberOfSlots);
};
diff --git a/Source/JavaScriptCore/runtime/ButterflyInlines.h b/Source/JavaScriptCore/runtime/ButterflyInlines.h
index 6831030..a0e2af1 100644
--- a/Source/JavaScriptCore/runtime/ButterflyInlines.h
+++ b/Source/JavaScriptCore/runtime/ButterflyInlines.h
@@ -30,32 +30,32 @@
#include "Butterfly.h"
#include "CopiedSpaceInlines.h"
#include "CopyVisitor.h"
-#include "JSGlobalData.h"
+#include "VM.h"
#include "Structure.h"
namespace JSC {
-inline Butterfly* Butterfly::createUninitialized(JSGlobalData& globalData, size_t preCapacity, size_t propertyCapacity, bool hasIndexingHeader, size_t indexingPayloadSizeInBytes)
+inline Butterfly* Butterfly::createUninitialized(VM& vm, size_t preCapacity, size_t propertyCapacity, bool hasIndexingHeader, size_t indexingPayloadSizeInBytes)
{
void* temp;
size_t size = totalSize(preCapacity, propertyCapacity, hasIndexingHeader, indexingPayloadSizeInBytes);
- RELEASE_ASSERT(globalData.heap.tryAllocateStorage(size, &temp));
+ RELEASE_ASSERT(vm.heap.tryAllocateStorage(size, &temp));
Butterfly* result = fromBase(temp, preCapacity, propertyCapacity);
return result;
}
-inline Butterfly* Butterfly::create(JSGlobalData& globalData, size_t preCapacity, size_t propertyCapacity, bool hasIndexingHeader, const IndexingHeader& indexingHeader, size_t indexingPayloadSizeInBytes)
+inline Butterfly* Butterfly::create(VM& vm, size_t preCapacity, size_t propertyCapacity, bool hasIndexingHeader, const IndexingHeader& indexingHeader, size_t indexingPayloadSizeInBytes)
{
Butterfly* result = createUninitialized(
- globalData, preCapacity, propertyCapacity, hasIndexingHeader, indexingPayloadSizeInBytes);
+ vm, preCapacity, propertyCapacity, hasIndexingHeader, indexingPayloadSizeInBytes);
if (hasIndexingHeader)
*result->indexingHeader() = indexingHeader;
return result;
}
-inline Butterfly* Butterfly::create(JSGlobalData& globalData, Structure* structure)
+inline Butterfly* Butterfly::create(VM& vm, Structure* structure)
{
- return create(globalData, 0, structure->outOfLineCapacity(), hasIndexingHeader(structure->indexingType()), IndexingHeader(), 0);
+ return create(vm, 0, structure->outOfLineCapacity(), hasIndexingHeader(structure->indexingType()), IndexingHeader(), 0);
}
inline Butterfly* Butterfly::createUninitializedDuringCollection(CopyVisitor& visitor, size_t preCapacity, size_t propertyCapacity, bool hasIndexingHeader, size_t indexingPayloadSizeInBytes)
@@ -72,11 +72,11 @@
return base(indexingHeader()->preCapacity(structure), structure->outOfLineCapacity());
}
-inline Butterfly* Butterfly::growPropertyStorage(JSGlobalData& globalData, size_t preCapacity, size_t oldPropertyCapacity, bool hasIndexingHeader, size_t indexingPayloadSizeInBytes, size_t newPropertyCapacity)
+inline Butterfly* Butterfly::growPropertyStorage(VM& vm, size_t preCapacity, size_t oldPropertyCapacity, bool hasIndexingHeader, size_t indexingPayloadSizeInBytes, size_t newPropertyCapacity)
{
RELEASE_ASSERT(newPropertyCapacity > oldPropertyCapacity);
Butterfly* result = createUninitialized(
- globalData, preCapacity, newPropertyCapacity, hasIndexingHeader, indexingPayloadSizeInBytes);
+ vm, preCapacity, newPropertyCapacity, hasIndexingHeader, indexingPayloadSizeInBytes);
memcpy(
result->propertyStorage() - oldPropertyCapacity,
propertyStorage() - oldPropertyCapacity,
@@ -84,51 +84,51 @@
return result;
}
-inline Butterfly* Butterfly::growPropertyStorage(JSGlobalData& globalData, Structure* structure, size_t oldPropertyCapacity, size_t newPropertyCapacity)
+inline Butterfly* Butterfly::growPropertyStorage(VM& vm, Structure* structure, size_t oldPropertyCapacity, size_t newPropertyCapacity)
{
return growPropertyStorage(
- globalData, indexingHeader()->preCapacity(structure), oldPropertyCapacity,
+ vm, indexingHeader()->preCapacity(structure), oldPropertyCapacity,
hasIndexingHeader(structure->indexingType()),
indexingHeader()->indexingPayloadSizeInBytes(structure), newPropertyCapacity);
}
-inline Butterfly* Butterfly::growPropertyStorage(JSGlobalData& globalData, Structure* oldStructure, size_t newPropertyCapacity)
+inline Butterfly* Butterfly::growPropertyStorage(VM& vm, Structure* oldStructure, size_t newPropertyCapacity)
{
return growPropertyStorage(
- globalData, oldStructure, oldStructure->outOfLineCapacity(), newPropertyCapacity);
+ vm, oldStructure, oldStructure->outOfLineCapacity(), newPropertyCapacity);
}
-inline Butterfly* Butterfly::createOrGrowArrayRight(Butterfly* oldButterfly, JSGlobalData& globalData, Structure* oldStructure, size_t propertyCapacity, bool hadIndexingHeader, size_t oldIndexingPayloadSizeInBytes, size_t newIndexingPayloadSizeInBytes)
+inline Butterfly* Butterfly::createOrGrowArrayRight(Butterfly* oldButterfly, VM& vm, Structure* oldStructure, size_t propertyCapacity, bool hadIndexingHeader, size_t oldIndexingPayloadSizeInBytes, size_t newIndexingPayloadSizeInBytes)
{
if (!oldButterfly)
- return create(globalData, 0, propertyCapacity, true, IndexingHeader(), newIndexingPayloadSizeInBytes);
- return oldButterfly->growArrayRight(globalData, oldStructure, propertyCapacity, hadIndexingHeader, oldIndexingPayloadSizeInBytes, newIndexingPayloadSizeInBytes);
+ return create(vm, 0, propertyCapacity, true, IndexingHeader(), newIndexingPayloadSizeInBytes);
+ return oldButterfly->growArrayRight(vm, oldStructure, propertyCapacity, hadIndexingHeader, oldIndexingPayloadSizeInBytes, newIndexingPayloadSizeInBytes);
}
-inline Butterfly* Butterfly::growArrayRight(JSGlobalData& globalData, Structure* oldStructure, size_t propertyCapacity, bool hadIndexingHeader, size_t oldIndexingPayloadSizeInBytes, size_t newIndexingPayloadSizeInBytes)
+inline Butterfly* Butterfly::growArrayRight(VM& vm, Structure* oldStructure, size_t propertyCapacity, bool hadIndexingHeader, size_t oldIndexingPayloadSizeInBytes, size_t newIndexingPayloadSizeInBytes)
{
ASSERT_UNUSED(oldStructure, !indexingHeader()->preCapacity(oldStructure));
ASSERT_UNUSED(oldStructure, hadIndexingHeader == hasIndexingHeader(oldStructure->indexingType()));
void* theBase = base(0, propertyCapacity);
size_t oldSize = totalSize(0, propertyCapacity, hadIndexingHeader, oldIndexingPayloadSizeInBytes);
size_t newSize = totalSize(0, propertyCapacity, true, newIndexingPayloadSizeInBytes);
- if (!globalData.heap.tryReallocateStorage(&theBase, oldSize, newSize))
+ if (!vm.heap.tryReallocateStorage(&theBase, oldSize, newSize))
return 0;
return fromBase(theBase, 0, propertyCapacity);
}
-inline Butterfly* Butterfly::growArrayRight(JSGlobalData& globalData, Structure* oldStructure, size_t newIndexingPayloadSizeInBytes)
+inline Butterfly* Butterfly::growArrayRight(VM& vm, Structure* oldStructure, size_t newIndexingPayloadSizeInBytes)
{
return growArrayRight(
- globalData, oldStructure, oldStructure->outOfLineCapacity(),
+ vm, oldStructure, oldStructure->outOfLineCapacity(),
hasIndexingHeader(oldStructure->indexingType()),
indexingHeader()->indexingPayloadSizeInBytes(oldStructure), newIndexingPayloadSizeInBytes);
}
-inline Butterfly* Butterfly::resizeArray(JSGlobalData& globalData, size_t propertyCapacity, bool oldHasIndexingHeader, size_t oldIndexingPayloadSizeInBytes, size_t newPreCapacity, bool newHasIndexingHeader, size_t newIndexingPayloadSizeInBytes)
+inline Butterfly* Butterfly::resizeArray(VM& vm, size_t propertyCapacity, bool oldHasIndexingHeader, size_t oldIndexingPayloadSizeInBytes, size_t newPreCapacity, bool newHasIndexingHeader, size_t newIndexingPayloadSizeInBytes)
{
Butterfly* result = createUninitialized(
- globalData, newPreCapacity, propertyCapacity, newHasIndexingHeader, newIndexingPayloadSizeInBytes);
+ vm, newPreCapacity, propertyCapacity, newHasIndexingHeader, newIndexingPayloadSizeInBytes);
// FIXME: This could be made much more efficient if we used the property size,
// not the capacity.
void* to = result->propertyStorage() - propertyCapacity;
@@ -140,11 +140,11 @@
return result;
}
-inline Butterfly* Butterfly::resizeArray(JSGlobalData& globalData, Structure* structure, size_t newPreCapacity, size_t newIndexingPayloadSizeInBytes)
+inline Butterfly* Butterfly::resizeArray(VM& vm, Structure* structure, size_t newPreCapacity, size_t newIndexingPayloadSizeInBytes)
{
bool hasIndexingHeader = JSC::hasIndexingHeader(structure->indexingType());
return resizeArray(
- globalData, structure->outOfLineCapacity(), hasIndexingHeader,
+ vm, structure->outOfLineCapacity(), hasIndexingHeader,
indexingHeader()->indexingPayloadSizeInBytes(structure), newPreCapacity,
hasIndexingHeader, newIndexingPayloadSizeInBytes);
}
diff --git a/Source/JavaScriptCore/runtime/CodeCache.cpp b/Source/JavaScriptCore/runtime/CodeCache.cpp
index a00b8f3..b87efd9 100644
--- a/Source/JavaScriptCore/runtime/CodeCache.cpp
+++ b/Source/JavaScriptCore/runtime/CodeCache.cpp
@@ -75,7 +75,7 @@
};
template <class UnlinkedCodeBlockType, class ExecutableType>
-UnlinkedCodeBlockType* CodeCache::getCodeBlock(JSGlobalData& globalData, JSScope* scope, ExecutableType* executable, const SourceCode& source, JSParserStrictness strictness, DebuggerMode debuggerMode, ProfilerMode profilerMode, ParserError& error)
+UnlinkedCodeBlockType* CodeCache::getCodeBlock(VM& vm, JSScope* scope, ExecutableType* executable, const SourceCode& source, JSParserStrictness strictness, DebuggerMode debuggerMode, ProfilerMode profilerMode, ParserError& error)
{
SourceCodeKey key = SourceCodeKey(source, String(), CacheTypes<UnlinkedCodeBlockType>::codeType, strictness);
CodeCacheMap::AddResult addResult = m_sourceCode.add(key, SourceCodeValue());
@@ -88,16 +88,16 @@
}
typedef typename CacheTypes<UnlinkedCodeBlockType>::RootNode RootNode;
- RefPtr<RootNode> rootNode = parse<RootNode>(&globalData, source, 0, Identifier(), strictness, JSParseProgramCode, error);
+ RefPtr<RootNode> rootNode = parse<RootNode>(&vm, source, 0, Identifier(), strictness, JSParseProgramCode, error);
if (!rootNode) {
m_sourceCode.remove(addResult.iterator);
return 0;
}
executable->recordParse(rootNode->features(), rootNode->hasCapturedVariables(), rootNode->lineNo(), rootNode->lastLine());
- UnlinkedCodeBlockType* unlinkedCode = UnlinkedCodeBlockType::create(&globalData, executable->executableInfo());
+ UnlinkedCodeBlockType* unlinkedCode = UnlinkedCodeBlockType::create(&vm, executable->executableInfo());
unlinkedCode->recordParse(rootNode->features(), rootNode->hasCapturedVariables(), rootNode->lineNo() - source.firstLine(), rootNode->lastLine() - rootNode->lineNo());
- OwnPtr<BytecodeGenerator> generator(adoptPtr(new BytecodeGenerator(globalData, scope, rootNode.get(), unlinkedCode, debuggerMode, profilerMode)));
+ OwnPtr<BytecodeGenerator> generator(adoptPtr(new BytecodeGenerator(vm, scope, rootNode.get(), unlinkedCode, debuggerMode, profilerMode)));
error = generator->generate();
rootNode->destroyData();
if (error.m_type != ParserError::ErrorNone) {
@@ -110,28 +110,28 @@
return unlinkedCode;
}
- addResult.iterator->value = SourceCodeValue(globalData, unlinkedCode, m_sourceCode.age());
+ addResult.iterator->value = SourceCodeValue(vm, unlinkedCode, m_sourceCode.age());
return unlinkedCode;
}
-UnlinkedProgramCodeBlock* CodeCache::getProgramCodeBlock(JSGlobalData& globalData, ProgramExecutable* executable, const SourceCode& source, JSParserStrictness strictness, DebuggerMode debuggerMode, ProfilerMode profilerMode, ParserError& error)
+UnlinkedProgramCodeBlock* CodeCache::getProgramCodeBlock(VM& vm, ProgramExecutable* executable, const SourceCode& source, JSParserStrictness strictness, DebuggerMode debuggerMode, ProfilerMode profilerMode, ParserError& error)
{
- return getCodeBlock<UnlinkedProgramCodeBlock>(globalData, 0, executable, source, strictness, debuggerMode, profilerMode, error);
+ return getCodeBlock<UnlinkedProgramCodeBlock>(vm, 0, executable, source, strictness, debuggerMode, profilerMode, error);
}
-UnlinkedEvalCodeBlock* CodeCache::getEvalCodeBlock(JSGlobalData& globalData, JSScope* scope, EvalExecutable* executable, const SourceCode& source, JSParserStrictness strictness, DebuggerMode debuggerMode, ProfilerMode profilerMode, ParserError& error)
+UnlinkedEvalCodeBlock* CodeCache::getEvalCodeBlock(VM& vm, JSScope* scope, EvalExecutable* executable, const SourceCode& source, JSParserStrictness strictness, DebuggerMode debuggerMode, ProfilerMode profilerMode, ParserError& error)
{
- return getCodeBlock<UnlinkedEvalCodeBlock>(globalData, scope, executable, source, strictness, debuggerMode, profilerMode, error);
+ return getCodeBlock<UnlinkedEvalCodeBlock>(vm, scope, executable, source, strictness, debuggerMode, profilerMode, error);
}
-UnlinkedFunctionExecutable* CodeCache::getFunctionExecutableFromGlobalCode(JSGlobalData& globalData, const Identifier& name, const SourceCode& source, ParserError& error)
+UnlinkedFunctionExecutable* CodeCache::getFunctionExecutableFromGlobalCode(VM& vm, const Identifier& name, const SourceCode& source, ParserError& error)
{
SourceCodeKey key = SourceCodeKey(source, name.string(), SourceCodeKey::FunctionType, JSParseNormal);
CodeCacheMap::AddResult addResult = m_sourceCode.add(key, SourceCodeValue());
if (!addResult.isNewEntry)
return jsCast<UnlinkedFunctionExecutable*>(addResult.iterator->value.cell.get());
- RefPtr<ProgramNode> program = parse<ProgramNode>(&globalData, source, 0, Identifier(), JSParseNormal, JSParseProgramCode, error);
+ RefPtr<ProgramNode> program = parse<ProgramNode>(&vm, source, 0, Identifier(), JSParseNormal, JSParseProgramCode, error);
if (!program) {
ASSERT(error.m_type != ParserError::ErrorNone);
m_sourceCode.remove(addResult.iterator);
@@ -149,10 +149,10 @@
ASSERT(body);
ASSERT(body->ident().isNull());
- UnlinkedFunctionExecutable* functionExecutable = UnlinkedFunctionExecutable::create(&globalData, source, body);
- functionExecutable->m_nameValue.set(globalData, functionExecutable, jsString(&globalData, name.string()));
+ UnlinkedFunctionExecutable* functionExecutable = UnlinkedFunctionExecutable::create(&vm, source, body);
+ functionExecutable->m_nameValue.set(vm, functionExecutable, jsString(&vm, name.string()));
- addResult.iterator->value = SourceCodeValue(globalData, functionExecutable, m_sourceCode.age());
+ addResult.iterator->value = SourceCodeValue(vm, functionExecutable, m_sourceCode.age());
return functionExecutable;
}
diff --git a/Source/JavaScriptCore/runtime/CodeCache.h b/Source/JavaScriptCore/runtime/CodeCache.h
index 1a535d0..f755927 100644
--- a/Source/JavaScriptCore/runtime/CodeCache.h
+++ b/Source/JavaScriptCore/runtime/CodeCache.h
@@ -50,7 +50,7 @@
class UnlinkedFunctionCodeBlock;
class UnlinkedFunctionExecutable;
class UnlinkedProgramCodeBlock;
-class JSGlobalData;
+class VM;
struct ParserError;
class SourceCode;
class SourceProvider;
@@ -120,8 +120,8 @@
{
}
- SourceCodeValue(JSGlobalData& globalData, JSCell* cell, int64_t age)
- : cell(globalData, cell)
+ SourceCodeValue(VM& vm, JSCell* cell, int64_t age)
+ : cell(vm, cell)
, age(age)
{
}
@@ -239,9 +239,9 @@
public:
static PassOwnPtr<CodeCache> create() { return adoptPtr(new CodeCache); }
- UnlinkedProgramCodeBlock* getProgramCodeBlock(JSGlobalData&, ProgramExecutable*, const SourceCode&, JSParserStrictness, DebuggerMode, ProfilerMode, ParserError&);
- UnlinkedEvalCodeBlock* getEvalCodeBlock(JSGlobalData&, JSScope*, EvalExecutable*, const SourceCode&, JSParserStrictness, DebuggerMode, ProfilerMode, ParserError&);
- UnlinkedFunctionExecutable* getFunctionExecutableFromGlobalCode(JSGlobalData&, const Identifier&, const SourceCode&, ParserError&);
+ UnlinkedProgramCodeBlock* getProgramCodeBlock(VM&, ProgramExecutable*, const SourceCode&, JSParserStrictness, DebuggerMode, ProfilerMode, ParserError&);
+ UnlinkedEvalCodeBlock* getEvalCodeBlock(VM&, JSScope*, EvalExecutable*, const SourceCode&, JSParserStrictness, DebuggerMode, ProfilerMode, ParserError&);
+ UnlinkedFunctionExecutable* getFunctionExecutableFromGlobalCode(VM&, const Identifier&, const SourceCode&, ParserError&);
~CodeCache();
void clear()
@@ -253,7 +253,7 @@
CodeCache();
template <class UnlinkedCodeBlockType, class ExecutableType>
- UnlinkedCodeBlockType* getCodeBlock(JSGlobalData&, JSScope*, ExecutableType*, const SourceCode&, JSParserStrictness, DebuggerMode, ProfilerMode, ParserError&);
+ UnlinkedCodeBlockType* getCodeBlock(VM&, JSScope*, ExecutableType*, const SourceCode&, JSParserStrictness, DebuggerMode, ProfilerMode, ParserError&);
CodeCacheMap m_sourceCode;
};
diff --git a/Source/JavaScriptCore/runtime/CommonIdentifiers.cpp b/Source/JavaScriptCore/runtime/CommonIdentifiers.cpp
index e929d7a..e19df1c 100644
--- a/Source/JavaScriptCore/runtime/CommonIdentifiers.cpp
+++ b/Source/JavaScriptCore/runtime/CommonIdentifiers.cpp
@@ -23,15 +23,15 @@
namespace JSC {
-#define INITIALIZE_PROPERTY_NAME(name) , name(globalData, #name)
-#define INITIALIZE_KEYWORD(name) , name##Keyword(globalData, #name)
+#define INITIALIZE_PROPERTY_NAME(name) , name(vm, #name)
+#define INITIALIZE_KEYWORD(name) , name##Keyword(vm, #name)
-CommonIdentifiers::CommonIdentifiers(JSGlobalData* globalData)
+CommonIdentifiers::CommonIdentifiers(VM* vm)
: nullIdentifier()
, emptyIdentifier(Identifier::EmptyIdentifier)
- , underscoreProto(globalData, "__proto__")
- , thisIdentifier(globalData, "this")
- , useStrictIdentifier(globalData, "use strict")
+ , underscoreProto(vm, "__proto__")
+ , thisIdentifier(vm, "this")
+ , useStrictIdentifier(vm, "use strict")
JSC_COMMON_IDENTIFIERS_EACH_KEYWORD(INITIALIZE_KEYWORD)
JSC_COMMON_IDENTIFIERS_EACH_PROPERTY_NAME(INITIALIZE_PROPERTY_NAME)
{
diff --git a/Source/JavaScriptCore/runtime/CommonIdentifiers.h b/Source/JavaScriptCore/runtime/CommonIdentifiers.h
index baa5746..9757d94 100644
--- a/Source/JavaScriptCore/runtime/CommonIdentifiers.h
+++ b/Source/JavaScriptCore/runtime/CommonIdentifiers.h
@@ -161,8 +161,8 @@
class CommonIdentifiers {
WTF_MAKE_NONCOPYABLE(CommonIdentifiers); WTF_MAKE_FAST_ALLOCATED;
private:
- CommonIdentifiers(JSGlobalData*);
- friend class JSGlobalData;
+ CommonIdentifiers(VM*);
+ friend class VM;
public:
const Identifier nullIdentifier;
diff --git a/Source/JavaScriptCore/runtime/CommonSlowPaths.h b/Source/JavaScriptCore/runtime/CommonSlowPaths.h
index 2f51594..12e3805 100644
--- a/Source/JavaScriptCore/runtime/CommonSlowPaths.h
+++ b/Source/JavaScriptCore/runtime/CommonSlowPaths.h
@@ -78,7 +78,7 @@
inline bool opIn(ExecState* exec, JSValue propName, JSValue baseVal)
{
if (!baseVal.isObject()) {
- exec->globalData().exception = createInvalidParamError(exec, "in", baseVal);
+ exec->vm().exception = createInvalidParamError(exec, "in", baseVal);
return false;
}
@@ -92,7 +92,7 @@
return baseObj->hasProperty(exec, jsCast<NameInstance*>(propName.asCell())->privateName());
Identifier property(exec, propName.toString(exec)->value(exec));
- if (exec->globalData().exception)
+ if (exec->vm().exception)
return false;
return baseObj->hasProperty(exec, property);
}
diff --git a/Source/JavaScriptCore/runtime/Completion.cpp b/Source/JavaScriptCore/runtime/Completion.cpp
index ebac012..2f0a96a 100644
--- a/Source/JavaScriptCore/runtime/Completion.cpp
+++ b/Source/JavaScriptCore/runtime/Completion.cpp
@@ -39,7 +39,7 @@
bool checkSyntax(ExecState* exec, const SourceCode& source, JSValue* returnedException)
{
JSLockHolder lock(exec);
- RELEASE_ASSERT(exec->globalData().identifierTable == wtfThreadData().currentIdentifierTable());
+ RELEASE_ASSERT(exec->vm().identifierTable == wtfThreadData().currentIdentifierTable());
ProgramExecutable* program = ProgramExecutable::create(exec, source);
JSObject* error = program->checkSyntax(exec);
@@ -55,17 +55,17 @@
JSValue evaluate(ExecState* exec, const SourceCode& source, JSValue thisValue, JSValue* returnedException)
{
JSLockHolder lock(exec);
- RELEASE_ASSERT(exec->globalData().identifierTable == wtfThreadData().currentIdentifierTable());
- RELEASE_ASSERT(!exec->globalData().isCollectorBusy());
+ RELEASE_ASSERT(exec->vm().identifierTable == wtfThreadData().currentIdentifierTable());
+ RELEASE_ASSERT(!exec->vm().isCollectorBusy());
CodeProfiling profile(source);
ProgramExecutable* program = ProgramExecutable::create(exec, source);
if (!program) {
if (returnedException)
- *returnedException = exec->globalData().exception;
+ *returnedException = exec->vm().exception;
- exec->globalData().exception = JSValue();
+ exec->vm().exception = JSValue();
return jsUndefined();
}
diff --git a/Source/JavaScriptCore/runtime/DateConstructor.cpp b/Source/JavaScriptCore/runtime/DateConstructor.cpp
index f7d7c46..b21a5d0 100644
--- a/Source/JavaScriptCore/runtime/DateConstructor.cpp
+++ b/Source/JavaScriptCore/runtime/DateConstructor.cpp
@@ -81,9 +81,9 @@
void DateConstructor::finishCreation(ExecState* exec, DatePrototype* datePrototype)
{
- Base::finishCreation(exec->globalData(), datePrototype->classInfo()->className);
- putDirectWithoutTransition(exec->globalData(), exec->propertyNames().prototype, datePrototype, DontEnum | DontDelete | ReadOnly);
- putDirectWithoutTransition(exec->globalData(), exec->propertyNames().length, jsNumber(7), ReadOnly | DontEnum | DontDelete);
+ Base::finishCreation(exec->vm(), datePrototype->classInfo()->className);
+ putDirectWithoutTransition(exec->vm(), exec->propertyNames().prototype, datePrototype, DontEnum | DontDelete | ReadOnly);
+ putDirectWithoutTransition(exec->vm(), exec->propertyNames().length, jsNumber(7), ReadOnly | DontEnum | DontDelete);
}
bool DateConstructor::getOwnPropertySlot(JSCell* cell, ExecState* exec, PropertyName propertyName, PropertySlot &slot)
diff --git a/Source/JavaScriptCore/runtime/DateConstructor.h b/Source/JavaScriptCore/runtime/DateConstructor.h
index f089e03..5a6200e 100644
--- a/Source/JavaScriptCore/runtime/DateConstructor.h
+++ b/Source/JavaScriptCore/runtime/DateConstructor.h
@@ -40,9 +40,9 @@
static const ClassInfo s_info;
- static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype)
+ static Structure* createStructure(VM& vm, JSGlobalObject* globalObject, JSValue prototype)
{
- return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), &s_info);
+ return Structure::create(vm, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), &s_info);
}
protected:
diff --git a/Source/JavaScriptCore/runtime/DateInstance.cpp b/Source/JavaScriptCore/runtime/DateInstance.cpp
index f129387..db7b846 100644
--- a/Source/JavaScriptCore/runtime/DateInstance.cpp
+++ b/Source/JavaScriptCore/runtime/DateInstance.cpp
@@ -35,22 +35,22 @@
const ClassInfo DateInstance::s_info = {"Date", &JSWrapperObject::s_info, 0, 0, CREATE_METHOD_TABLE(DateInstance)};
DateInstance::DateInstance(ExecState* exec, Structure* structure)
- : JSWrapperObject(exec->globalData(), structure)
+ : JSWrapperObject(exec->vm(), structure)
{
}
-void DateInstance::finishCreation(JSGlobalData& globalData)
+void DateInstance::finishCreation(VM& vm)
{
- Base::finishCreation(globalData);
+ Base::finishCreation(vm);
ASSERT(inherits(&s_info));
- setInternalValue(globalData, jsNaN());
+ setInternalValue(vm, jsNaN());
}
-void DateInstance::finishCreation(JSGlobalData& globalData, double time)
+void DateInstance::finishCreation(VM& vm, double time)
{
- Base::finishCreation(globalData);
+ Base::finishCreation(vm);
ASSERT(inherits(&s_info));
- setInternalValue(globalData, jsNumber(timeClip(time)));
+ setInternalValue(vm, jsNumber(timeClip(time)));
}
void DateInstance::destroy(JSCell* cell)
@@ -65,7 +65,7 @@
return 0;
if (!m_data)
- m_data = exec->globalData().dateInstanceCache.add(milli);
+ m_data = exec->vm().dateInstanceCache.add(milli);
if (m_data->m_gregorianDateTimeCachedForMS != milli) {
msToGregorianDateTime(exec, milli, false, m_data->m_cachedGregorianDateTime);
@@ -81,7 +81,7 @@
return 0;
if (!m_data)
- m_data = exec->globalData().dateInstanceCache.add(milli);
+ m_data = exec->vm().dateInstanceCache.add(milli);
if (m_data->m_gregorianDateTimeUTCCachedForMS != milli) {
msToGregorianDateTime(exec, milli, true, m_data->m_cachedGregorianDateTimeUTC);
diff --git a/Source/JavaScriptCore/runtime/DateInstance.h b/Source/JavaScriptCore/runtime/DateInstance.h
index 9742e68..8707772 100644
--- a/Source/JavaScriptCore/runtime/DateInstance.h
+++ b/Source/JavaScriptCore/runtime/DateInstance.h
@@ -28,8 +28,8 @@
class DateInstance : public JSWrapperObject {
protected:
JS_EXPORT_PRIVATE DateInstance(ExecState*, Structure*);
- void finishCreation(JSGlobalData&);
- JS_EXPORT_PRIVATE void finishCreation(JSGlobalData&, double);
+ void finishCreation(VM&);
+ JS_EXPORT_PRIVATE void finishCreation(VM&, double);
static void destroy(JSCell*);
@@ -39,14 +39,14 @@
static DateInstance* create(ExecState* exec, Structure* structure, double date)
{
DateInstance* instance = new (NotNull, allocateCell<DateInstance>(*exec->heap())) DateInstance(exec, structure);
- instance->finishCreation(exec->globalData(), date);
+ instance->finishCreation(exec->vm(), date);
return instance;
}
static DateInstance* create(ExecState* exec, Structure* structure)
{
DateInstance* instance = new (NotNull, allocateCell<DateInstance>(*exec->heap())) DateInstance(exec, structure);
- instance->finishCreation(exec->globalData());
+ instance->finishCreation(exec->vm());
return instance;
}
@@ -68,9 +68,9 @@
return calculateGregorianDateTimeUTC(exec);
}
- static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype)
+ static Structure* createStructure(VM& vm, JSGlobalObject* globalObject, JSValue prototype)
{
- return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), &s_info);
+ return Structure::create(vm, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), &s_info);
}
private:
diff --git a/Source/JavaScriptCore/runtime/DatePrototype.cpp b/Source/JavaScriptCore/runtime/DatePrototype.cpp
index d4c7c8e..528ce2a 100644
--- a/Source/JavaScriptCore/runtime/DatePrototype.cpp
+++ b/Source/JavaScriptCore/runtime/DatePrototype.cpp
@@ -509,7 +509,7 @@
void DatePrototype::finishCreation(ExecState* exec, JSGlobalObject*)
{
- Base::finishCreation(exec->globalData());
+ Base::finishCreation(exec->vm());
ASSERT(inherits(&s_info));
// The constructor will be added later, after DateConstructor has been built.
@@ -882,7 +882,7 @@
double milli = timeClip(exec->argument(0).toNumber(exec));
JSValue result = jsNumber(milli);
- thisDateObj->setInternalValue(exec->globalData(), result);
+ thisDateObj->setInternalValue(exec->vm(), result);
return JSValue::encode(result);
}
@@ -897,7 +897,7 @@
if (!exec->argumentCount() || std::isnan(milli)) {
JSValue result = jsNaN();
- thisDateObj->setInternalValue(exec->globalData(), result);
+ thisDateObj->setInternalValue(exec->vm(), result);
return JSValue::encode(result);
}
@@ -914,12 +914,12 @@
gregorianDateTime.copyFrom(*other);
if (!fillStructuresUsingTimeArgs(exec, numArgsToUse, &ms, &gregorianDateTime)) {
JSValue result = jsNaN();
- thisDateObj->setInternalValue(exec->globalData(), result);
+ thisDateObj->setInternalValue(exec->vm(), result);
return JSValue::encode(result);
}
JSValue result = jsNumber(gregorianDateTimeToMS(exec, gregorianDateTime, ms, inputIsUTC));
- thisDateObj->setInternalValue(exec->globalData(), result);
+ thisDateObj->setInternalValue(exec->vm(), result);
return JSValue::encode(result);
}
@@ -932,7 +932,7 @@
DateInstance* thisDateObj = asDateInstance(thisValue);
if (!exec->argumentCount()) {
JSValue result = jsNaN();
- thisDateObj->setInternalValue(exec->globalData(), result);
+ thisDateObj->setInternalValue(exec->vm(), result);
return JSValue::encode(result);
}
@@ -954,12 +954,12 @@
if (!fillStructuresUsingDateArgs(exec, numArgsToUse, &ms, &gregorianDateTime)) {
JSValue result = jsNaN();
- thisDateObj->setInternalValue(exec->globalData(), result);
+ thisDateObj->setInternalValue(exec->vm(), result);
return JSValue::encode(result);
}
JSValue result = jsNumber(gregorianDateTimeToMS(exec, gregorianDateTime, ms, inputIsUTC));
- thisDateObj->setInternalValue(exec->globalData(), result);
+ thisDateObj->setInternalValue(exec->vm(), result);
return JSValue::encode(result);
}
@@ -1056,7 +1056,7 @@
DateInstance* thisDateObj = asDateInstance(thisValue);
if (!exec->argumentCount()) {
JSValue result = jsNaN();
- thisDateObj->setInternalValue(exec->globalData(), result);
+ thisDateObj->setInternalValue(exec->vm(), result);
return JSValue::encode(result);
}
@@ -1078,13 +1078,13 @@
double year = exec->argument(0).toIntegerPreserveNaN(exec);
if (!std::isfinite(year)) {
JSValue result = jsNaN();
- thisDateObj->setInternalValue(exec->globalData(), result);
+ thisDateObj->setInternalValue(exec->vm(), result);
return JSValue::encode(result);
}
gregorianDateTime.setYear(toInt32((year >= 0 && year <= 99) ? (year + 1900) : year));
JSValue result = jsNumber(gregorianDateTimeToMS(exec, gregorianDateTime, ms, false));
- thisDateObj->setInternalValue(exec->globalData(), result);
+ thisDateObj->setInternalValue(exec->vm(), result);
return JSValue::encode(result);
}
@@ -1111,7 +1111,7 @@
if (exec->hadException())
return JSValue::encode(jsNull());
- JSValue toISOValue = object->get(exec, exec->globalData().propertyNames->toISOString);
+ JSValue toISOValue = object->get(exec, exec->vm().propertyNames->toISOString);
if (exec->hadException())
return JSValue::encode(jsNull());
diff --git a/Source/JavaScriptCore/runtime/DatePrototype.h b/Source/JavaScriptCore/runtime/DatePrototype.h
index c4f6d69..85f7d46 100644
--- a/Source/JavaScriptCore/runtime/DatePrototype.h
+++ b/Source/JavaScriptCore/runtime/DatePrototype.h
@@ -46,9 +46,9 @@
static const ClassInfo s_info;
- static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype)
+ static Structure* createStructure(VM& vm, JSGlobalObject* globalObject, JSValue prototype)
{
- return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), &s_info);
+ return Structure::create(vm, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), &s_info);
}
protected:
diff --git a/Source/JavaScriptCore/runtime/Error.cpp b/Source/JavaScriptCore/runtime/Error.cpp
index 7eb1010..9cbe20b 100644
--- a/Source/JavaScriptCore/runtime/Error.cpp
+++ b/Source/JavaScriptCore/runtime/Error.cpp
@@ -47,37 +47,37 @@
JSObject* createError(JSGlobalObject* globalObject, const String& message)
{
ASSERT(!message.isEmpty());
- return ErrorInstance::create(globalObject->globalData(), globalObject->errorStructure(), message);
+ return ErrorInstance::create(globalObject->vm(), globalObject->errorStructure(), message);
}
JSObject* createEvalError(JSGlobalObject* globalObject, const String& message)
{
ASSERT(!message.isEmpty());
- return ErrorInstance::create(globalObject->globalData(), globalObject->evalErrorConstructor()->errorStructure(), message);
+ return ErrorInstance::create(globalObject->vm(), globalObject->evalErrorConstructor()->errorStructure(), message);
}
JSObject* createRangeError(JSGlobalObject* globalObject, const String& message)
{
ASSERT(!message.isEmpty());
- return ErrorInstance::create(globalObject->globalData(), globalObject->rangeErrorConstructor()->errorStructure(), message);
+ return ErrorInstance::create(globalObject->vm(), globalObject->rangeErrorConstructor()->errorStructure(), message);
}
JSObject* createReferenceError(JSGlobalObject* globalObject, const String& message)
{
ASSERT(!message.isEmpty());
- return ErrorInstance::create(globalObject->globalData(), globalObject->referenceErrorConstructor()->errorStructure(), message);
+ return ErrorInstance::create(globalObject->vm(), globalObject->referenceErrorConstructor()->errorStructure(), message);
}
JSObject* createSyntaxError(JSGlobalObject* globalObject, const String& message)
{
ASSERT(!message.isEmpty());
- return ErrorInstance::create(globalObject->globalData(), globalObject->syntaxErrorConstructor()->errorStructure(), message);
+ return ErrorInstance::create(globalObject->vm(), globalObject->syntaxErrorConstructor()->errorStructure(), message);
}
JSObject* createTypeError(JSGlobalObject* globalObject, const String& message)
{
ASSERT(!message.isEmpty());
- return ErrorInstance::create(globalObject->globalData(), globalObject->typeErrorConstructor()->errorStructure(), message);
+ return ErrorInstance::create(globalObject->vm(), globalObject->typeErrorConstructor()->errorStructure(), message);
}
JSObject* createNotEnoughArgumentsError(JSGlobalObject* globalObject)
@@ -88,7 +88,7 @@
JSObject* createURIError(JSGlobalObject* globalObject, const String& message)
{
ASSERT(!message.isEmpty());
- return ErrorInstance::create(globalObject->globalData(), globalObject->URIErrorConstructor()->errorStructure(), message);
+ return ErrorInstance::create(globalObject->vm(), globalObject->URIErrorConstructor()->errorStructure(), message);
}
JSObject* createError(ExecState* exec, const String& message)
@@ -133,15 +133,15 @@
JSObject* addErrorInfo(CallFrame* callFrame, JSObject* error, int line, const SourceCode& source)
{
- JSGlobalData* globalData = &callFrame->globalData();
+ VM* vm = &callFrame->vm();
const String& sourceURL = source.provider()->url();
if (line != -1)
- error->putDirect(*globalData, Identifier(globalData, linePropertyName), jsNumber(line), ReadOnly | DontDelete);
+ error->putDirect(*vm, Identifier(vm, linePropertyName), jsNumber(line), ReadOnly | DontDelete);
if (!sourceURL.isNull())
- error->putDirect(*globalData, Identifier(globalData, sourceURLPropertyName), jsString(globalData, sourceURL), ReadOnly | DontDelete);
+ error->putDirect(*vm, Identifier(vm, sourceURLPropertyName), jsString(vm, sourceURL), ReadOnly | DontDelete);
- globalData->interpreter->addStackTraceIfNecessary(callFrame, error);
+ vm->interpreter->addStackTraceIfNecessary(callFrame, error);
return error;
}
@@ -156,14 +156,14 @@
JSValue throwError(ExecState* exec, JSValue error)
{
Interpreter::addStackTraceIfNecessary(exec, error);
- exec->globalData().exception = error;
+ exec->vm().exception = error;
return error;
}
JSObject* throwError(ExecState* exec, JSObject* error)
{
Interpreter::addStackTraceIfNecessary(exec, error);
- exec->globalData().exception = error;
+ exec->vm().exception = error;
return error;
}
diff --git a/Source/JavaScriptCore/runtime/Error.h b/Source/JavaScriptCore/runtime/Error.h
index 9c34a05..36e425d 100644
--- a/Source/JavaScriptCore/runtime/Error.h
+++ b/Source/JavaScriptCore/runtime/Error.h
@@ -31,7 +31,7 @@
namespace JSC {
class ExecState;
- class JSGlobalData;
+ class VM;
class JSGlobalObject;
class JSObject;
class SourceCode;
@@ -89,7 +89,7 @@
static StrictModeTypeErrorFunction* create(ExecState* exec, JSGlobalObject* globalObject, Structure* structure, const String& message)
{
StrictModeTypeErrorFunction* function = new (NotNull, allocateCell<StrictModeTypeErrorFunction>(*exec->heap())) StrictModeTypeErrorFunction(globalObject, structure, message);
- function->finishCreation(exec->globalData(), String());
+ function->finishCreation(exec->vm(), String());
return function;
}
@@ -119,9 +119,9 @@
static const ClassInfo s_info;
- static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype)
+ static Structure* createStructure(VM& vm, JSGlobalObject* globalObject, JSValue prototype)
{
- return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), &s_info);
+ return Structure::create(vm, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), &s_info);
}
private:
diff --git a/Source/JavaScriptCore/runtime/ErrorConstructor.cpp b/Source/JavaScriptCore/runtime/ErrorConstructor.cpp
index 0023196..b143f5a 100644
--- a/Source/JavaScriptCore/runtime/ErrorConstructor.cpp
+++ b/Source/JavaScriptCore/runtime/ErrorConstructor.cpp
@@ -39,10 +39,10 @@
void ErrorConstructor::finishCreation(ExecState* exec, ErrorPrototype* errorPrototype)
{
- Base::finishCreation(exec->globalData(), errorPrototype->classInfo()->className);
+ Base::finishCreation(exec->vm(), errorPrototype->classInfo()->className);
// ECMA 15.11.3.1 Error.prototype
- putDirectWithoutTransition(exec->globalData(), exec->propertyNames().prototype, errorPrototype, DontEnum | DontDelete | ReadOnly);
- putDirectWithoutTransition(exec->globalData(), exec->propertyNames().length, jsNumber(1), DontDelete | ReadOnly | DontEnum);
+ putDirectWithoutTransition(exec->vm(), exec->propertyNames().prototype, errorPrototype, DontEnum | DontDelete | ReadOnly);
+ putDirectWithoutTransition(exec->vm(), exec->propertyNames().length, jsNumber(1), DontDelete | ReadOnly | DontEnum);
}
// ECMA 15.9.3
diff --git a/Source/JavaScriptCore/runtime/ErrorConstructor.h b/Source/JavaScriptCore/runtime/ErrorConstructor.h
index 58399a9..b8e3b84 100644
--- a/Source/JavaScriptCore/runtime/ErrorConstructor.h
+++ b/Source/JavaScriptCore/runtime/ErrorConstructor.h
@@ -41,9 +41,9 @@
static const ClassInfo s_info;
- static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype)
+ static Structure* createStructure(VM& vm, JSGlobalObject* globalObject, JSValue prototype)
{
- return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), &s_info);
+ return Structure::create(vm, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), &s_info);
}
protected:
diff --git a/Source/JavaScriptCore/runtime/ErrorInstance.cpp b/Source/JavaScriptCore/runtime/ErrorInstance.cpp
index f2f1d58..e8f7ac1 100644
--- a/Source/JavaScriptCore/runtime/ErrorInstance.cpp
+++ b/Source/JavaScriptCore/runtime/ErrorInstance.cpp
@@ -30,8 +30,8 @@
const ClassInfo ErrorInstance::s_info = { "Error", &JSNonFinalObject::s_info, 0, 0, CREATE_METHOD_TABLE(ErrorInstance) };
-ErrorInstance::ErrorInstance(JSGlobalData& globalData, Structure* structure)
- : JSNonFinalObject(globalData, structure)
+ErrorInstance::ErrorInstance(VM& vm, Structure* structure)
+ : JSNonFinalObject(vm, structure)
, m_appendSourceToMessage(false)
{
}
diff --git a/Source/JavaScriptCore/runtime/ErrorInstance.h b/Source/JavaScriptCore/runtime/ErrorInstance.h
index 8946763..26a8b31 100644
--- a/Source/JavaScriptCore/runtime/ErrorInstance.h
+++ b/Source/JavaScriptCore/runtime/ErrorInstance.h
@@ -31,21 +31,21 @@
static const ClassInfo s_info;
- static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype)
+ static Structure* createStructure(VM& vm, JSGlobalObject* globalObject, JSValue prototype)
{
- return Structure::create(globalData, globalObject, prototype, TypeInfo(ErrorInstanceType, StructureFlags), &s_info);
+ return Structure::create(vm, globalObject, prototype, TypeInfo(ErrorInstanceType, StructureFlags), &s_info);
}
- static ErrorInstance* create(JSGlobalData& globalData, Structure* structure, const String& message)
+ static ErrorInstance* create(VM& vm, Structure* structure, const String& message)
{
- ErrorInstance* instance = new (NotNull, allocateCell<ErrorInstance>(globalData.heap)) ErrorInstance(globalData, structure);
- instance->finishCreation(globalData, message);
+ ErrorInstance* instance = new (NotNull, allocateCell<ErrorInstance>(vm.heap)) ErrorInstance(vm, structure);
+ instance->finishCreation(vm, message);
return instance;
}
static ErrorInstance* create(ExecState* exec, Structure* structure, JSValue message)
{
- return create(exec->globalData(), structure, message.isUndefined() ? String() : message.toString(exec)->value(exec));
+ return create(exec->vm(), structure, message.isUndefined() ? String() : message.toString(exec)->value(exec));
}
bool appendSourceToMessage() { return m_appendSourceToMessage; }
@@ -53,14 +53,14 @@
void clearAppendSourceToMessage() { m_appendSourceToMessage = false; }
protected:
- explicit ErrorInstance(JSGlobalData&, Structure*);
+ explicit ErrorInstance(VM&, Structure*);
- void finishCreation(JSGlobalData& globalData, const String& message)
+ void finishCreation(VM& vm, const String& message)
{
- Base::finishCreation(globalData);
+ Base::finishCreation(vm);
ASSERT(inherits(&s_info));
if (!message.isNull())
- putDirect(globalData, globalData.propertyNames->message, jsString(&globalData, message), DontEnum);
+ putDirect(vm, vm.propertyNames->message, jsString(&vm, message), DontEnum);
}
bool m_appendSourceToMessage;
diff --git a/Source/JavaScriptCore/runtime/ErrorPrototype.cpp b/Source/JavaScriptCore/runtime/ErrorPrototype.cpp
index 62a4d8c..bab3a74 100644
--- a/Source/JavaScriptCore/runtime/ErrorPrototype.cpp
+++ b/Source/JavaScriptCore/runtime/ErrorPrototype.cpp
@@ -50,15 +50,15 @@
*/
ErrorPrototype::ErrorPrototype(ExecState* exec, Structure* structure)
- : ErrorInstance(exec->globalData(), structure)
+ : ErrorInstance(exec->vm(), structure)
{
}
void ErrorPrototype::finishCreation(ExecState* exec, JSGlobalObject*)
{
- Base::finishCreation(exec->globalData(), "");
+ Base::finishCreation(exec->vm(), "");
ASSERT(inherits(&s_info));
- putDirect(exec->globalData(), exec->propertyNames().name, jsNontrivialString(exec, String(ASCIILiteral("Error"))), DontEnum);
+ putDirect(exec->vm(), exec->propertyNames().name, jsNontrivialString(exec, String(ASCIILiteral("Error"))), DontEnum);
}
bool ErrorPrototype::getOwnPropertySlot(JSCell* cell, ExecState* exec, PropertyName propertyName, PropertySlot &slot)
diff --git a/Source/JavaScriptCore/runtime/ErrorPrototype.h b/Source/JavaScriptCore/runtime/ErrorPrototype.h
index e961946..9401b22 100644
--- a/Source/JavaScriptCore/runtime/ErrorPrototype.h
+++ b/Source/JavaScriptCore/runtime/ErrorPrototype.h
@@ -40,9 +40,9 @@
static const ClassInfo s_info;
- static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype)
+ static Structure* createStructure(VM& vm, JSGlobalObject* globalObject, JSValue prototype)
{
- return Structure::create(globalData, globalObject, prototype, TypeInfo(ErrorInstanceType, StructureFlags), &s_info);
+ return Structure::create(vm, globalObject, prototype, TypeInfo(ErrorInstanceType, StructureFlags), &s_info);
}
protected:
diff --git a/Source/JavaScriptCore/runtime/ExceptionHelpers.cpp b/Source/JavaScriptCore/runtime/ExceptionHelpers.cpp
index 4e945c0..816e8e3 100644
--- a/Source/JavaScriptCore/runtime/ExceptionHelpers.cpp
+++ b/Source/JavaScriptCore/runtime/ExceptionHelpers.cpp
@@ -52,9 +52,9 @@
return JSValue(QNaN);
}
-JSObject* createTerminatedExecutionException(JSGlobalData* globalData)
+JSObject* createTerminatedExecutionException(VM* vm)
{
- return TerminatedExecutionError::create(*globalData);
+ return TerminatedExecutionError::create(*vm);
}
bool isTerminatedExecutionException(JSObject* object)
@@ -144,7 +144,7 @@
JSObject* throwTerminatedExecutionException(ExecState* exec)
{
Interpreter::ErrorHandlingMode mode(exec);
- return throwError(exec, createTerminatedExecutionException(&exec->globalData()));
+ return throwError(exec, createTerminatedExecutionException(&exec->vm()));
}
} // namespace JSC
diff --git a/Source/JavaScriptCore/runtime/ExceptionHelpers.h b/Source/JavaScriptCore/runtime/ExceptionHelpers.h
index 14aa3b4..72a563d 100644
--- a/Source/JavaScriptCore/runtime/ExceptionHelpers.h
+++ b/Source/JavaScriptCore/runtime/ExceptionHelpers.h
@@ -33,7 +33,7 @@
namespace JSC {
-JSObject* createTerminatedExecutionException(JSGlobalData*);
+JSObject* createTerminatedExecutionException(VM*);
bool isTerminatedExecutionException(JSObject*);
JS_EXPORT_PRIVATE bool isTerminatedExecutionException(JSValue);
@@ -54,8 +54,8 @@
class TerminatedExecutionError : public JSNonFinalObject {
private:
- TerminatedExecutionError(JSGlobalData& globalData)
- : JSNonFinalObject(globalData, globalData.terminatedExecutionErrorStructure.get())
+ TerminatedExecutionError(VM& vm)
+ : JSNonFinalObject(vm, vm.terminatedExecutionErrorStructure.get())
{
}
@@ -64,16 +64,16 @@
public:
typedef JSNonFinalObject Base;
- static TerminatedExecutionError* create(JSGlobalData& globalData)
+ static TerminatedExecutionError* create(VM& vm)
{
- TerminatedExecutionError* error = new (NotNull, allocateCell<TerminatedExecutionError>(globalData.heap)) TerminatedExecutionError(globalData);
- error->finishCreation(globalData);
+ TerminatedExecutionError* error = new (NotNull, allocateCell<TerminatedExecutionError>(vm.heap)) TerminatedExecutionError(vm);
+ error->finishCreation(vm);
return error;
}
- static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype)
+ static Structure* createStructure(VM& vm, JSGlobalObject* globalObject, JSValue prototype)
{
- return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), &s_info);
+ return Structure::create(vm, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), &s_info);
}
static JS_EXPORTDATA const ClassInfo s_info;
diff --git a/Source/JavaScriptCore/runtime/Executable.cpp b/Source/JavaScriptCore/runtime/Executable.cpp
index 057bb43..3b07416 100644
--- a/Source/JavaScriptCore/runtime/Executable.cpp
+++ b/Source/JavaScriptCore/runtime/Executable.cpp
@@ -94,14 +94,14 @@
#if ENABLE(JIT)
// Utility method used for jettisoning code blocks.
template<typename T>
-static void jettisonCodeBlock(JSGlobalData& globalData, OwnPtr<T>& codeBlock)
+static void jettisonCodeBlock(VM& vm, OwnPtr<T>& codeBlock)
{
ASSERT(JITCode::isOptimizingJIT(codeBlock->getJITType()));
ASSERT(codeBlock->alternative());
OwnPtr<T> codeBlockToJettison = codeBlock.release();
codeBlock = static_pointer_cast<T>(codeBlockToJettison->releaseAlternative());
codeBlockToJettison->unlinkIncomingCalls();
- globalData.heap.jettisonDFGCodeBlock(static_pointer_cast<CodeBlock>(codeBlockToJettison.release()));
+ vm.heap.jettisonDFGCodeBlock(static_pointer_cast<CodeBlock>(codeBlockToJettison.release()));
}
#endif
@@ -117,7 +117,7 @@
const ClassInfo EvalExecutable::s_info = { "EvalExecutable", &ScriptExecutable::s_info, 0, 0, CREATE_METHOD_TABLE(EvalExecutable) };
EvalExecutable::EvalExecutable(ExecState* exec, const SourceCode& source, bool inStrictContext)
- : ScriptExecutable(exec->globalData().evalExecutableStructure.get(), exec, source, inStrictContext)
+ : ScriptExecutable(exec->vm().evalExecutableStructure.get(), exec, source, inStrictContext)
{
}
@@ -129,7 +129,7 @@
const ClassInfo ProgramExecutable::s_info = { "ProgramExecutable", &ScriptExecutable::s_info, 0, 0, CREATE_METHOD_TABLE(ProgramExecutable) };
ProgramExecutable::ProgramExecutable(ExecState* exec, const SourceCode& source)
- : ScriptExecutable(exec->globalData().programExecutableStructure.get(), exec, source, false)
+ : ScriptExecutable(exec->vm().programExecutableStructure.get(), exec, source, false)
{
}
@@ -140,9 +140,9 @@
const ClassInfo FunctionExecutable::s_info = { "FunctionExecutable", &ScriptExecutable::s_info, 0, 0, CREATE_METHOD_TABLE(FunctionExecutable) };
-FunctionExecutable::FunctionExecutable(JSGlobalData& globalData, const SourceCode& source, UnlinkedFunctionExecutable* unlinkedExecutable, unsigned firstLine, unsigned lastLine)
- : ScriptExecutable(globalData.functionExecutableStructure.get(), globalData, source, unlinkedExecutable->isInStrictContext())
- , m_unlinkedExecutable(globalData, this, unlinkedExecutable)
+FunctionExecutable::FunctionExecutable(VM& vm, const SourceCode& source, UnlinkedFunctionExecutable* unlinkedExecutable, unsigned firstLine, unsigned lastLine)
+ : ScriptExecutable(vm.functionExecutableStructure.get(), vm, source, unlinkedExecutable->isInStrictContext())
+ , m_unlinkedExecutable(vm, this, unlinkedExecutable)
{
RELEASE_ASSERT(!source.isNull());
ASSERT(source.length());
@@ -157,7 +157,7 @@
JSObject* EvalExecutable::compileOptimized(ExecState* exec, JSScope* scope, unsigned bytecodeIndex)
{
- ASSERT(exec->globalData().dynamicGlobalObject);
+ ASSERT(exec->vm().dynamicGlobalObject);
ASSERT(!!m_evalCodeBlock);
JSObject* error = 0;
if (m_evalCodeBlock->getJITType() != JITCode::topTierJIT())
@@ -196,7 +196,7 @@
UNUSED_PARAM(jitType);
UNUSED_PARAM(bytecodeIndex);
#endif
- JSGlobalData* globalData = &exec->globalData();
+ VM* vm = &exec->vm();
JSGlobalObject* lexicalGlobalObject = exec->lexicalGlobalObject();
if (!!m_evalCodeBlock) {
@@ -205,7 +205,7 @@
m_evalCodeBlock = newCodeBlock.release();
} else {
UNUSED_PARAM(scope);
- UNUSED_PARAM(globalData);
+ UNUSED_PARAM(vm);
UNUSED_PARAM(lexicalGlobalObject);
if (!lexicalGlobalObject->evalEnabled())
return throwError(exec, createEvalError(exec, lexicalGlobalObject->evalDisabledErrorMessage()));
@@ -217,7 +217,7 @@
OwnPtr<CodeBlock> previousCodeBlock = m_evalCodeBlock.release();
ASSERT((jitType == JITCode::bottomTierJIT()) == !previousCodeBlock);
- m_unlinkedEvalCodeBlock.set(*globalData, this, unlinkedEvalCode);
+ m_unlinkedEvalCodeBlock.set(*vm, this, unlinkedEvalCode);
m_evalCodeBlock = adoptPtr(new EvalCodeBlock(this, unlinkedEvalCode, lexicalGlobalObject, source().provider(), scope->localDepth(), previousCodeBlock.release()));
m_evalCodeBlock->copyPostParseDataFromAlternative();
}
@@ -237,9 +237,9 @@
}
#if ENABLE(JIT)
-void EvalExecutable::jettisonOptimizedCode(JSGlobalData& globalData)
+void EvalExecutable::jettisonOptimizedCode(VM& vm)
{
- jettisonCodeBlock(globalData, m_evalCodeBlock);
+ jettisonCodeBlock(vm, m_evalCodeBlock);
m_jitCodeForCall = m_evalCodeBlock->getJITCode();
ASSERT(!m_jitCodeForCallWithArityCheck);
}
@@ -277,9 +277,9 @@
JSObject* ProgramExecutable::checkSyntax(ExecState* exec)
{
ParserError error;
- JSGlobalData* globalData = &exec->globalData();
+ VM* vm = &exec->vm();
JSGlobalObject* lexicalGlobalObject = exec->lexicalGlobalObject();
- RefPtr<ProgramNode> programNode = parse<ProgramNode>(globalData, m_source, 0, Identifier(), JSParseNormal, ProgramNode::isFunctionNode ? JSParseFunctionCode : JSParseProgramCode, error);
+ RefPtr<ProgramNode> programNode = parse<ProgramNode>(vm, m_source, 0, Identifier(), JSParseNormal, ProgramNode::isFunctionNode ? JSParseFunctionCode : JSParseProgramCode, error);
if (programNode)
return 0;
ASSERT(error.m_type != ParserError::ErrorNone);
@@ -288,7 +288,7 @@
JSObject* ProgramExecutable::compileOptimized(ExecState* exec, JSScope* scope, unsigned bytecodeIndex)
{
- RELEASE_ASSERT(exec->globalData().dynamicGlobalObject);
+ RELEASE_ASSERT(exec->vm().dynamicGlobalObject);
ASSERT(!!m_programCodeBlock);
JSObject* error = 0;
if (m_programCodeBlock->getJITType() != JITCode::topTierJIT())
@@ -338,9 +338,9 @@
}
#if ENABLE(JIT)
-void ProgramExecutable::jettisonOptimizedCode(JSGlobalData& globalData)
+void ProgramExecutable::jettisonOptimizedCode(VM& vm)
{
- jettisonCodeBlock(globalData, m_programCodeBlock);
+ jettisonCodeBlock(vm, m_programCodeBlock);
m_jitCodeForCall = m_programCodeBlock->getJITCode();
ASSERT(!m_jitCodeForCallWithArityCheck);
}
@@ -373,21 +373,21 @@
return index;
}
-JSObject* ProgramExecutable::initializeGlobalProperties(JSGlobalData& globalData, CallFrame* callFrame, JSScope* scope)
+JSObject* ProgramExecutable::initializeGlobalProperties(VM& vm, CallFrame* callFrame, JSScope* scope)
{
RELEASE_ASSERT(scope);
JSGlobalObject* globalObject = scope->globalObject();
RELEASE_ASSERT(globalObject);
- ASSERT(&globalObject->globalData() == &globalData);
+ ASSERT(&globalObject->vm() == &vm);
JSObject* exception = 0;
UnlinkedProgramCodeBlock* unlinkedCode = globalObject->createProgramCodeBlock(callFrame, this, &exception);
if (exception)
return exception;
- m_unlinkedProgramCodeBlock.set(globalData, this, unlinkedCode);
+ m_unlinkedProgramCodeBlock.set(vm, this, unlinkedCode);
- BatchedTransitionOptimizer optimizer(globalData, globalObject);
+ BatchedTransitionOptimizer optimizer(vm, globalObject);
const UnlinkedProgramCodeBlock::VariableDeclations& variableDeclarations = unlinkedCode->variableDeclarations();
const UnlinkedProgramCodeBlock::FunctionDeclations& functionDeclarations = unlinkedCode->functionDeclarations();
@@ -399,12 +399,12 @@
CallFrame* globalExec = globalObject->globalExec();
for (size_t i = 0; i < functionDeclarations.size(); ++i) {
- bool propertyDidExist = globalObject->removeDirect(globalData, functionDeclarations[i].first); // Newly declared functions overwrite existing properties.
+ bool propertyDidExist = globalObject->removeDirect(vm, functionDeclarations[i].first); // Newly declared functions overwrite existing properties.
UnlinkedFunctionExecutable* unlinkedFunctionExecutable = functionDeclarations[i].second.get();
- JSValue value = JSFunction::create(globalExec, unlinkedFunctionExecutable->link(globalData, m_source, lineNo(), 0), scope);
+ JSValue value = JSFunction::create(globalExec, unlinkedFunctionExecutable->link(vm, m_source, lineNo(), 0), scope);
int index = addGlobalVar(globalObject, functionDeclarations[i].first, IsVariable,
!propertyDidExist ? IsFunctionToSpecialize : NotFunctionOrNotSpecializable);
- globalObject->registerAt(index).set(globalData, globalObject, value);
+ globalObject->registerAt(index).set(vm, globalObject, value);
}
for (size_t i = 0; i < variableDeclarations.size(); ++i) {
@@ -456,7 +456,7 @@
JSObject* FunctionExecutable::compileOptimizedForCall(ExecState* exec, JSScope* scope, unsigned bytecodeIndex)
{
- RELEASE_ASSERT(exec->globalData().dynamicGlobalObject);
+ RELEASE_ASSERT(exec->vm().dynamicGlobalObject);
ASSERT(!!m_codeBlockForCall);
JSObject* error = 0;
if (m_codeBlockForCall->getJITType() != JITCode::topTierJIT())
@@ -467,7 +467,7 @@
JSObject* FunctionExecutable::compileOptimizedForConstruct(ExecState* exec, JSScope* scope, unsigned bytecodeIndex)
{
- RELEASE_ASSERT(exec->globalData().dynamicGlobalObject);
+ RELEASE_ASSERT(exec->vm().dynamicGlobalObject);
ASSERT(!!m_codeBlockForConstruct);
JSObject* error = 0;
if (m_codeBlockForConstruct->getJITType() != JITCode::topTierJIT())
@@ -493,12 +493,12 @@
if (!!codeBlockFor(specializationKind))
return adoptPtr(new FunctionCodeBlock(CodeBlock::CopyParsedBlock, *codeBlockFor(specializationKind)));
- JSGlobalData* globalData = scope->globalData();
+ VM* vm = scope->vm();
JSGlobalObject* globalObject = scope->globalObject();
ParserError error;
DebuggerMode debuggerMode = globalObject->hasDebugger() ? DebuggerOn : DebuggerOff;
ProfilerMode profilerMode = globalObject->hasProfiler() ? ProfilerOn : ProfilerOff;
- UnlinkedFunctionCodeBlock* unlinkedCodeBlock = m_unlinkedExecutable->codeBlockFor(*globalData, scope, m_source, specializationKind, debuggerMode, profilerMode, error);
+ UnlinkedFunctionCodeBlock* unlinkedCodeBlock = m_unlinkedExecutable->codeBlockFor(*vm, scope, m_source, specializationKind, debuggerMode, profilerMode, error);
recordParse(m_unlinkedExecutable->features(), m_unlinkedExecutable->hasCapturedVariables(), lineNo(), lastLine());
if (!unlinkedCodeBlock) {
@@ -585,16 +585,16 @@
}
#if ENABLE(JIT)
-void FunctionExecutable::jettisonOptimizedCodeForCall(JSGlobalData& globalData)
+void FunctionExecutable::jettisonOptimizedCodeForCall(VM& vm)
{
- jettisonCodeBlock(globalData, m_codeBlockForCall);
+ jettisonCodeBlock(vm, m_codeBlockForCall);
m_jitCodeForCall = m_codeBlockForCall->getJITCode();
m_jitCodeForCallWithArityCheck = m_codeBlockForCall->getJITCodeWithArityCheck();
}
-void FunctionExecutable::jettisonOptimizedCodeForConstruct(JSGlobalData& globalData)
+void FunctionExecutable::jettisonOptimizedCodeForConstruct(VM& vm)
{
- jettisonCodeBlock(globalData, m_codeBlockForConstruct);
+ jettisonCodeBlock(vm, m_codeBlockForConstruct);
m_jitCodeForConstruct = m_codeBlockForConstruct->getJITCode();
m_jitCodeForConstructWithArityCheck = m_codeBlockForConstruct->getJITCodeWithArityCheck();
}
@@ -658,7 +658,7 @@
unsigned startOffset = source.startOffset() + unlinkedFunction->startOffset();
unsigned sourceLength = unlinkedFunction->sourceLength();
SourceCode functionSource(source.provider(), startOffset, startOffset + sourceLength, firstLine);
- return FunctionExecutable::create(exec->globalData(), functionSource, unlinkedFunction, firstLine, unlinkedFunction->lineCount());
+ return FunctionExecutable::create(exec->vm(), functionSource, unlinkedFunction, firstLine, unlinkedFunction->lineCount());
}
String FunctionExecutable::paramString() const
diff --git a/Source/JavaScriptCore/runtime/Executable.h b/Source/JavaScriptCore/runtime/Executable.h
index 5454ab5..7ef0462 100644
--- a/Source/JavaScriptCore/runtime/Executable.h
+++ b/Source/JavaScriptCore/runtime/Executable.h
@@ -68,16 +68,16 @@
static const int NUM_PARAMETERS_IS_HOST = 0;
static const int NUM_PARAMETERS_NOT_COMPILED = -1;
- ExecutableBase(JSGlobalData& globalData, Structure* structure, int numParameters)
- : JSCell(globalData, structure)
+ ExecutableBase(VM& vm, Structure* structure, int numParameters)
+ : JSCell(vm, structure)
, m_numParametersForCall(numParameters)
, m_numParametersForConstruct(numParameters)
{
}
- void finishCreation(JSGlobalData& globalData)
+ void finishCreation(VM& vm)
{
- Base::finishCreation(globalData);
+ Base::finishCreation(vm);
}
public:
@@ -102,7 +102,7 @@
return m_numParametersForCall == NUM_PARAMETERS_IS_HOST;
}
- static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue proto) { return Structure::create(globalData, globalObject, proto, TypeInfo(CompoundType, StructureFlags), &s_info); }
+ static Structure* createStructure(VM& vm, JSGlobalObject* globalObject, JSValue proto) { return Structure::create(vm, globalObject, proto, TypeInfo(CompoundType, StructureFlags), &s_info); }
void clearCode();
@@ -271,26 +271,26 @@
typedef ExecutableBase Base;
#if ENABLE(JIT)
- static NativeExecutable* create(JSGlobalData& globalData, MacroAssemblerCodeRef callThunk, NativeFunction function, MacroAssemblerCodeRef constructThunk, NativeFunction constructor, Intrinsic intrinsic)
+ static NativeExecutable* create(VM& vm, MacroAssemblerCodeRef callThunk, NativeFunction function, MacroAssemblerCodeRef constructThunk, NativeFunction constructor, Intrinsic intrinsic)
{
NativeExecutable* executable;
if (!callThunk) {
- executable = new (NotNull, allocateCell<NativeExecutable>(globalData.heap)) NativeExecutable(globalData, function, constructor);
- executable->finishCreation(globalData, JITCode(), JITCode(), intrinsic);
+ executable = new (NotNull, allocateCell<NativeExecutable>(vm.heap)) NativeExecutable(vm, function, constructor);
+ executable->finishCreation(vm, JITCode(), JITCode(), intrinsic);
} else {
- executable = new (NotNull, allocateCell<NativeExecutable>(globalData.heap)) NativeExecutable(globalData, function, constructor);
- executable->finishCreation(globalData, JITCode::HostFunction(callThunk), JITCode::HostFunction(constructThunk), intrinsic);
+ executable = new (NotNull, allocateCell<NativeExecutable>(vm.heap)) NativeExecutable(vm, function, constructor);
+ executable->finishCreation(vm, JITCode::HostFunction(callThunk), JITCode::HostFunction(constructThunk), intrinsic);
}
return executable;
}
#endif
#if ENABLE(LLINT_C_LOOP)
- static NativeExecutable* create(JSGlobalData& globalData, NativeFunction function, NativeFunction constructor)
+ static NativeExecutable* create(VM& vm, NativeFunction function, NativeFunction constructor)
{
- ASSERT(!globalData.canUseJIT());
- NativeExecutable* executable = new (NotNull, allocateCell<NativeExecutable>(globalData.heap)) NativeExecutable(globalData, function, constructor);
- executable->finishCreation(globalData);
+ ASSERT(!vm.canUseJIT());
+ NativeExecutable* executable = new (NotNull, allocateCell<NativeExecutable>(vm.heap)) NativeExecutable(vm, function, constructor);
+ executable->finishCreation(vm);
return executable;
}
#endif
@@ -320,7 +320,7 @@
return OBJECT_OFFSETOF(NativeExecutable, m_constructor);
}
- static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue proto) { return Structure::create(globalData, globalObject, proto, TypeInfo(LeafType, StructureFlags), &s_info); }
+ static Structure* createStructure(VM& vm, JSGlobalObject* globalObject, JSValue proto) { return Structure::create(vm, globalObject, proto, TypeInfo(LeafType, StructureFlags), &s_info); }
static const ClassInfo s_info;
@@ -328,9 +328,9 @@
protected:
#if ENABLE(JIT)
- void finishCreation(JSGlobalData& globalData, JITCode callThunk, JITCode constructThunk, Intrinsic intrinsic)
+ void finishCreation(VM& vm, JITCode callThunk, JITCode constructThunk, Intrinsic intrinsic)
{
- Base::finishCreation(globalData);
+ Base::finishCreation(vm);
m_jitCodeForCall = callThunk;
m_jitCodeForConstruct = constructThunk;
m_jitCodeForCallWithArityCheck = callThunk.addressForCall();
@@ -340,8 +340,8 @@
#endif
private:
- NativeExecutable(JSGlobalData& globalData, NativeFunction function, NativeFunction constructor)
- : ExecutableBase(globalData, globalData.nativeExecutableStructure.get(), NUM_PARAMETERS_IS_HOST)
+ NativeExecutable(VM& vm, NativeFunction function, NativeFunction constructor)
+ : ExecutableBase(vm, vm.nativeExecutableStructure.get(), NUM_PARAMETERS_IS_HOST)
, m_function(function)
, m_constructor(constructor)
{
@@ -357,15 +357,15 @@
public:
typedef ExecutableBase Base;
- ScriptExecutable(Structure* structure, JSGlobalData& globalData, const SourceCode& source, bool isInStrictContext)
- : ExecutableBase(globalData, structure, NUM_PARAMETERS_NOT_COMPILED)
+ ScriptExecutable(Structure* structure, VM& vm, const SourceCode& source, bool isInStrictContext)
+ : ExecutableBase(vm, structure, NUM_PARAMETERS_NOT_COMPILED)
, m_source(source)
, m_features(isInStrictContext ? StrictModeFeature : 0)
{
}
ScriptExecutable(Structure* structure, ExecState* exec, const SourceCode& source, bool isInStrictContext)
- : ExecutableBase(exec->globalData(), structure, NUM_PARAMETERS_NOT_COMPILED)
+ : ExecutableBase(exec->vm(), structure, NUM_PARAMETERS_NOT_COMPILED)
, m_source(source)
, m_features(isInStrictContext ? StrictModeFeature : 0)
{
@@ -403,14 +403,14 @@
}
protected:
- void finishCreation(JSGlobalData& globalData)
+ void finishCreation(VM& vm)
{
- Base::finishCreation(globalData);
- globalData.heap.addCompiledCode(this); // Balanced by Heap::deleteUnmarkedCompiledCode().
+ Base::finishCreation(vm);
+ vm.heap.addCompiledCode(this); // Balanced by Heap::deleteUnmarkedCompiledCode().
#if ENABLE(CODEBLOCK_SAMPLING)
- if (SamplingTool* sampler = globalData.interpreter->sampler())
- sampler->notifyOfScope(globalData, this);
+ if (SamplingTool* sampler = vm.interpreter->sampler())
+ sampler->notifyOfScope(vm, this);
#endif
}
@@ -430,7 +430,7 @@
JSObject* compile(ExecState* exec, JSScope* scope)
{
- RELEASE_ASSERT(exec->globalData().dynamicGlobalObject);
+ RELEASE_ASSERT(exec->vm().dynamicGlobalObject);
JSObject* error = 0;
if (!m_evalCodeBlock)
error = compileInternal(exec, scope, JITCode::bottomTierJIT());
@@ -441,7 +441,7 @@
JSObject* compileOptimized(ExecState*, JSScope*, unsigned bytecodeIndex);
#if ENABLE(JIT)
- void jettisonOptimizedCode(JSGlobalData&);
+ void jettisonOptimizedCode(VM&);
bool jitCompile(ExecState*);
#endif
@@ -454,7 +454,7 @@
static EvalExecutable* create(ExecState* exec, const SourceCode& source, bool isInStrictContext)
{
EvalExecutable* executable = new (NotNull, allocateCell<EvalExecutable>(*exec->heap())) EvalExecutable(exec, source, isInStrictContext);
- executable->finishCreation(exec->globalData());
+ executable->finishCreation(exec->vm());
return executable;
}
@@ -464,9 +464,9 @@
return generatedJITCodeForCall();
}
#endif
- static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue proto)
+ static Structure* createStructure(VM& vm, JSGlobalObject* globalObject, JSValue proto)
{
- return Structure::create(globalData, globalObject, proto, TypeInfo(EvalExecutableType, StructureFlags), &s_info);
+ return Structure::create(vm, globalObject, proto, TypeInfo(EvalExecutableType, StructureFlags), &s_info);
}
static const ClassInfo s_info;
@@ -496,18 +496,18 @@
static ProgramExecutable* create(ExecState* exec, const SourceCode& source)
{
ProgramExecutable* executable = new (NotNull, allocateCell<ProgramExecutable>(*exec->heap())) ProgramExecutable(exec, source);
- executable->finishCreation(exec->globalData());
+ executable->finishCreation(exec->vm());
return executable;
}
- JSObject* initializeGlobalProperties(JSGlobalData&, CallFrame*, JSScope*);
+ JSObject* initializeGlobalProperties(VM&, CallFrame*, JSScope*);
static void destroy(JSCell*);
JSObject* compile(ExecState* exec, JSScope* scope)
{
- RELEASE_ASSERT(exec->globalData().dynamicGlobalObject);
+ RELEASE_ASSERT(exec->vm().dynamicGlobalObject);
JSObject* error = 0;
if (!m_programCodeBlock)
error = compileInternal(exec, scope, JITCode::bottomTierJIT());
@@ -518,7 +518,7 @@
JSObject* compileOptimized(ExecState*, JSScope*, unsigned bytecodeIndex);
#if ENABLE(JIT)
- void jettisonOptimizedCode(JSGlobalData&);
+ void jettisonOptimizedCode(VM&);
bool jitCompile(ExecState*);
#endif
@@ -537,9 +537,9 @@
}
#endif
- static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue proto)
+ static Structure* createStructure(VM& vm, JSGlobalObject* globalObject, JSValue proto)
{
- return Structure::create(globalData, globalObject, proto, TypeInfo(ProgramExecutableType, StructureFlags), &s_info);
+ return Structure::create(vm, globalObject, proto, TypeInfo(ProgramExecutableType, StructureFlags), &s_info);
}
static const ClassInfo s_info;
@@ -572,10 +572,10 @@
public:
typedef ScriptExecutable Base;
- static FunctionExecutable* create(JSGlobalData& globalData, const SourceCode& source, UnlinkedFunctionExecutable* unlinkedExecutable, unsigned firstLine, unsigned lastLine)
+ static FunctionExecutable* create(VM& vm, const SourceCode& source, UnlinkedFunctionExecutable* unlinkedExecutable, unsigned firstLine, unsigned lastLine)
{
- FunctionExecutable* executable = new (NotNull, allocateCell<FunctionExecutable>(globalData.heap)) FunctionExecutable(globalData, source, unlinkedExecutable, firstLine, lastLine);
- executable->finishCreation(globalData);
+ FunctionExecutable* executable = new (NotNull, allocateCell<FunctionExecutable>(vm.heap)) FunctionExecutable(vm, source, unlinkedExecutable, firstLine, lastLine);
+ executable->finishCreation(vm);
return executable;
}
static FunctionExecutable* fromGlobalCode(const Identifier& name, ExecState*, Debugger*, const SourceCode&, JSObject** exception);
@@ -602,7 +602,7 @@
JSObject* compileForCall(ExecState* exec, JSScope* scope)
{
- RELEASE_ASSERT(exec->globalData().dynamicGlobalObject);
+ RELEASE_ASSERT(exec->vm().dynamicGlobalObject);
JSObject* error = 0;
if (!m_codeBlockForCall)
error = compileForCallInternal(exec, scope, JITCode::bottomTierJIT());
@@ -613,7 +613,7 @@
JSObject* compileOptimizedForCall(ExecState*, JSScope*, unsigned bytecodeIndex);
#if ENABLE(JIT)
- void jettisonOptimizedCodeForCall(JSGlobalData&);
+ void jettisonOptimizedCodeForCall(VM&);
bool jitCompileForCall(ExecState*);
#endif
@@ -630,7 +630,7 @@
JSObject* compileForConstruct(ExecState* exec, JSScope* scope)
{
- RELEASE_ASSERT(exec->globalData().dynamicGlobalObject);
+ RELEASE_ASSERT(exec->vm().dynamicGlobalObject);
JSObject* error = 0;
if (!m_codeBlockForConstruct)
error = compileForConstructInternal(exec, scope, JITCode::bottomTierJIT());
@@ -641,7 +641,7 @@
JSObject* compileOptimizedForConstruct(ExecState*, JSScope*, unsigned bytecodeIndex);
#if ENABLE(JIT)
- void jettisonOptimizedCodeForConstruct(JSGlobalData&);
+ void jettisonOptimizedCodeForConstruct(VM&);
bool jitCompileForConstruct(ExecState*);
#endif
@@ -681,13 +681,13 @@
}
#if ENABLE(JIT)
- void jettisonOptimizedCodeFor(JSGlobalData& globalData, CodeSpecializationKind kind)
+ void jettisonOptimizedCodeFor(VM& vm, CodeSpecializationKind kind)
{
if (kind == CodeForCall)
- jettisonOptimizedCodeForCall(globalData);
+ jettisonOptimizedCodeForCall(vm);
else {
ASSERT(kind == CodeForConstruct);
- jettisonOptimizedCodeForConstruct(globalData);
+ jettisonOptimizedCodeForConstruct(vm);
}
}
@@ -733,9 +733,9 @@
void clearCodeIfNotCompiling();
void clearUnlinkedCodeForRecompilationIfNotCompiling();
static void visitChildren(JSCell*, SlotVisitor&);
- static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue proto)
+ static Structure* createStructure(VM& vm, JSGlobalObject* globalObject, JSValue proto)
{
- return Structure::create(globalData, globalObject, proto, TypeInfo(FunctionExecutableType, StructureFlags), &s_info);
+ return Structure::create(vm, globalObject, proto, TypeInfo(FunctionExecutableType, StructureFlags), &s_info);
}
static const ClassInfo s_info;
@@ -745,7 +745,7 @@
void clearCode();
private:
- FunctionExecutable(JSGlobalData&, const SourceCode&, UnlinkedFunctionExecutable*, unsigned firstLine, unsigned lastLine);
+ FunctionExecutable(VM&, const SourceCode&, UnlinkedFunctionExecutable*, unsigned firstLine, unsigned lastLine);
JSObject* compileForCallInternal(ExecState*, JSScope*, JITCode::JITType, unsigned bytecodeIndex = UINT_MAX);
JSObject* compileForConstructInternal(ExecState*, JSScope*, JITCode::JITType, unsigned bytecodeIndex = UINT_MAX);
@@ -775,10 +775,10 @@
OwnPtr<FunctionCodeBlock> m_codeBlockForConstruct;
};
- inline JSFunction::JSFunction(JSGlobalData& globalData, FunctionExecutable* executable, JSScope* scope)
- : Base(globalData, scope->globalObject()->functionStructure())
- , m_executable(globalData, this, executable)
- , m_scope(globalData, this, scope)
+ inline JSFunction::JSFunction(VM& vm, FunctionExecutable* executable, JSScope* scope)
+ : Base(vm, scope->globalObject()->functionStructure())
+ , m_executable(vm, this, executable)
+ , m_scope(vm, this, scope)
, m_allocationProfileWatchpoint(InitializedBlind) // See comment in JSFunction.cpp concerning the reason for using InitializedBlind as opposed to InitializedWatching.
{
}
diff --git a/Source/JavaScriptCore/runtime/ExecutionHarness.h b/Source/JavaScriptCore/runtime/ExecutionHarness.h
index 859309c..ba52a1e 100644
--- a/Source/JavaScriptCore/runtime/ExecutionHarness.h
+++ b/Source/JavaScriptCore/runtime/ExecutionHarness.h
@@ -41,10 +41,10 @@
#if ENABLE(LLINT)
if (JITCode::isBaselineCode(jitType)) {
// Start off in the low level interpreter.
- LLInt::getEntrypoint(exec->globalData(), codeBlock.get(), jitCode);
+ LLInt::getEntrypoint(exec->vm(), codeBlock.get(), jitCode);
codeBlock->setJITCode(jitCode, MacroAssemblerCodePtr());
- if (exec->globalData().m_perBytecodeProfiler)
- exec->globalData().m_perBytecodeProfiler->ensureBytecodesFor(codeBlock.get());
+ if (exec->vm().m_perBytecodeProfiler)
+ exec->vm().m_perBytecodeProfiler->ensureBytecodesFor(codeBlock.get());
return true;
}
#endif // ENABLE(LLINT)
@@ -56,10 +56,10 @@
#if ENABLE(LLINT)
if (JITCode::isBaselineCode(jitType)) {
// Start off in the low level interpreter.
- LLInt::getFunctionEntrypoint(exec->globalData(), kind, jitCode, jitCodeWithArityCheck);
+ LLInt::getFunctionEntrypoint(exec->vm(), kind, jitCode, jitCodeWithArityCheck);
codeBlock->setJITCode(jitCode, jitCodeWithArityCheck);
- if (exec->globalData().m_perBytecodeProfiler)
- exec->globalData().m_perBytecodeProfiler->ensureBytecodesFor(codeBlock.get());
+ if (exec->vm().m_perBytecodeProfiler)
+ exec->vm().m_perBytecodeProfiler->ensureBytecodesFor(codeBlock.get());
return true;
}
#else
diff --git a/Source/JavaScriptCore/runtime/FunctionConstructor.cpp b/Source/JavaScriptCore/runtime/FunctionConstructor.cpp
index ad95a2c..253178e 100644
--- a/Source/JavaScriptCore/runtime/FunctionConstructor.cpp
+++ b/Source/JavaScriptCore/runtime/FunctionConstructor.cpp
@@ -46,11 +46,11 @@
void FunctionConstructor::finishCreation(ExecState* exec, FunctionPrototype* functionPrototype)
{
- Base::finishCreation(exec->globalData(), functionPrototype->classInfo()->className);
- putDirectWithoutTransition(exec->globalData(), exec->propertyNames().prototype, functionPrototype, DontEnum | DontDelete | ReadOnly);
+ Base::finishCreation(exec->vm(), functionPrototype->classInfo()->className);
+ putDirectWithoutTransition(exec->vm(), exec->propertyNames().prototype, functionPrototype, DontEnum | DontDelete | ReadOnly);
// Number of arguments for constructor
- putDirectWithoutTransition(exec->globalData(), exec->propertyNames().length, jsNumber(1), ReadOnly | DontDelete | DontEnum);
+ putDirectWithoutTransition(exec->vm(), exec->propertyNames().length, jsNumber(1), ReadOnly | DontDelete | DontEnum);
}
static EncodedJSValue JSC_HOST_CALL constructWithFunctionConstructor(ExecState* exec)
diff --git a/Source/JavaScriptCore/runtime/FunctionConstructor.h b/Source/JavaScriptCore/runtime/FunctionConstructor.h
index 99eafee..3d211f6 100644
--- a/Source/JavaScriptCore/runtime/FunctionConstructor.h
+++ b/Source/JavaScriptCore/runtime/FunctionConstructor.h
@@ -44,9 +44,9 @@
static const ClassInfo s_info;
- static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype)
+ static Structure* createStructure(VM& vm, JSGlobalObject* globalObject, JSValue prototype)
{
- return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), &s_info);
+ return Structure::create(vm, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), &s_info);
}
private:
diff --git a/Source/JavaScriptCore/runtime/FunctionPrototype.cpp b/Source/JavaScriptCore/runtime/FunctionPrototype.cpp
index 58b81c3..1832982 100644
--- a/Source/JavaScriptCore/runtime/FunctionPrototype.cpp
+++ b/Source/JavaScriptCore/runtime/FunctionPrototype.cpp
@@ -49,23 +49,23 @@
void FunctionPrototype::finishCreation(ExecState* exec, const String& name)
{
- Base::finishCreation(exec->globalData(), name);
- putDirectWithoutTransition(exec->globalData(), exec->propertyNames().length, jsNumber(0), DontDelete | ReadOnly | DontEnum);
+ Base::finishCreation(exec->vm(), name);
+ putDirectWithoutTransition(exec->vm(), exec->propertyNames().length, jsNumber(0), DontDelete | ReadOnly | DontEnum);
}
void FunctionPrototype::addFunctionProperties(ExecState* exec, JSGlobalObject* globalObject, JSFunction** callFunction, JSFunction** applyFunction)
{
JSFunction* toStringFunction = JSFunction::create(exec, globalObject, 0, exec->propertyNames().toString.string(), functionProtoFuncToString);
- putDirectWithoutTransition(exec->globalData(), exec->propertyNames().toString, toStringFunction, DontEnum);
+ putDirectWithoutTransition(exec->vm(), exec->propertyNames().toString, toStringFunction, DontEnum);
*applyFunction = JSFunction::create(exec, globalObject, 2, exec->propertyNames().apply.string(), functionProtoFuncApply);
- putDirectWithoutTransition(exec->globalData(), exec->propertyNames().apply, *applyFunction, DontEnum);
+ putDirectWithoutTransition(exec->vm(), exec->propertyNames().apply, *applyFunction, DontEnum);
*callFunction = JSFunction::create(exec, globalObject, 1, exec->propertyNames().call.string(), functionProtoFuncCall);
- putDirectWithoutTransition(exec->globalData(), exec->propertyNames().call, *callFunction, DontEnum);
+ putDirectWithoutTransition(exec->vm(), exec->propertyNames().call, *callFunction, DontEnum);
JSFunction* bindFunction = JSFunction::create(exec, globalObject, 1, exec->propertyNames().bind.string(), functionProtoFuncBind);
- putDirectWithoutTransition(exec->globalData(), exec->propertyNames().bind, bindFunction, DontEnum);
+ putDirectWithoutTransition(exec->vm(), exec->propertyNames().bind, bindFunction, DontEnum);
}
static EncodedJSValue JSC_HOST_CALL callFunctionPrototype(ExecState*)
@@ -187,12 +187,12 @@
// Let A be a new (possibly empty) internal list of all of the argument values provided after thisArg (arg1, arg2 etc), in order.
size_t numBoundArgs = exec->argumentCount() > 1 ? exec->argumentCount() - 1 : 0;
- JSArray* boundArgs = JSArray::tryCreateUninitialized(exec->globalData(), globalObject->arrayStructureForIndexingTypeDuringAllocation(ArrayWithUndecided), numBoundArgs);
+ JSArray* boundArgs = JSArray::tryCreateUninitialized(exec->vm(), globalObject->arrayStructureForIndexingTypeDuringAllocation(ArrayWithUndecided), numBoundArgs);
if (!boundArgs)
return JSValue::encode(throwOutOfMemoryError(exec));
for (size_t i = 0; i < numBoundArgs; ++i)
- boundArgs->initializeIndex(exec->globalData(), i, exec->argument(i + 1));
+ boundArgs->initializeIndex(exec->vm(), i, exec->argument(i + 1));
// If the [[Class]] internal property of Target is "Function", then ...
// Else set the length own property of F to 0.
diff --git a/Source/JavaScriptCore/runtime/FunctionPrototype.h b/Source/JavaScriptCore/runtime/FunctionPrototype.h
index 07f3813..0083fb9 100644
--- a/Source/JavaScriptCore/runtime/FunctionPrototype.h
+++ b/Source/JavaScriptCore/runtime/FunctionPrototype.h
@@ -38,9 +38,9 @@
void addFunctionProperties(ExecState*, JSGlobalObject*, JSFunction** callFunction, JSFunction** applyFunction);
- static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue proto)
+ static Structure* createStructure(VM& vm, JSGlobalObject* globalObject, JSValue proto)
{
- return Structure::create(globalData, globalObject, proto, TypeInfo(ObjectType, StructureFlags), &s_info);
+ return Structure::create(vm, globalObject, proto, TypeInfo(ObjectType, StructureFlags), &s_info);
}
static const ClassInfo s_info;
diff --git a/Source/JavaScriptCore/runtime/GCActivityCallback.cpp b/Source/JavaScriptCore/runtime/GCActivityCallback.cpp
index 0c07b5e..a8d4aab 100644
--- a/Source/JavaScriptCore/runtime/GCActivityCallback.cpp
+++ b/Source/JavaScriptCore/runtime/GCActivityCallback.cpp
@@ -31,7 +31,7 @@
#include "APIShims.h"
#include "Heap.h"
-#include "JSGlobalData.h"
+#include "VM.h"
#include "JSLock.h"
#include "JSObject.h"
@@ -50,19 +50,19 @@
#if USE(CF)
DefaultGCActivityCallback::DefaultGCActivityCallback(Heap* heap)
- : GCActivityCallback(heap->globalData(), CFRunLoopGetCurrent())
+ : GCActivityCallback(heap->vm(), CFRunLoopGetCurrent())
, m_delay(s_decade)
{
}
DefaultGCActivityCallback::DefaultGCActivityCallback(Heap* heap, CFRunLoopRef runLoop)
- : GCActivityCallback(heap->globalData(), runLoop)
+ : GCActivityCallback(heap->vm(), runLoop)
, m_delay(s_decade)
{
}
#elif PLATFORM(QT)
DefaultGCActivityCallback::DefaultGCActivityCallback(Heap* heap)
- : GCActivityCallback(heap->globalData())
+ : GCActivityCallback(heap->vm())
, m_delay(hour)
{
}
@@ -70,11 +70,11 @@
void DefaultGCActivityCallback::doWork()
{
- Heap* heap = &m_globalData->heap;
+ Heap* heap = &m_vm->heap;
if (!isEnabled())
return;
- APIEntryShim shim(m_globalData);
+ APIEntryShim shim(m_vm);
#if !PLATFORM(IOS)
double startTime = WTF::monotonicallyIncreasingTime();
if (heap->isPagedOut(startTime + pagingTimeOut)) {
@@ -124,7 +124,7 @@
// We pretend it's one byte so that we don't ignore this allocation entirely.
if (!bytes)
bytes = 1;
- Heap* heap = static_cast<Heap*>(&m_globalData->heap);
+ Heap* heap = static_cast<Heap*>(&m_vm->heap);
double gcTimeSlice = std::min((static_cast<double>(bytes) / MB) * gcTimeSlicePerMB, maxGCTimeSlice);
double newDelay = heap->lastGCLength() / gcTimeSlice;
scheduleTimer(newDelay);
@@ -143,7 +143,7 @@
#else
DefaultGCActivityCallback::DefaultGCActivityCallback(Heap* heap)
- : GCActivityCallback(heap->globalData())
+ : GCActivityCallback(heap->vm())
{
}
diff --git a/Source/JavaScriptCore/runtime/GCActivityCallback.h b/Source/JavaScriptCore/runtime/GCActivityCallback.h
index dc30137..baaf4f5 100644
--- a/Source/JavaScriptCore/runtime/GCActivityCallback.h
+++ b/Source/JavaScriptCore/runtime/GCActivityCallback.h
@@ -52,14 +52,14 @@
protected:
#if USE(CF)
- GCActivityCallback(JSGlobalData* globalData, CFRunLoopRef runLoop)
- : HeapTimer(globalData, runLoop)
+ GCActivityCallback(VM* vm, CFRunLoopRef runLoop)
+ : HeapTimer(vm, runLoop)
, m_enabled(true)
{
}
#else
- GCActivityCallback(JSGlobalData* globalData)
- : HeapTimer(globalData)
+ GCActivityCallback(VM* vm)
+ : HeapTimer(vm)
, m_enabled(true)
{
}
diff --git a/Source/JavaScriptCore/runtime/GCActivityCallbackBlackBerry.cpp b/Source/JavaScriptCore/runtime/GCActivityCallbackBlackBerry.cpp
index 2dac572..d7c9d53 100644
--- a/Source/JavaScriptCore/runtime/GCActivityCallbackBlackBerry.cpp
+++ b/Source/JavaScriptCore/runtime/GCActivityCallbackBlackBerry.cpp
@@ -20,20 +20,20 @@
#include "GCActivityCallback.h"
#include "Heap.h"
-#include "JSGlobalData.h"
+#include "VM.h"
#include <BlackBerryPlatformMemory.h>
namespace JSC {
DefaultGCActivityCallback::DefaultGCActivityCallback(Heap* heap)
- : GCActivityCallback(heap->globalData())
+ : GCActivityCallback(heap->vm())
{
}
void DefaultGCActivityCallback::doWork()
{
- JSLockHolder lock(m_globalData);
- m_globalData->heap.collect(Heap::DoNotSweep);
+ JSLockHolder lock(m_vm);
+ m_vm->heap.collect(Heap::DoNotSweep);
}
void DefaultGCActivityCallback::didAllocate(size_t)
@@ -42,7 +42,7 @@
return;
// Try using ~5% CPU time.
- m_timer.start(m_globalData->heap.lastGCLength() * 20);
+ m_timer.start(m_vm->heap.lastGCLength() * 20);
}
void DefaultGCActivityCallback::willCollect()
diff --git a/Source/JavaScriptCore/runtime/GetterSetter.h b/Source/JavaScriptCore/runtime/GetterSetter.h
index b8caf01..f459e44 100644
--- a/Source/JavaScriptCore/runtime/GetterSetter.h
+++ b/Source/JavaScriptCore/runtime/GetterSetter.h
@@ -39,7 +39,7 @@
private:
GetterSetter(ExecState* exec)
- : JSCell(exec->globalData(), exec->globalData().getterSetterStructure.get())
+ : JSCell(exec->vm(), exec->vm().getterSetterStructure.get())
{
}
@@ -49,19 +49,19 @@
static GetterSetter* create(ExecState* exec)
{
GetterSetter* getterSetter = new (NotNull, allocateCell<GetterSetter>(*exec->heap())) GetterSetter(exec);
- getterSetter->finishCreation(exec->globalData());
+ getterSetter->finishCreation(exec->vm());
return getterSetter;
}
static void visitChildren(JSCell*, SlotVisitor&);
JSObject* getter() const { return m_getter.get(); }
- void setGetter(JSGlobalData& globalData, JSObject* getter) { m_getter.setMayBeNull(globalData, this, getter); }
+ void setGetter(VM& vm, JSObject* getter) { m_getter.setMayBeNull(vm, this, getter); }
JSObject* setter() const { return m_setter.get(); }
- void setSetter(JSGlobalData& globalData, JSObject* setter) { m_setter.setMayBeNull(globalData, this, setter); }
- static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype)
+ void setSetter(VM& vm, JSObject* setter) { m_setter.setMayBeNull(vm, this, setter); }
+ static Structure* createStructure(VM& vm, JSGlobalObject* globalObject, JSValue prototype)
{
- return Structure::create(globalData, globalObject, prototype, TypeInfo(GetterSetterType, OverridesVisitChildren), &s_info);
+ return Structure::create(vm, globalObject, prototype, TypeInfo(GetterSetterType, OverridesVisitChildren), &s_info);
}
static const ClassInfo s_info;
diff --git a/Source/JavaScriptCore/runtime/Identifier.cpp b/Source/JavaScriptCore/runtime/Identifier.cpp
index 3793da5..6e0ad2a 100644
--- a/Source/JavaScriptCore/runtime/Identifier.cpp
+++ b/Source/JavaScriptCore/runtime/Identifier.cpp
@@ -88,14 +88,14 @@
}
};
-PassRefPtr<StringImpl> Identifier::add(JSGlobalData* globalData, const char* c)
+PassRefPtr<StringImpl> Identifier::add(VM* vm, const char* c)
{
ASSERT(c);
ASSERT(c[0]);
if (!c[1])
- return add(globalData, globalData->smallStrings.singleCharacterStringRep(c[0]));
+ return add(vm, vm->smallStrings.singleCharacterStringRep(c[0]));
- IdentifierTable& identifierTable = *globalData->identifierTable;
+ IdentifierTable& identifierTable = *vm->identifierTable;
LiteralIdentifierTable& literalIdentifierTable = identifierTable.literalTable();
const LiteralIdentifierTable::iterator& iter = literalIdentifierTable.find(c);
@@ -115,29 +115,29 @@
PassRefPtr<StringImpl> Identifier::add(ExecState* exec, const char* c)
{
- return add(&exec->globalData(), c);
+ return add(&exec->vm(), c);
}
-PassRefPtr<StringImpl> Identifier::add8(JSGlobalData* globalData, const UChar* s, int length)
+PassRefPtr<StringImpl> Identifier::add8(VM* vm, const UChar* s, int length)
{
if (length == 1) {
UChar c = s[0];
ASSERT(c <= 0xff);
if (canUseSingleCharacterString(c))
- return add(globalData, globalData->smallStrings.singleCharacterStringRep(c));
+ return add(vm, vm->smallStrings.singleCharacterStringRep(c));
}
if (!length)
return StringImpl::empty();
CharBuffer<UChar> buf = { s, static_cast<unsigned>(length) };
- HashSet<StringImpl*>::AddResult addResult = globalData->identifierTable->add<CharBuffer<UChar>, IdentifierLCharFromUCharTranslator >(buf);
+ HashSet<StringImpl*>::AddResult addResult = vm->identifierTable->add<CharBuffer<UChar>, IdentifierLCharFromUCharTranslator >(buf);
// If the string is newly-translated, then we need to adopt it.
// The boolean in the pair tells us if that is so.
return addResult.isNewEntry ? adoptRef(*addResult.iterator) : *addResult.iterator;
}
-PassRefPtr<StringImpl> Identifier::addSlowCase(JSGlobalData* globalData, StringImpl* r)
+PassRefPtr<StringImpl> Identifier::addSlowCase(VM* vm, StringImpl* r)
{
ASSERT(!r->isIdentifier());
// The empty & null strings are static singletons, and static strings are handled
@@ -147,68 +147,68 @@
if (r->length() == 1) {
UChar c = (*r)[0];
if (c <= maxSingleCharacterString)
- r = globalData->smallStrings.singleCharacterStringRep(c);
+ r = vm->smallStrings.singleCharacterStringRep(c);
if (r->isIdentifier())
return r;
}
- return *globalData->identifierTable->add(r).iterator;
+ return *vm->identifierTable->add(r).iterator;
}
PassRefPtr<StringImpl> Identifier::addSlowCase(ExecState* exec, StringImpl* r)
{
- return addSlowCase(&exec->globalData(), r);
+ return addSlowCase(&exec->vm(), r);
}
Identifier Identifier::from(ExecState* exec, unsigned value)
{
- return Identifier(exec, exec->globalData().numericStrings.add(value));
+ return Identifier(exec, exec->vm().numericStrings.add(value));
}
Identifier Identifier::from(ExecState* exec, int value)
{
- return Identifier(exec, exec->globalData().numericStrings.add(value));
+ return Identifier(exec, exec->vm().numericStrings.add(value));
}
Identifier Identifier::from(ExecState* exec, double value)
{
- return Identifier(exec, exec->globalData().numericStrings.add(value));
+ return Identifier(exec, exec->vm().numericStrings.add(value));
}
-Identifier Identifier::from(JSGlobalData* globalData, unsigned value)
+Identifier Identifier::from(VM* vm, unsigned value)
{
- return Identifier(globalData, globalData->numericStrings.add(value));
+ return Identifier(vm, vm->numericStrings.add(value));
}
-Identifier Identifier::from(JSGlobalData* globalData, int value)
+Identifier Identifier::from(VM* vm, int value)
{
- return Identifier(globalData, globalData->numericStrings.add(value));
+ return Identifier(vm, vm->numericStrings.add(value));
}
-Identifier Identifier::from(JSGlobalData* globalData, double value)
+Identifier Identifier::from(VM* vm, double value)
{
- return Identifier(globalData, globalData->numericStrings.add(value));
+ return Identifier(vm, vm->numericStrings.add(value));
}
#ifndef NDEBUG
-void Identifier::checkCurrentIdentifierTable(JSGlobalData* globalData)
+void Identifier::checkCurrentIdentifierTable(VM* vm)
{
// Check the identifier table accessible through the threadspecific matches the
- // globalData's identifier table.
- ASSERT_UNUSED(globalData, globalData->identifierTable == wtfThreadData().currentIdentifierTable());
+ // vm's identifier table.
+ ASSERT_UNUSED(vm, vm->identifierTable == wtfThreadData().currentIdentifierTable());
}
void Identifier::checkCurrentIdentifierTable(ExecState* exec)
{
- checkCurrentIdentifierTable(&exec->globalData());
+ checkCurrentIdentifierTable(&exec->vm());
}
#else
// These only exists so that our exports are the same for debug and release builds.
// This would be an RELEASE_ASSERT_NOT_REACHED(), but we're in NDEBUG only code here!
-NO_RETURN_DUE_TO_CRASH void Identifier::checkCurrentIdentifierTable(JSGlobalData*) { CRASH(); }
+NO_RETURN_DUE_TO_CRASH void Identifier::checkCurrentIdentifierTable(VM*) { CRASH(); }
NO_RETURN_DUE_TO_CRASH void Identifier::checkCurrentIdentifierTable(ExecState*) { CRASH(); }
#endif
diff --git a/Source/JavaScriptCore/runtime/Identifier.h b/Source/JavaScriptCore/runtime/Identifier.h
index d7a1618..f075aa6 100644
--- a/Source/JavaScriptCore/runtime/Identifier.h
+++ b/Source/JavaScriptCore/runtime/Identifier.h
@@ -21,7 +21,7 @@
#ifndef Identifier_h
#define Identifier_h
-#include "JSGlobalData.h"
+#include "VM.h"
#include <wtf/ThreadSpecific.h>
#include <wtf/WTFThreadData.h>
#include <wtf/text/CString.h>
@@ -42,15 +42,15 @@
template<unsigned charactersCount>
Identifier(ExecState* exec, const char (&characters)[charactersCount]) : m_string(add(exec, characters)) { }
template<unsigned charactersCount>
- Identifier(JSGlobalData* globalData, const char (&characters)[charactersCount]) : m_string(add(globalData, characters)) { }
+ Identifier(VM* vm, const char (&characters)[charactersCount]) : m_string(add(vm, characters)) { }
Identifier(ExecState* exec, StringImpl* rep) : m_string(add(exec, rep)) { }
Identifier(ExecState* exec, const String& s) : m_string(add(exec, s.impl())) { }
- Identifier(JSGlobalData* globalData, const LChar* s, int length) : m_string(add(globalData, s, length)) { }
- Identifier(JSGlobalData* globalData, const UChar* s, int length) : m_string(add(globalData, s, length)) { }
- Identifier(JSGlobalData* globalData, StringImpl* rep) : m_string(add(globalData, rep)) { }
- Identifier(JSGlobalData* globalData, const String& s) : m_string(add(globalData, s.impl())) { }
+ Identifier(VM* vm, const LChar* s, int length) : m_string(add(vm, s, length)) { }
+ Identifier(VM* vm, const UChar* s, int length) : m_string(add(vm, s, length)) { }
+ Identifier(VM* vm, StringImpl* rep) : m_string(add(vm, rep)) { }
+ Identifier(VM* vm, const String& s) : m_string(add(vm, s.impl())) { }
const String& string() const { return m_string; }
StringImpl* impl() const { return m_string.impl(); }
@@ -60,14 +60,14 @@
CString ascii() const { return m_string.ascii(); }
- static Identifier createLCharFromUChar(JSGlobalData* globalData, const UChar* s, int length) { return Identifier(globalData, add8(globalData, s, length)); }
+ static Identifier createLCharFromUChar(VM* vm, const UChar* s, int length) { return Identifier(vm, add8(vm, s, length)); }
JS_EXPORT_PRIVATE static Identifier from(ExecState* exec, unsigned y);
JS_EXPORT_PRIVATE static Identifier from(ExecState* exec, int y);
static Identifier from(ExecState* exec, double y);
- static Identifier from(JSGlobalData*, unsigned y);
- static Identifier from(JSGlobalData*, int y);
- static Identifier from(JSGlobalData*, double y);
+ static Identifier from(VM*, unsigned y);
+ static Identifier from(VM*, int y);
+ static Identifier from(VM*, double y);
bool isNull() const { return m_string.isNull(); }
bool isEmpty() const { return m_string.isEmpty(); }
@@ -87,7 +87,7 @@
static bool equal(const StringImpl* a, const StringImpl* b) { return ::equal(a, b); }
// Only to be used with string literals.
- static PassRefPtr<StringImpl> add(JSGlobalData*, const char*);
+ static PassRefPtr<StringImpl> add(VM*, const char*);
JS_EXPORT_PRIVATE static PassRefPtr<StringImpl> add(ExecState*, const char*);
private:
@@ -99,8 +99,8 @@
static bool equal(const Identifier& a, const Identifier& b) { return a.m_string.impl() == b.m_string.impl(); }
static bool equal(const Identifier& a, const LChar* b) { return equal(a.m_string.impl(), b); }
- template <typename T> static PassRefPtr<StringImpl> add(JSGlobalData*, const T*, int length);
- static PassRefPtr<StringImpl> add8(JSGlobalData*, const UChar*, int length);
+ template <typename T> static PassRefPtr<StringImpl> add(VM*, const T*, int length);
+ static PassRefPtr<StringImpl> add8(VM*, const UChar*, int length);
template <typename T> ALWAYS_INLINE static bool canUseSingleCharacterString(T);
static PassRefPtr<StringImpl> add(ExecState* exec, StringImpl* r)
@@ -112,21 +112,21 @@
return r;
return addSlowCase(exec, r);
}
- static PassRefPtr<StringImpl> add(JSGlobalData* globalData, StringImpl* r)
+ static PassRefPtr<StringImpl> add(VM* vm, StringImpl* r)
{
#ifndef NDEBUG
- checkCurrentIdentifierTable(globalData);
+ checkCurrentIdentifierTable(vm);
#endif
if (r->isIdentifier())
return r;
- return addSlowCase(globalData, r);
+ return addSlowCase(vm, r);
}
JS_EXPORT_PRIVATE static PassRefPtr<StringImpl> addSlowCase(ExecState*, StringImpl* r);
- JS_EXPORT_PRIVATE static PassRefPtr<StringImpl> addSlowCase(JSGlobalData*, StringImpl* r);
+ JS_EXPORT_PRIVATE static PassRefPtr<StringImpl> addSlowCase(VM*, StringImpl* r);
JS_EXPORT_PRIVATE static void checkCurrentIdentifierTable(ExecState*);
- JS_EXPORT_PRIVATE static void checkCurrentIdentifierTable(JSGlobalData*);
+ JS_EXPORT_PRIVATE static void checkCurrentIdentifierTable(VM*);
};
template <> ALWAYS_INLINE bool Identifier::canUseSingleCharacterString(LChar)
@@ -170,18 +170,18 @@
};
template <typename T>
- PassRefPtr<StringImpl> Identifier::add(JSGlobalData* globalData, const T* s, int length)
+ PassRefPtr<StringImpl> Identifier::add(VM* vm, const T* s, int length)
{
if (length == 1) {
T c = s[0];
if (canUseSingleCharacterString(c))
- return add(globalData, globalData->smallStrings.singleCharacterStringRep(c));
+ return add(vm, vm->smallStrings.singleCharacterStringRep(c));
}
if (!length)
return StringImpl::empty();
CharBuffer<T> buf = { s, static_cast<unsigned>(length) };
- HashSet<StringImpl*>::AddResult addResult = globalData->identifierTable->add<CharBuffer<T>, IdentifierCharBufferTranslator<T> >(buf);
+ HashSet<StringImpl*>::AddResult addResult = vm->identifierTable->add<CharBuffer<T>, IdentifierCharBufferTranslator<T> >(buf);
// If the string is newly-translated, then we need to adopt it.
// The boolean in the pair tells us if that is so.
diff --git a/Source/JavaScriptCore/runtime/InternalFunction.cpp b/Source/JavaScriptCore/runtime/InternalFunction.cpp
index 28879d0..071babc 100644
--- a/Source/JavaScriptCore/runtime/InternalFunction.cpp
+++ b/Source/JavaScriptCore/runtime/InternalFunction.cpp
@@ -35,26 +35,26 @@
const ClassInfo InternalFunction::s_info = { "Function", &Base::s_info, 0, 0, CREATE_METHOD_TABLE(InternalFunction) };
InternalFunction::InternalFunction(JSGlobalObject* globalObject, Structure* structure)
- : JSDestructibleObject(globalObject->globalData(), structure)
+ : JSDestructibleObject(globalObject->vm(), structure)
{
}
-void InternalFunction::finishCreation(JSGlobalData& globalData, const String& name)
+void InternalFunction::finishCreation(VM& vm, const String& name)
{
- Base::finishCreation(globalData);
+ Base::finishCreation(vm);
ASSERT(inherits(&s_info));
ASSERT(methodTable()->getCallData != InternalFunction::s_info.methodTable.getCallData);
- putDirect(globalData, globalData.propertyNames->name, jsString(&globalData, name), DontDelete | ReadOnly | DontEnum);
+ putDirect(vm, vm.propertyNames->name, jsString(&vm, name), DontDelete | ReadOnly | DontEnum);
}
const String& InternalFunction::name(ExecState* exec)
{
- return asString(getDirect(exec->globalData(), exec->globalData().propertyNames->name))->tryGetValue();
+ return asString(getDirect(exec->vm(), exec->vm().propertyNames->name))->tryGetValue();
}
const String InternalFunction::displayName(ExecState* exec)
{
- JSValue displayName = getDirect(exec->globalData(), exec->globalData().propertyNames->displayName);
+ JSValue displayName = getDirect(exec->vm(), exec->vm().propertyNames->displayName);
if (displayName && isJSString(displayName))
return asString(displayName)->tryGetValue();
diff --git a/Source/JavaScriptCore/runtime/InternalFunction.h b/Source/JavaScriptCore/runtime/InternalFunction.h
index daeebc3..e35f5f9 100644
--- a/Source/JavaScriptCore/runtime/InternalFunction.h
+++ b/Source/JavaScriptCore/runtime/InternalFunction.h
@@ -41,9 +41,9 @@
const String displayName(ExecState*);
const String calculatedDisplayName(ExecState*);
- static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue proto)
+ static Structure* createStructure(VM& vm, JSGlobalObject* globalObject, JSValue proto)
{
- return Structure::create(globalData, globalObject, proto, TypeInfo(ObjectType, StructureFlags), &s_info);
+ return Structure::create(vm, globalObject, proto, TypeInfo(ObjectType, StructureFlags), &s_info);
}
protected:
@@ -51,7 +51,7 @@
JS_EXPORT_PRIVATE InternalFunction(JSGlobalObject*, Structure*);
- JS_EXPORT_PRIVATE void finishCreation(JSGlobalData&, const String& name);
+ JS_EXPORT_PRIVATE void finishCreation(VM&, const String& name);
static CallType getCallData(JSCell*, CallData&);
};
diff --git a/Source/JavaScriptCore/runtime/JSAPIValueWrapper.h b/Source/JavaScriptCore/runtime/JSAPIValueWrapper.h
index 73965e8..f091095 100644
--- a/Source/JavaScriptCore/runtime/JSAPIValueWrapper.h
+++ b/Source/JavaScriptCore/runtime/JSAPIValueWrapper.h
@@ -37,9 +37,9 @@
JSValue value() const { return m_value.get(); }
- static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype)
+ static Structure* createStructure(VM& vm, JSGlobalObject* globalObject, JSValue prototype)
{
- return Structure::create(globalData, globalObject, prototype, TypeInfo(APIValueWrapperType, OverridesVisitChildren | OverridesGetPropertyNames), &s_info);
+ return Structure::create(vm, globalObject, prototype, TypeInfo(APIValueWrapperType, OverridesVisitChildren | OverridesGetPropertyNames), &s_info);
}
static JS_EXPORTDATA const ClassInfo s_info;
@@ -54,14 +54,14 @@
protected:
void finishCreation(ExecState* exec, JSValue value)
{
- Base::finishCreation(exec->globalData());
- m_value.set(exec->globalData(), this, value);
+ Base::finishCreation(exec->vm());
+ m_value.set(exec->vm(), this, value);
ASSERT(!value.isCell());
}
private:
JSAPIValueWrapper(ExecState* exec)
- : JSCell(exec->globalData(), exec->globalData().apiWrapperStructure.get())
+ : JSCell(exec->vm(), exec->vm().apiWrapperStructure.get())
{
}
diff --git a/Source/JavaScriptCore/runtime/JSActivation.cpp b/Source/JavaScriptCore/runtime/JSActivation.cpp
index 6f7ca67..3a3bb50 100644
--- a/Source/JavaScriptCore/runtime/JSActivation.cpp
+++ b/Source/JavaScriptCore/runtime/JSActivation.cpp
@@ -86,7 +86,7 @@
inline bool JSActivation::symbolTablePut(ExecState* exec, PropertyName propertyName, JSValue value, bool shouldThrow)
{
- JSGlobalData& globalData = exec->globalData();
+ VM& vm = exec->vm();
ASSERT(!Heap::heap(value) || Heap::heap(value) == Heap::heap(this));
SymbolTableEntry entry = symbolTable()->inlineGet(propertyName.publicName());
@@ -102,7 +102,7 @@
if (isTornOff() && !isValid(entry))
return false;
- registerAt(entry.getIndex()).set(globalData, this, value);
+ registerAt(entry.getIndex()).set(vm, this, value);
return true;
}
@@ -125,7 +125,7 @@
JSObject::getOwnNonIndexPropertyNames(thisObject, exec, propertyNames, mode);
}
-inline bool JSActivation::symbolTablePutWithAttributes(JSGlobalData& globalData, PropertyName propertyName, JSValue value, unsigned attributes)
+inline bool JSActivation::symbolTablePutWithAttributes(VM& vm, PropertyName propertyName, JSValue value, unsigned attributes)
{
ASSERT(!Heap::heap(value) || Heap::heap(value) == Heap::heap(this));
@@ -138,7 +138,7 @@
return false;
entry.setAttributes(attributes);
- registerAt(entry.getIndex()).set(globalData, this, value);
+ registerAt(entry.getIndex()).set(vm, this, value);
return true;
}
@@ -157,7 +157,7 @@
if (thisObject->symbolTableGet(propertyName, slot))
return true;
- if (JSValue value = thisObject->getDirect(exec->globalData(), propertyName)) {
+ if (JSValue value = thisObject->getDirect(exec->vm(), propertyName)) {
slot.setValue(value);
return true;
}
@@ -201,7 +201,7 @@
// properties are non-standard extensions that other implementations do not
// expose in the activation object.
ASSERT(!thisObject->hasGetterSetterProperties());
- thisObject->putOwnDataProperty(exec->globalData(), propertyName, value, slot);
+ thisObject->putOwnDataProperty(exec->vm(), propertyName, value, slot);
}
// FIXME: Make this function honor ReadOnly (const) and DontEnum
@@ -210,7 +210,7 @@
JSActivation* thisObject = jsCast<JSActivation*>(object);
ASSERT(!Heap::heap(value) || Heap::heap(value) == Heap::heap(thisObject));
- if (thisObject->symbolTablePutWithAttributes(exec->globalData(), propertyName, value, attributes))
+ if (thisObject->symbolTablePutWithAttributes(exec->vm(), propertyName, value, attributes))
return;
// We don't call through to JSObject because __proto__ and getter/setter
@@ -245,7 +245,7 @@
return arguments;
int realArgumentsRegister = unmodifiedArgumentsRegister(argumentsRegister);
- JSValue arguments = JSValue(Arguments::create(callFrame->globalData(), callFrame));
+ JSValue arguments = JSValue(Arguments::create(callFrame->vm(), callFrame));
callFrame->uncheckedR(argumentsRegister) = arguments;
callFrame->uncheckedR(realArgumentsRegister) = arguments;
diff --git a/Source/JavaScriptCore/runtime/JSActivation.h b/Source/JavaScriptCore/runtime/JSActivation.h
index a38a8c4..dfbc0c1 100644
--- a/Source/JavaScriptCore/runtime/JSActivation.h
+++ b/Source/JavaScriptCore/runtime/JSActivation.h
@@ -41,22 +41,22 @@
class JSActivation : public JSVariableObject {
private:
- JSActivation(JSGlobalData& globalData, CallFrame*, SharedSymbolTable*);
+ JSActivation(VM& vm, CallFrame*, SharedSymbolTable*);
public:
typedef JSVariableObject Base;
- static JSActivation* create(JSGlobalData& globalData, CallFrame* callFrame, CodeBlock* codeBlock)
+ static JSActivation* create(VM& vm, CallFrame* callFrame, CodeBlock* codeBlock)
{
SharedSymbolTable* symbolTable = codeBlock->symbolTable();
JSActivation* activation = new (
NotNull,
allocateCell<JSActivation>(
- globalData.heap,
+ vm.heap,
allocationSize(symbolTable)
)
- ) JSActivation(globalData, callFrame, symbolTable);
- activation->finishCreation(globalData);
+ ) JSActivation(vm, callFrame, symbolTable);
+ activation->finishCreation(vm);
return activation;
}
@@ -75,11 +75,11 @@
static JSObject* toThisObject(JSCell*, ExecState*);
- void tearOff(JSGlobalData&);
+ void tearOff(VM&);
static const ClassInfo s_info;
- static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue proto) { return Structure::create(globalData, globalObject, proto, TypeInfo(ActivationObjectType, StructureFlags), &s_info); }
+ static Structure* createStructure(VM& vm, JSGlobalObject* globalObject, JSValue proto) { return Structure::create(vm, globalObject, proto, TypeInfo(ActivationObjectType, StructureFlags), &s_info); }
WriteBarrierBase<Unknown>& registerAt(int) const;
bool isValidIndex(int) const;
@@ -96,7 +96,7 @@
bool symbolTableGet(PropertyName, PropertyDescriptor&);
bool symbolTableGet(PropertyName, PropertySlot&, bool& slotIsWriteable);
bool symbolTablePut(ExecState*, PropertyName, JSValue, bool shouldThrow);
- bool symbolTablePutWithAttributes(JSGlobalData&, PropertyName, JSValue, unsigned attributes);
+ bool symbolTablePutWithAttributes(VM&, PropertyName, JSValue, unsigned attributes);
static JSValue argumentsGetter(ExecState*, JSValue, PropertyName);
NEVER_INLINE PropertySlot::GetValueFunc getArgumentsGetter();
@@ -110,9 +110,9 @@
extern int activationCount;
extern int allTheThingsCount;
- inline JSActivation::JSActivation(JSGlobalData& globalData, CallFrame* callFrame, SharedSymbolTable* symbolTable)
+ inline JSActivation::JSActivation(VM& vm, CallFrame* callFrame, SharedSymbolTable* symbolTable)
: Base(
- globalData,
+ vm,
callFrame->lexicalGlobalObject()->activationStructure(),
callFrame->registers(),
callFrame->scope(),
@@ -149,7 +149,7 @@
return storageOffset() - (symbolTable->captureStart() * sizeof(WriteBarrier<Unknown>));
}
- inline void JSActivation::tearOff(JSGlobalData& globalData)
+ inline void JSActivation::tearOff(VM& vm)
{
ASSERT(!isTornOff());
@@ -159,7 +159,7 @@
int captureEnd = symbolTable()->captureEnd();
for (int i = symbolTable()->captureStart(); i < captureEnd; ++i)
- dst[i].set(globalData, this, src[i].get());
+ dst[i].set(vm, this, src[i].get());
m_registers = dst;
ASSERT(isTornOff());
diff --git a/Source/JavaScriptCore/runtime/JSArray.cpp b/Source/JavaScriptCore/runtime/JSArray.cpp
index 5f81229..f97cced 100644
--- a/Source/JavaScriptCore/runtime/JSArray.cpp
+++ b/Source/JavaScriptCore/runtime/JSArray.cpp
@@ -48,10 +48,10 @@
const ClassInfo JSArray::s_info = {"Array", &JSNonFinalObject::s_info, 0, 0, CREATE_METHOD_TABLE(JSArray)};
-Butterfly* createArrayButterflyInDictionaryIndexingMode(JSGlobalData& globalData, unsigned initialLength)
+Butterfly* createArrayButterflyInDictionaryIndexingMode(VM& vm, unsigned initialLength)
{
Butterfly* butterfly = Butterfly::create(
- globalData, 0, 0, true, IndexingHeader(), ArrayStorage::sizeFor(0));
+ vm, 0, 0, true, IndexingHeader(), ArrayStorage::sizeFor(0));
ArrayStorage* storage = butterfly->arrayStorage();
storage->setLength(initialLength);
storage->setVectorLength(0);
@@ -67,7 +67,7 @@
if (!isLengthWritable() || writable)
return;
- enterDictionaryIndexingMode(exec->globalData());
+ enterDictionaryIndexingMode(exec->vm());
SparseArrayValueMap* map = arrayStorage()->m_sparseMap.get();
ASSERT(map);
@@ -244,9 +244,9 @@
}
// This method makes room in the vector, but leaves the new space for count slots uncleared.
-bool JSArray::unshiftCountSlowCase(JSGlobalData& globalData, bool addToFront, unsigned count)
+bool JSArray::unshiftCountSlowCase(VM& vm, bool addToFront, unsigned count)
{
- ArrayStorage* storage = ensureArrayStorage(globalData);
+ ArrayStorage* storage = ensureArrayStorage(vm);
Butterfly* butterfly = storage->butterfly();
unsigned propertyCapacity = structure()->outOfLineCapacity();
unsigned propertySize = structure()->outOfLineSize();
@@ -286,7 +286,7 @@
newStorageCapacity = currentCapacity;
} else {
size_t newSize = Butterfly::totalSize(0, propertyCapacity, true, ArrayStorage::sizeFor(desiredCapacity));
- if (!globalData.heap.tryAllocateStorage(newSize, &newAllocBase))
+ if (!vm.heap.tryAllocateStorage(newSize, &newAllocBase))
return false;
newStorageCapacity = desiredCapacity;
}
@@ -408,9 +408,9 @@
if (newLength >= MIN_SPARSE_ARRAY_INDEX) {
return setLengthWithArrayStorage(
exec, newLength, throwException,
- convertContiguousToArrayStorage(exec->globalData()));
+ convertContiguousToArrayStorage(exec->vm()));
}
- createInitialUndecided(exec->globalData(), newLength);
+ createInitialUndecided(exec->vm(), newLength);
return true;
case ArrayWithUndecided:
@@ -424,10 +424,10 @@
&& !isDenseEnoughForVector(newLength, countElements()))) {
return setLengthWithArrayStorage(
exec, newLength, throwException,
- ensureArrayStorage(exec->globalData()));
+ ensureArrayStorage(exec->vm()));
}
if (newLength > m_butterfly->publicLength()) {
- ensureLength(exec->globalData(), newLength);
+ ensureLength(exec->vm(), newLength);
return true;
}
if (structure()->indexingType() == ArrayWithDouble) {
@@ -549,19 +549,19 @@
{
switch (structure()->indexingType()) {
case ArrayClass: {
- createInitialUndecided(exec->globalData(), 0);
+ createInitialUndecided(exec->vm(), 0);
// Fall through.
}
case ArrayWithUndecided: {
- convertUndecidedForValue(exec->globalData(), value);
+ convertUndecidedForValue(exec->vm(), value);
push(exec, value);
return;
}
case ArrayWithInt32: {
if (!value.isInt32()) {
- convertInt32ForValue(exec->globalData(), value);
+ convertInt32ForValue(exec->vm(), value);
push(exec, value);
return;
}
@@ -589,7 +589,7 @@
unsigned length = m_butterfly->publicLength();
ASSERT(length <= m_butterfly->vectorLength());
if (length < m_butterfly->vectorLength()) {
- m_butterfly->contiguous()[length].set(exec->globalData(), this, value);
+ m_butterfly->contiguous()[length].set(exec->vm(), this, value);
m_butterfly->setPublicLength(length + 1);
return;
}
@@ -607,13 +607,13 @@
case ArrayWithDouble: {
if (!value.isNumber()) {
- convertDoubleToContiguous(exec->globalData());
+ convertDoubleToContiguous(exec->vm());
push(exec, value);
return;
}
double valueAsDouble = value.asNumber();
if (valueAsDouble != valueAsDouble) {
- convertDoubleToContiguous(exec->globalData());
+ convertDoubleToContiguous(exec->vm());
push(exec, value);
return;
}
@@ -653,7 +653,7 @@
// Fast case - push within vector, always update m_length & m_numValuesInVector.
unsigned length = storage->length();
if (length < storage->vectorLength()) {
- storage->m_vector[length].set(exec->globalData(), this, value);
+ storage->m_vector[length].set(exec->vm(), this, value);
storage->setLength(length + 1);
++storage->m_numValuesInVector;
return;
@@ -754,7 +754,7 @@
// We may have to walk the entire array to do the shift. We're willing to do
// so only if it's not horribly slow.
if (oldLength - (startIndex + count) >= MIN_SPARSE_ARRAY_INDEX)
- return shiftCountWithArrayStorage(startIndex, count, ensureArrayStorage(exec->globalData()));
+ return shiftCountWithArrayStorage(startIndex, count, ensureArrayStorage(exec->vm()));
unsigned end = oldLength - count;
for (unsigned i = startIndex; i < end; ++i) {
@@ -768,7 +768,7 @@
// about holes (at least for now), but it can detect them quickly. So
// we convert to array storage and then allow the array storage path to
// figure it out.
- return shiftCountWithArrayStorage(startIndex, count, ensureArrayStorage(exec->globalData()));
+ return shiftCountWithArrayStorage(startIndex, count, ensureArrayStorage(exec->vm()));
}
// No need for a barrier since we're just moving data around in the same vector.
// This is in line with our standing assumption that we won't have a deletion
@@ -789,7 +789,7 @@
// We may have to walk the entire array to do the shift. We're willing to do
// so only if it's not horribly slow.
if (oldLength - (startIndex + count) >= MIN_SPARSE_ARRAY_INDEX)
- return shiftCountWithArrayStorage(startIndex, count, ensureArrayStorage(exec->globalData()));
+ return shiftCountWithArrayStorage(startIndex, count, ensureArrayStorage(exec->vm()));
unsigned end = oldLength - count;
for (unsigned i = startIndex; i < end; ++i) {
@@ -803,7 +803,7 @@
// about holes (at least for now), but it can detect them quickly. So
// we convert to array storage and then allow the array storage path to
// figure it out.
- return shiftCountWithArrayStorage(startIndex, count, ensureArrayStorage(exec->globalData()));
+ return shiftCountWithArrayStorage(startIndex, count, ensureArrayStorage(exec->vm()));
}
// No need for a barrier since we're just moving data around in the same vector.
// This is in line with our standing assumption that we won't have a deletion
@@ -850,7 +850,7 @@
storage->setVectorLength(vectorLength + count);
} else if (!moveFront && vectorLength - length >= count)
storage = storage->butterfly()->arrayStorage();
- else if (unshiftCountSlowCase(exec->globalData(), moveFront, count))
+ else if (unshiftCountSlowCase(exec->vm(), moveFront, count))
storage = arrayStorage();
else {
throwOutOfMemoryError(exec);
@@ -886,14 +886,14 @@
// We may have to walk the entire array to do the unshift. We're willing to do so
// only if it's not horribly slow.
if (oldLength - startIndex >= MIN_SPARSE_ARRAY_INDEX)
- return unshiftCountWithArrayStorage(exec, startIndex, count, ensureArrayStorage(exec->globalData()));
+ return unshiftCountWithArrayStorage(exec, startIndex, count, ensureArrayStorage(exec->vm()));
- ensureLength(exec->globalData(), oldLength + count);
+ ensureLength(exec->vm(), oldLength + count);
for (unsigned i = oldLength; i-- > startIndex;) {
JSValue v = m_butterfly->contiguous()[i].get();
if (UNLIKELY(!v))
- return unshiftCountWithArrayStorage(exec, startIndex, count, ensureArrayStorage(exec->globalData()));
+ return unshiftCountWithArrayStorage(exec, startIndex, count, ensureArrayStorage(exec->vm()));
m_butterfly->contiguous()[i + count].setWithoutWriteBarrier(v);
}
@@ -911,14 +911,14 @@
// We may have to walk the entire array to do the unshift. We're willing to do so
// only if it's not horribly slow.
if (oldLength - startIndex >= MIN_SPARSE_ARRAY_INDEX)
- return unshiftCountWithArrayStorage(exec, startIndex, count, ensureArrayStorage(exec->globalData()));
+ return unshiftCountWithArrayStorage(exec, startIndex, count, ensureArrayStorage(exec->vm()));
- ensureLength(exec->globalData(), oldLength + count);
+ ensureLength(exec->vm(), oldLength + count);
for (unsigned i = oldLength; i-- > startIndex;) {
double v = m_butterfly->contiguousDouble()[i];
if (UNLIKELY(v != v))
- return unshiftCountWithArrayStorage(exec, startIndex, count, ensureArrayStorage(exec->globalData()));
+ return unshiftCountWithArrayStorage(exec, startIndex, count, ensureArrayStorage(exec->vm()));
m_butterfly->contiguousDouble()[i + count] = v;
}
@@ -1064,9 +1064,9 @@
template <IndexingType> struct ContiguousTypeAccessor {
typedef WriteBarrier<Unknown> Type;
static JSValue getAsValue(ContiguousData<Type> data, size_t i) { return data[i].get(); }
- static void setWithValue(JSGlobalData& globalData, JSArray* thisValue, ContiguousData<Type> data, size_t i, JSValue value)
+ static void setWithValue(VM& vm, JSArray* thisValue, ContiguousData<Type> data, size_t i, JSValue value)
{
- data[i].set(globalData, thisValue, value);
+ data[i].set(vm, thisValue, value);
}
static void replaceDataReference(ContiguousData<Type>* outData, ContiguousJSValues inData)
{
@@ -1077,7 +1077,7 @@
template <> struct ContiguousTypeAccessor<ArrayWithDouble> {
typedef double Type;
static JSValue getAsValue(ContiguousData<Type> data, size_t i) { ASSERT(data[i] == data[i]); return JSValue(JSValue::EncodeAsDouble, data[i]); }
- static void setWithValue(JSGlobalData&, JSArray*, ContiguousData<Type> data, size_t i, JSValue value)
+ static void setWithValue(VM&, JSArray*, ContiguousData<Type> data, size_t i, JSValue value)
{
data[i] = value.asNumber();
}
@@ -1094,7 +1094,7 @@
if (!relevantLength)
return;
- JSGlobalData& globalData = exec->globalData();
+ VM& vm = exec->vm();
// Converting JavaScript values to strings can be expensive, so we do it once up front and sort based on that.
// This is a considerable improvement over doing it twice per comparison, though it requires a large temporary
@@ -1151,12 +1151,12 @@
case ArrayWithInt32:
case ArrayWithDouble:
case ArrayWithContiguous:
- ensureLength(globalData, relevantLength);
+ ensureLength(vm, relevantLength);
break;
case ArrayWithArrayStorage:
if (arrayStorage()->vectorLength() < relevantLength) {
- increaseVectorLength(exec->globalData(), relevantLength);
+ increaseVectorLength(exec->vm(), relevantLength);
ContiguousTypeAccessor<indexingType>::replaceDataReference(&data, arrayStorage()->vector());
}
if (arrayStorage()->length() < relevantLength)
@@ -1168,7 +1168,7 @@
}
for (size_t i = 0; i < relevantLength; i++)
- ContiguousTypeAccessor<indexingType>::setWithValue(globalData, this, data, i, values[i].first);
+ ContiguousTypeAccessor<indexingType>::setWithValue(vm, this, data, i, values[i].first);
Heap::heap(this)->popTempSortVector(&values);
}
@@ -1387,13 +1387,13 @@
// Copy the values back into m_storage.
AVLTree<AVLTreeAbstractorForArrayCompare, 44>::Iterator iter;
iter.start_iter_least(tree);
- JSGlobalData& globalData = exec->globalData();
+ VM& vm = exec->vm();
for (unsigned i = 0; i < elementsToExtractThreshold; ++i) {
ASSERT(i < butterfly()->vectorLength());
if (structure()->indexingType() == ArrayWithDouble)
butterfly()->contiguousDouble()[i] = tree.abstractor().m_nodes[*iter].value.asNumber();
else
- currentIndexingData()[i].set(globalData, this, tree.abstractor().m_nodes[*iter].value);
+ currentIndexingData()[i].set(vm, this, tree.abstractor().m_nodes[*iter].value);
++iter;
}
// Put undefined values back in.
diff --git a/Source/JavaScriptCore/runtime/JSArray.h b/Source/JavaScriptCore/runtime/JSArray.h
index 5719002..af81d2e 100644
--- a/Source/JavaScriptCore/runtime/JSArray.h
+++ b/Source/JavaScriptCore/runtime/JSArray.h
@@ -39,19 +39,19 @@
typedef JSNonFinalObject Base;
protected:
- explicit JSArray(JSGlobalData& globalData, Structure* structure, Butterfly* butterfly)
- : JSNonFinalObject(globalData, structure, butterfly)
+ explicit JSArray(VM& vm, Structure* structure, Butterfly* butterfly)
+ : JSNonFinalObject(vm, structure, butterfly)
{
}
public:
- static JSArray* create(JSGlobalData&, Structure*, unsigned initialLength = 0);
+ static JSArray* create(VM&, Structure*, unsigned initialLength = 0);
// tryCreateUninitialized is used for fast construction of arrays whose size and
// contents are known at time of creation. Clients of this interface must:
// - null-check the result (indicating out of memory, or otherwise unable to allocate vector).
// - call 'initializeIndex' for all properties in sequence, for 0 <= i < initialLength.
- static JSArray* tryCreateUninitialized(JSGlobalData&, Structure*, unsigned initialLength);
+ static JSArray* tryCreateUninitialized(VM&, Structure*, unsigned initialLength);
JS_EXPORT_PRIVATE static bool defineOwnProperty(JSObject*, ExecState*, PropertyName, PropertyDescriptor&, bool throwException);
@@ -84,7 +84,7 @@
bool shiftCountForShift(ExecState* exec, unsigned startIndex, unsigned count)
{
- return shiftCountWithArrayStorage(startIndex, count, ensureArrayStorage(exec->globalData()));
+ return shiftCountWithArrayStorage(startIndex, count, ensureArrayStorage(exec->vm()));
}
bool shiftCountForSplice(ExecState* exec, unsigned startIndex, unsigned count)
{
@@ -106,7 +106,7 @@
bool unshiftCountForShift(ExecState* exec, unsigned startIndex, unsigned count)
{
- return unshiftCountWithArrayStorage(exec, startIndex, count, ensureArrayStorage(exec->globalData()));
+ return unshiftCountWithArrayStorage(exec, startIndex, count, ensureArrayStorage(exec->vm()));
}
bool unshiftCountForSplice(ExecState* exec, unsigned startIndex, unsigned count)
{
@@ -129,9 +129,9 @@
void fillArgList(ExecState*, MarkedArgumentBuffer&);
void copyToArguments(ExecState*, CallFrame*, uint32_t length);
- static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype, IndexingType indexingType)
+ static Structure* createStructure(VM& vm, JSGlobalObject* globalObject, JSValue prototype, IndexingType indexingType)
{
- return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), &s_info, indexingType);
+ return Structure::create(vm, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), &s_info, indexingType);
}
protected:
@@ -156,7 +156,7 @@
bool unshiftCountWithAnyIndexingType(ExecState*, unsigned startIndex, unsigned count);
bool unshiftCountWithArrayStorage(ExecState*, unsigned startIndex, unsigned count, ArrayStorage*);
- bool unshiftCountSlowCase(JSGlobalData&, bool, unsigned);
+ bool unshiftCountSlowCase(VM&, bool, unsigned);
template<IndexingType indexingType>
void sortNumericVector(ExecState*, JSValue compareFunction, CallType, const CallData&);
@@ -174,21 +174,21 @@
void compactForSorting(unsigned& numDefined, unsigned& newRelevantLength);
};
-inline Butterfly* createContiguousArrayButterfly(JSGlobalData& globalData, unsigned length, unsigned& vectorLength)
+inline Butterfly* createContiguousArrayButterfly(VM& vm, unsigned length, unsigned& vectorLength)
{
IndexingHeader header;
vectorLength = std::max(length, BASE_VECTOR_LEN);
header.setVectorLength(vectorLength);
header.setPublicLength(length);
Butterfly* result = Butterfly::create(
- globalData, 0, 0, true, header, vectorLength * sizeof(EncodedJSValue));
+ vm, 0, 0, true, header, vectorLength * sizeof(EncodedJSValue));
return result;
}
-inline Butterfly* createArrayButterfly(JSGlobalData& globalData, unsigned initialLength)
+inline Butterfly* createArrayButterfly(VM& vm, unsigned initialLength)
{
Butterfly* butterfly = Butterfly::create(
- globalData, 0, 0, true, baseIndexingHeaderForArray(initialLength), ArrayStorage::sizeFor(BASE_VECTOR_LEN));
+ vm, 0, 0, true, baseIndexingHeaderForArray(initialLength), ArrayStorage::sizeFor(BASE_VECTOR_LEN));
ArrayStorage* storage = butterfly->arrayStorage();
storage->m_indexBias = 0;
storage->m_sparseMap.clear();
@@ -196,9 +196,9 @@
return butterfly;
}
-Butterfly* createArrayButterflyInDictionaryIndexingMode(JSGlobalData&, unsigned initialLength);
+Butterfly* createArrayButterflyInDictionaryIndexingMode(VM&, unsigned initialLength);
-inline JSArray* JSArray::create(JSGlobalData& globalData, Structure* structure, unsigned initialLength)
+inline JSArray* JSArray::create(VM& vm, Structure* structure, unsigned initialLength)
{
Butterfly* butterfly;
if (LIKELY(!hasArrayStorage(structure->indexingType()))) {
@@ -208,7 +208,7 @@
|| hasDouble(structure->indexingType())
|| hasContiguous(structure->indexingType()));
unsigned vectorLength;
- butterfly = createContiguousArrayButterfly(globalData, initialLength, vectorLength);
+ butterfly = createContiguousArrayButterfly(vm, initialLength, vectorLength);
ASSERT(initialLength < MIN_SPARSE_ARRAY_INDEX);
if (hasDouble(structure->indexingType())) {
for (unsigned i = 0; i < vectorLength; ++i)
@@ -218,14 +218,14 @@
ASSERT(
structure->indexingType() == ArrayWithSlowPutArrayStorage
|| structure->indexingType() == ArrayWithArrayStorage);
- butterfly = createArrayButterfly(globalData, initialLength);
+ butterfly = createArrayButterfly(vm, initialLength);
}
- JSArray* array = new (NotNull, allocateCell<JSArray>(globalData.heap)) JSArray(globalData, structure, butterfly);
- array->finishCreation(globalData);
+ JSArray* array = new (NotNull, allocateCell<JSArray>(vm.heap)) JSArray(vm, structure, butterfly);
+ array->finishCreation(vm);
return array;
}
-inline JSArray* JSArray::tryCreateUninitialized(JSGlobalData& globalData, Structure* structure, unsigned initialLength)
+inline JSArray* JSArray::tryCreateUninitialized(VM& vm, Structure* structure, unsigned initialLength)
{
unsigned vectorLength = std::max(BASE_VECTOR_LEN, initialLength);
if (vectorLength > MAX_STORAGE_VECTOR_LENGTH)
@@ -240,7 +240,7 @@
|| hasContiguous(structure->indexingType()));
void* temp;
- if (!globalData.heap.tryAllocateStorage(Butterfly::totalSize(0, 0, true, vectorLength * sizeof(EncodedJSValue)), &temp))
+ if (!vm.heap.tryAllocateStorage(Butterfly::totalSize(0, 0, true, vectorLength * sizeof(EncodedJSValue)), &temp))
return 0;
butterfly = Butterfly::fromBase(temp, 0, 0);
butterfly->setVectorLength(vectorLength);
@@ -251,7 +251,7 @@
}
} else {
void* temp;
- if (!globalData.heap.tryAllocateStorage(Butterfly::totalSize(0, 0, true, ArrayStorage::sizeFor(vectorLength)), &temp))
+ if (!vm.heap.tryAllocateStorage(Butterfly::totalSize(0, 0, true, ArrayStorage::sizeFor(vectorLength)), &temp))
return 0;
butterfly = Butterfly::fromBase(temp, 0, 0);
*butterfly->indexingHeader() = indexingHeaderForArray(initialLength, vectorLength);
@@ -261,8 +261,8 @@
storage->m_numValuesInVector = initialLength;
}
- JSArray* array = new (NotNull, allocateCell<JSArray>(globalData.heap)) JSArray(globalData, structure, butterfly);
- array->finishCreation(globalData);
+ JSArray* array = new (NotNull, allocateCell<JSArray>(vm.heap)) JSArray(vm, structure, butterfly);
+ array->finishCreation(vm);
return array;
}
@@ -284,9 +284,9 @@
inline JSArray* constructArray(ExecState* exec, Structure* arrayStructure, const ArgList& values)
{
- JSGlobalData& globalData = exec->globalData();
+ VM& vm = exec->vm();
unsigned length = values.size();
- JSArray* array = JSArray::tryCreateUninitialized(globalData, arrayStructure, length);
+ JSArray* array = JSArray::tryCreateUninitialized(vm, arrayStructure, length);
// FIXME: we should probably throw an out of memory error here, but
// when making this change we should check that all clients of this
@@ -294,14 +294,14 @@
RELEASE_ASSERT(array);
for (unsigned i = 0; i < length; ++i)
- array->initializeIndex(globalData, i, values.at(i));
+ array->initializeIndex(vm, i, values.at(i));
return array;
}
inline JSArray* constructArray(ExecState* exec, Structure* arrayStructure, const JSValue* values, unsigned length)
{
- JSGlobalData& globalData = exec->globalData();
- JSArray* array = JSArray::tryCreateUninitialized(globalData, arrayStructure, length);
+ VM& vm = exec->vm();
+ JSArray* array = JSArray::tryCreateUninitialized(vm, arrayStructure, length);
// FIXME: we should probably throw an out of memory error here, but
// when making this change we should check that all clients of this
@@ -309,7 +309,7 @@
RELEASE_ASSERT(array);
for (unsigned i = 0; i < length; ++i)
- array->initializeIndex(globalData, i, values[i]);
+ array->initializeIndex(vm, i, values[i]);
return array;
}
diff --git a/Source/JavaScriptCore/runtime/JSBoundFunction.cpp b/Source/JavaScriptCore/runtime/JSBoundFunction.cpp
index 0aafe1f..5c63da4 100644
--- a/Source/JavaScriptCore/runtime/JSBoundFunction.cpp
+++ b/Source/JavaScriptCore/runtime/JSBoundFunction.cpp
@@ -80,7 +80,7 @@
ConstructType constructType = JSC::getConstructData(targetFunction, constructData);
bool canConstruct = constructType != ConstructTypeNone;
- NativeExecutable* executable = exec->globalData().getHostFunction(boundFunctionCall, canConstruct ? boundFunctionConstruct : callHostFunctionAsConstructor);
+ NativeExecutable* executable = exec->vm().getHostFunction(boundFunctionCall, canConstruct ? boundFunctionConstruct : callHostFunctionAsConstructor);
JSBoundFunction* function = new (NotNull, allocateCell<JSBoundFunction>(*exec->heap())) JSBoundFunction(exec, globalObject, globalObject->boundFunctionStructure(), targetFunction, boundThis, boundArgs);
function->finishCreation(exec, executable, length, name);
@@ -99,9 +99,9 @@
JSBoundFunction::JSBoundFunction(ExecState* exec, JSGlobalObject* globalObject, Structure* structure, JSObject* targetFunction, JSValue boundThis, JSValue boundArgs)
: Base(exec, globalObject, structure)
- , m_targetFunction(exec->globalData(), this, targetFunction)
- , m_boundThis(exec->globalData(), this, boundThis)
- , m_boundArgs(exec->globalData(), this, boundArgs)
+ , m_targetFunction(exec->vm(), this, targetFunction)
+ , m_boundThis(exec->vm(), this, boundThis)
+ , m_boundArgs(exec->vm(), this, boundArgs)
{
}
diff --git a/Source/JavaScriptCore/runtime/JSBoundFunction.h b/Source/JavaScriptCore/runtime/JSBoundFunction.h
index 88602194..3378d40 100644
--- a/Source/JavaScriptCore/runtime/JSBoundFunction.h
+++ b/Source/JavaScriptCore/runtime/JSBoundFunction.h
@@ -47,10 +47,10 @@
JSValue boundThis() { return m_boundThis.get(); }
JSValue boundArgs() { return m_boundArgs.get(); }
- static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype)
+ static Structure* createStructure(VM& vm, JSGlobalObject* globalObject, JSValue prototype)
{
ASSERT(globalObject);
- return Structure::create(globalData, globalObject, prototype, TypeInfo(JSFunctionType, StructureFlags), &s_info);
+ return Structure::create(vm, globalObject, prototype, TypeInfo(JSFunctionType, StructureFlags), &s_info);
}
static const ClassInfo s_info;
diff --git a/Source/JavaScriptCore/runtime/JSCJSValue.cpp b/Source/JavaScriptCore/runtime/JSCJSValue.cpp
index 29161d8..627e9e0 100644
--- a/Source/JavaScriptCore/runtime/JSCJSValue.cpp
+++ b/Source/JavaScriptCore/runtime/JSCJSValue.cpp
@@ -112,7 +112,7 @@
// ECMA 8.7.2
void JSValue::putToPrimitive(ExecState* exec, PropertyName propertyName, JSValue value, PutPropertySlot& slot)
{
- JSGlobalData& globalData = exec->globalData();
+ VM& vm = exec->vm();
unsigned index = propertyName.asIndex();
if (index != PropertyName::NotAnIndex) {
@@ -137,7 +137,7 @@
for (; ; obj = asObject(prototype)) {
unsigned attributes;
JSCell* specificValue;
- PropertyOffset offset = obj->structure()->get(globalData, propertyName, attributes, specificValue);
+ PropertyOffset offset = obj->structure()->get(vm, propertyName, attributes, specificValue);
if (offset != invalidOffset) {
if (attributes & ReadOnly) {
if (slot.isStrictMode())
@@ -295,20 +295,20 @@
JSString* JSValue::toStringSlowCase(ExecState* exec) const
{
- JSGlobalData& globalData = exec->globalData();
+ VM& vm = exec->vm();
ASSERT(!isString());
if (isInt32())
- return jsString(&globalData, globalData.numericStrings.add(asInt32()));
+ return jsString(&vm, vm.numericStrings.add(asInt32()));
if (isDouble())
- return jsString(&globalData, globalData.numericStrings.add(asDouble()));
+ return jsString(&vm, vm.numericStrings.add(asDouble()));
if (isTrue())
- return globalData.smallStrings.trueString();
+ return vm.smallStrings.trueString();
if (isFalse())
- return globalData.smallStrings.falseString();
+ return vm.smallStrings.falseString();
if (isNull())
- return globalData.smallStrings.nullString();
+ return vm.smallStrings.nullString();
if (isUndefined())
- return globalData.smallStrings.undefinedString();
+ return vm.smallStrings.undefinedString();
ASSERT(isCell());
JSValue value = asCell()->toPrimitive(exec, PreferString);
diff --git a/Source/JavaScriptCore/runtime/JSCJSValue.h b/Source/JavaScriptCore/runtime/JSCJSValue.h
index cc222e3..4dac6ff 100644
--- a/Source/JavaScriptCore/runtime/JSCJSValue.h
+++ b/Source/JavaScriptCore/runtime/JSCJSValue.h
@@ -43,7 +43,7 @@
class ExecState;
class JSCell;
-class JSGlobalData;
+class VM;
class JSGlobalObject;
class JSObject;
class JSString;
diff --git a/Source/JavaScriptCore/runtime/JSCell.h b/Source/JavaScriptCore/runtime/JSCell.h
index 5342288..eb5d5ec 100644
--- a/Source/JavaScriptCore/runtime/JSCell.h
+++ b/Source/JavaScriptCore/runtime/JSCell.h
@@ -65,7 +65,7 @@
JSCell(CreatingEarlyCellTag);
protected:
- JSCell(JSGlobalData&, Structure*);
+ JSCell(VM&, Structure*);
JS_EXPORT_PRIVATE static void destroy(JSCell*);
public:
@@ -78,7 +78,7 @@
bool isAPIValueWrapper() const;
Structure* structure() const;
- void setStructure(JSGlobalData&, Structure*);
+ void setStructure(VM&, Structure*);
void clearStructure() { m_structure.clear(); }
const char* className();
@@ -141,8 +141,8 @@
static const TypedArrayType TypedArrayStorageType = TypedArrayNone;
protected:
- void finishCreation(JSGlobalData&);
- void finishCreation(JSGlobalData&, Structure*, CreatingEarlyCellTag);
+ void finishCreation(VM&);
+ void finishCreation(VM&, Structure*, CreatingEarlyCellTag);
// Base implementation; for non-object classes implements getPropertySlot.
static bool getOwnPropertySlot(JSCell*, ExecState*, PropertyName, PropertySlot&);
diff --git a/Source/JavaScriptCore/runtime/JSCellInlines.h b/Source/JavaScriptCore/runtime/JSCellInlines.h
index c87a02e..8ed5f63 100644
--- a/Source/JavaScriptCore/runtime/JSCellInlines.h
+++ b/Source/JavaScriptCore/runtime/JSCellInlines.h
@@ -39,32 +39,32 @@
{
}
-inline JSCell::JSCell(JSGlobalData& globalData, Structure* structure)
- : m_structure(globalData, this, structure)
+inline JSCell::JSCell(VM& vm, Structure* structure)
+ : m_structure(vm, this, structure)
{
}
-inline void JSCell::finishCreation(JSGlobalData& globalData)
+inline void JSCell::finishCreation(VM& vm)
{
#if ENABLE(GC_VALIDATION)
- ASSERT(globalData.isInitializingObject());
- globalData.setInitializingObjectClass(0);
+ ASSERT(vm.isInitializingObject());
+ vm.setInitializingObjectClass(0);
#else
- UNUSED_PARAM(globalData);
+ UNUSED_PARAM(vm);
#endif
ASSERT(m_structure);
}
-inline void JSCell::finishCreation(JSGlobalData& globalData, Structure* structure, CreatingEarlyCellTag)
+inline void JSCell::finishCreation(VM& vm, Structure* structure, CreatingEarlyCellTag)
{
#if ENABLE(GC_VALIDATION)
- ASSERT(globalData.isInitializingObject());
- globalData.setInitializingObjectClass(0);
+ ASSERT(vm.isInitializingObject());
+ vm.setInitializingObjectClass(0);
if (structure)
#endif
- m_structure.setEarlyValue(globalData, this, structure);
+ m_structure.setEarlyValue(vm, this, structure);
// Very first set of allocations won't have a real structure.
- ASSERT(m_structure || !globalData.structureStructure);
+ ASSERT(m_structure || !vm.structureStructure);
}
inline Structure* JSCell::structure() const
@@ -84,8 +84,8 @@
{
ASSERT(size >= sizeof(T));
#if ENABLE(GC_VALIDATION)
- ASSERT(!heap.globalData()->isInitializingObject());
- heap.globalData()->setInitializingObjectClass(&T::s_info);
+ ASSERT(!heap.vm()->isInitializingObject());
+ heap.vm()->setInitializingObjectClass(&T::s_info);
#endif
JSCell* result = 0;
if (T::needsDestruction && T::hasImmortalStructure)
@@ -134,14 +134,14 @@
return m_structure->typeInfo().type() == APIValueWrapperType;
}
-inline void JSCell::setStructure(JSGlobalData& globalData, Structure* structure)
+inline void JSCell::setStructure(VM& vm, Structure* structure)
{
ASSERT(structure->typeInfo().overridesVisitChildren() == this->structure()->typeInfo().overridesVisitChildren());
ASSERT(structure->classInfo() == m_structure->classInfo());
ASSERT(!m_structure
|| m_structure->transitionWatchpointSetHasBeenInvalidated()
|| m_structure.get() == structure);
- m_structure.set(globalData, this, structure);
+ m_structure.set(vm, this, structure);
}
inline const MethodTable* JSCell::methodTableForDestruction() const
@@ -177,8 +177,8 @@
{
if (!structure()->typeInfo().overridesGetOwnPropertySlot() && !structure()->hasGetterSetterProperties()) {
PropertyOffset offset = name.impl()->hasHash()
- ? structure()->get(exec->globalData(), Identifier(exec, name))
- : structure()->get(exec->globalData(), name);
+ ? structure()->get(exec->vm(), Identifier(exec, name))
+ : structure()->get(exec->vm(), name);
if (offset != invalidOffset)
return asObject(this)->locationForOffset(offset)->get();
}
diff --git a/Source/JavaScriptCore/runtime/JSDateMath.cpp b/Source/JavaScriptCore/runtime/JSDateMath.cpp
index 3a0b352..4576352 100644
--- a/Source/JavaScriptCore/runtime/JSDateMath.cpp
+++ b/Source/JavaScriptCore/runtime/JSDateMath.cpp
@@ -134,7 +134,7 @@
// If this function is called with NaN it returns NaN.
static double getDSTOffset(ExecState* exec, double ms, double utcOffset)
{
- DSTOffsetCache& cache = exec->globalData().dstOffsetCache;
+ DSTOffsetCache& cache = exec->vm().dstOffsetCache;
double start = cache.start;
double end = cache.end;
@@ -195,11 +195,11 @@
*/
double getUTCOffset(ExecState* exec)
{
- double utcOffset = exec->globalData().cachedUTCOffset;
+ double utcOffset = exec->vm().cachedUTCOffset;
if (!std::isnan(utcOffset))
return utcOffset;
- exec->globalData().cachedUTCOffset = calculateUTCOffset();
- return exec->globalData().cachedUTCOffset;
+ exec->vm().cachedUTCOffset = calculateUTCOffset();
+ return exec->vm().cachedUTCOffset;
}
double gregorianDateTimeToMS(ExecState* exec, const GregorianDateTime& t, double milliSeconds, bool inputIsUTC)
@@ -261,13 +261,13 @@
double parseDate(ExecState* exec, const String& date)
{
- if (date == exec->globalData().cachedDateString)
- return exec->globalData().cachedDateStringValue;
+ if (date == exec->vm().cachedDateString)
+ return exec->vm().cachedDateStringValue;
double value = parseES5DateFromNullTerminatedCharacters(date.utf8().data());
if (std::isnan(value))
value = parseDateFromNullTerminatedCharacters(exec, date.utf8().data());
- exec->globalData().cachedDateString = date;
- exec->globalData().cachedDateStringValue = value;
+ exec->vm().cachedDateString = date;
+ exec->vm().cachedDateStringValue = value;
return value;
}
diff --git a/Source/JavaScriptCore/runtime/JSDestructibleObject.h b/Source/JavaScriptCore/runtime/JSDestructibleObject.h
index 7eb4548..27dc06d 100644
--- a/Source/JavaScriptCore/runtime/JSDestructibleObject.h
+++ b/Source/JavaScriptCore/runtime/JSDestructibleObject.h
@@ -18,8 +18,8 @@
static ptrdiff_t classInfoOffset() { return OBJECT_OFFSETOF(JSDestructibleObject, m_classInfo); }
protected:
- JSDestructibleObject(JSGlobalData& globalData, Structure* structure, Butterfly* butterfly = 0)
- : JSNonFinalObject(globalData, structure, butterfly)
+ JSDestructibleObject(VM& vm, Structure* structure, Butterfly* butterfly = 0)
+ : JSNonFinalObject(vm, structure, butterfly)
, m_classInfo(structure->classInfo())
{
ASSERT(m_classInfo);
diff --git a/Source/JavaScriptCore/runtime/JSFunction.cpp b/Source/JavaScriptCore/runtime/JSFunction.cpp
index ded8e88..3b89f6d 100644
--- a/Source/JavaScriptCore/runtime/JSFunction.cpp
+++ b/Source/JavaScriptCore/runtime/JSFunction.cpp
@@ -63,12 +63,12 @@
#if !ENABLE(JIT)
UNUSED_PARAM(intrinsic);
#else
- if (intrinsic != NoIntrinsic && exec->globalData().canUseJIT()) {
+ if (intrinsic != NoIntrinsic && exec->vm().canUseJIT()) {
ASSERT(nativeConstructor == callHostFunctionAsConstructor);
- executable = exec->globalData().getHostFunction(nativeFunction, intrinsic);
+ executable = exec->vm().getHostFunction(nativeFunction, intrinsic);
} else
#endif
- executable = exec->globalData().getHostFunction(nativeFunction, nativeConstructor);
+ executable = exec->vm().getHostFunction(nativeFunction, nativeConstructor);
JSFunction* function = new (NotNull, allocateCell<JSFunction>(*exec->heap())) JSFunction(exec, globalObject, globalObject->functionStructure());
// Can't do this during initialization because getHostFunction might do a GC allocation.
@@ -82,9 +82,9 @@
}
JSFunction::JSFunction(ExecState* exec, JSGlobalObject* globalObject, Structure* structure)
- : Base(exec->globalData(), structure)
+ : Base(exec->vm(), structure)
, m_executable()
- , m_scope(exec->globalData(), this, globalObject)
+ , m_scope(exec->vm(), this, globalObject)
// We initialize blind so that changes to the prototype after function creation but before
// the optimizer kicks in don't disable optimizations. Once the optimizer kicks in, the
// watchpoint will start watching and any changes will both force deoptimization and disable
@@ -100,31 +100,31 @@
void JSFunction::finishCreation(ExecState* exec, NativeExecutable* executable, int length, const String& name)
{
- Base::finishCreation(exec->globalData());
+ Base::finishCreation(exec->vm());
ASSERT(inherits(&s_info));
- m_executable.set(exec->globalData(), this, executable);
- putDirect(exec->globalData(), exec->globalData().propertyNames->name, jsString(exec, name), DontDelete | ReadOnly | DontEnum);
- putDirect(exec->globalData(), exec->propertyNames().length, jsNumber(length), DontDelete | ReadOnly | DontEnum);
+ m_executable.set(exec->vm(), this, executable);
+ putDirect(exec->vm(), exec->vm().propertyNames->name, jsString(exec, name), DontDelete | ReadOnly | DontEnum);
+ putDirect(exec->vm(), exec->propertyNames().length, jsNumber(length), DontDelete | ReadOnly | DontEnum);
}
ObjectAllocationProfile* JSFunction::createAllocationProfile(ExecState* exec, size_t inlineCapacity)
{
- JSGlobalData& globalData = exec->globalData();
- JSObject* prototype = jsDynamicCast<JSObject*>(get(exec, globalData.propertyNames->prototype));
+ VM& vm = exec->vm();
+ JSObject* prototype = jsDynamicCast<JSObject*>(get(exec, vm.propertyNames->prototype));
if (!prototype)
prototype = globalObject()->objectPrototype();
- m_allocationProfile.initialize(globalObject()->globalData(), this, prototype, inlineCapacity);
+ m_allocationProfile.initialize(globalObject()->vm(), this, prototype, inlineCapacity);
return &m_allocationProfile;
}
String JSFunction::name(ExecState* exec)
{
- return get(exec, exec->globalData().propertyNames->name).toWTFString(exec);
+ return get(exec, exec->vm().propertyNames->name).toWTFString(exec);
}
String JSFunction::displayName(ExecState* exec)
{
- JSValue displayName = getDirect(exec->globalData(), exec->globalData().propertyNames->displayName);
+ JSValue displayName = getDirect(exec->vm(), exec->vm().propertyNames->displayName);
if (displayName && isJSString(displayName))
return asString(displayName)->tryGetValue();
@@ -221,13 +221,13 @@
return Base::getOwnPropertySlot(thisObject, exec, propertyName, slot);
if (propertyName == exec->propertyNames().prototype) {
- JSGlobalData& globalData = exec->globalData();
- PropertyOffset offset = thisObject->getDirectOffset(globalData, propertyName);
+ VM& vm = exec->vm();
+ PropertyOffset offset = thisObject->getDirectOffset(vm, propertyName);
if (!isValidOffset(offset)) {
JSObject* prototype = constructEmptyObject(exec);
- prototype->putDirect(globalData, exec->propertyNames().constructor, thisObject, DontEnum);
- thisObject->putDirect(globalData, exec->propertyNames().prototype, prototype, DontDelete | DontEnum);
- offset = thisObject->getDirectOffset(globalData, exec->propertyNames().prototype);
+ prototype->putDirect(vm, exec->propertyNames().constructor, thisObject, DontEnum);
+ thisObject->putDirect(vm, exec->propertyNames().prototype, prototype, DontDelete | DontEnum);
+ offset = thisObject->getDirectOffset(vm, exec->propertyNames().prototype);
ASSERT(isValidOffset(offset));
}
@@ -382,7 +382,7 @@
{
JSFunction* thisObject = jsCast<JSFunction*>(cell);
// For non-host functions, don't let these properties by deleted - except by DefineOwnProperty.
- if (!thisObject->isHostFunction() && !exec->globalData().isInDefineOwnProperty()
+ if (!thisObject->isHostFunction() && !exec->vm().isInDefineOwnProperty()
&& (propertyName == exec->propertyNames().arguments
|| propertyName == exec->propertyNames().length
|| propertyName == exec->propertyNames().name
diff --git a/Source/JavaScriptCore/runtime/JSFunction.h b/Source/JavaScriptCore/runtime/JSFunction.h
index a622077..da50f95 100644
--- a/Source/JavaScriptCore/runtime/JSFunction.h
+++ b/Source/JavaScriptCore/runtime/JSFunction.h
@@ -53,7 +53,7 @@
friend class JIT;
friend class DFG::SpeculativeJIT;
friend class DFG::JITCompiler;
- friend class JSGlobalData;
+ friend class VM;
public:
typedef JSDestructibleObject Base;
@@ -62,10 +62,10 @@
static JSFunction* create(ExecState* exec, FunctionExecutable* executable, JSScope* scope)
{
- JSGlobalData& globalData = exec->globalData();
- JSFunction* function = new (NotNull, allocateCell<JSFunction>(globalData.heap)) JSFunction(globalData, executable, scope);
+ VM& vm = exec->vm();
+ JSFunction* function = new (NotNull, allocateCell<JSFunction>(vm.heap)) JSFunction(vm, executable, scope);
ASSERT(function->structure()->globalObject());
- function->finishCreation(globalData);
+ function->finishCreation(vm);
return function;
}
@@ -89,10 +89,10 @@
{
return m_scope.get();
}
- void setScope(JSGlobalData& globalData, JSScope* scope)
+ void setScope(VM& vm, JSScope* scope)
{
ASSERT(!isHostFunctionNonInline());
- m_scope.set(globalData, this, scope);
+ m_scope.set(vm, this, scope);
}
ExecutableBase* executable() const { return m_executable.get(); }
@@ -105,10 +105,10 @@
static JS_EXPORTDATA const ClassInfo s_info;
- static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype)
+ static Structure* createStructure(VM& vm, JSGlobalObject* globalObject, JSValue prototype)
{
ASSERT(globalObject);
- return Structure::create(globalData, globalObject, prototype, TypeInfo(JSFunctionType, StructureFlags), &s_info);
+ return Structure::create(vm, globalObject, prototype, TypeInfo(JSFunctionType, StructureFlags), &s_info);
}
NativeFunction nativeFunction();
@@ -158,7 +158,7 @@
const static unsigned StructureFlags = OverridesGetOwnPropertySlot | ImplementsHasInstance | OverridesVisitChildren | OverridesGetPropertyNames | JSObject::StructureFlags;
JS_EXPORT_PRIVATE JSFunction(ExecState*, JSGlobalObject*, Structure*);
- JSFunction(JSGlobalData&, FunctionExecutable*, JSScope*);
+ JSFunction(VM&, FunctionExecutable*, JSScope*);
void finishCreation(ExecState*, NativeExecutable*, int length, const String& name);
using Base::finishCreation;
diff --git a/Source/JavaScriptCore/runtime/JSGlobalObject.cpp b/Source/JavaScriptCore/runtime/JSGlobalObject.cpp
index aa0a7fc..746fb01 100644
--- a/Source/JavaScriptCore/runtime/JSGlobalObject.cpp
+++ b/Source/JavaScriptCore/runtime/JSGlobalObject.cpp
@@ -105,8 +105,8 @@
@end
*/
-JSGlobalObject::JSGlobalObject(JSGlobalData& globalData, Structure* structure, const GlobalObjectMethodTable* globalObjectMethodTable)
- : Base(globalData, structure, 0)
+JSGlobalObject::JSGlobalObject(VM& vm, Structure* structure, const GlobalObjectMethodTable* globalObjectMethodTable)
+ : Base(vm, structure, 0)
, m_masqueradesAsUndefinedWatchpoint(adoptRef(new WatchpointSet(InitializedWatching)))
, m_havingABadTimeWatchpoint(adoptRef(new WatchpointSet(InitializedWatching)))
, m_weakRandom(Options::forceWeakRandomSeed() ? Options::forcedWeakRandomSeed() : static_cast<unsigned>(randomNumber() * (std::numeric_limits<unsigned>::max() + 1.0)))
@@ -120,7 +120,7 @@
if (m_debugger)
m_debugger->detach(this);
- if (LegacyProfiler* profiler = globalData().enabledProfiler())
+ if (LegacyProfiler* profiler = vm().enabledProfiler())
profiler->stopProfiling(this);
}
@@ -129,16 +129,16 @@
static_cast<JSGlobalObject*>(cell)->JSGlobalObject::~JSGlobalObject();
}
-void JSGlobalObject::setGlobalThis(JSGlobalData& globalData, JSObject* globalThis)
+void JSGlobalObject::setGlobalThis(VM& vm, JSObject* globalThis)
{
- m_globalThis.set(globalData, this, globalThis);
+ m_globalThis.set(vm, this, globalThis);
}
void JSGlobalObject::init(JSObject* thisValue)
{
- ASSERT(globalData().apiLock().currentThreadIsHoldingLock());
+ ASSERT(vm().apiLock().currentThreadIsHoldingLock());
- setGlobalThis(globalData(), thisValue);
+ setGlobalThis(vm(), thisValue);
JSGlobalObject::globalExec()->init(0, 0, this, CallFrame::noCaller(), 0, 0);
m_debugger = 0;
@@ -161,14 +161,14 @@
JSGlobalObject* thisObject = jsCast<JSGlobalObject*>(object);
ASSERT(!Heap::heap(value) || Heap::heap(value) == Heap::heap(thisObject));
- if (symbolTablePutWithAttributes(thisObject, exec->globalData(), propertyName, value, attributes))
+ if (symbolTablePutWithAttributes(thisObject, exec->vm(), propertyName, value, attributes))
return;
- JSValue valueBefore = thisObject->getDirect(exec->globalData(), propertyName);
+ JSValue valueBefore = thisObject->getDirect(exec->vm(), propertyName);
PutPropertySlot slot;
Base::put(thisObject, exec, propertyName, value, slot);
if (!valueBefore) {
- JSValue valueAfter = thisObject->getDirect(exec->globalData(), propertyName);
+ JSValue valueAfter = thisObject->getDirect(exec->vm(), propertyName);
if (valueAfter)
JSObject::putDirectVirtual(thisObject, exec, propertyName, valueAfter, attributes);
}
@@ -197,126 +197,126 @@
{
ExecState* exec = JSGlobalObject::globalExec();
- m_functionPrototype.set(exec->globalData(), this, FunctionPrototype::create(exec, this, FunctionPrototype::createStructure(exec->globalData(), this, jsNull()))); // The real prototype will be set once ObjectPrototype is created.
- m_functionStructure.set(exec->globalData(), this, JSFunction::createStructure(exec->globalData(), this, m_functionPrototype.get()));
- m_boundFunctionStructure.set(exec->globalData(), this, JSBoundFunction::createStructure(exec->globalData(), this, m_functionPrototype.get()));
- m_namedFunctionStructure.set(exec->globalData(), this, Structure::addPropertyTransition(exec->globalData(), m_functionStructure.get(), exec->globalData().propertyNames->name, DontDelete | ReadOnly | DontEnum, 0, m_functionNameOffset));
- m_internalFunctionStructure.set(exec->globalData(), this, InternalFunction::createStructure(exec->globalData(), this, m_functionPrototype.get()));
+ m_functionPrototype.set(exec->vm(), this, FunctionPrototype::create(exec, this, FunctionPrototype::createStructure(exec->vm(), this, jsNull()))); // The real prototype will be set once ObjectPrototype is created.
+ m_functionStructure.set(exec->vm(), this, JSFunction::createStructure(exec->vm(), this, m_functionPrototype.get()));
+ m_boundFunctionStructure.set(exec->vm(), this, JSBoundFunction::createStructure(exec->vm(), this, m_functionPrototype.get()));
+ m_namedFunctionStructure.set(exec->vm(), this, Structure::addPropertyTransition(exec->vm(), m_functionStructure.get(), exec->vm().propertyNames->name, DontDelete | ReadOnly | DontEnum, 0, m_functionNameOffset));
+ m_internalFunctionStructure.set(exec->vm(), this, InternalFunction::createStructure(exec->vm(), this, m_functionPrototype.get()));
JSFunction* callFunction = 0;
JSFunction* applyFunction = 0;
m_functionPrototype->addFunctionProperties(exec, this, &callFunction, &applyFunction);
- m_callFunction.set(exec->globalData(), this, callFunction);
- m_applyFunction.set(exec->globalData(), this, applyFunction);
- m_objectPrototype.set(exec->globalData(), this, ObjectPrototype::create(exec, this, ObjectPrototype::createStructure(exec->globalData(), this, jsNull())));
+ m_callFunction.set(exec->vm(), this, callFunction);
+ m_applyFunction.set(exec->vm(), this, applyFunction);
+ m_objectPrototype.set(exec->vm(), this, ObjectPrototype::create(exec, this, ObjectPrototype::createStructure(exec->vm(), this, jsNull())));
GetterSetter* protoAccessor = GetterSetter::create(exec);
- protoAccessor->setGetter(exec->globalData(), JSFunction::create(exec, this, 0, String(), globalFuncProtoGetter));
- protoAccessor->setSetter(exec->globalData(), JSFunction::create(exec, this, 0, String(), globalFuncProtoSetter));
+ protoAccessor->setGetter(exec->vm(), JSFunction::create(exec, this, 0, String(), globalFuncProtoGetter));
+ protoAccessor->setSetter(exec->vm(), JSFunction::create(exec, this, 0, String(), globalFuncProtoSetter));
m_objectPrototype->putDirectAccessor(exec, exec->propertyNames().underscoreProto, protoAccessor, Accessor | DontEnum);
- m_functionPrototype->structure()->setPrototypeWithoutTransition(exec->globalData(), m_objectPrototype.get());
+ m_functionPrototype->structure()->setPrototypeWithoutTransition(exec->vm(), m_objectPrototype.get());
- m_nameScopeStructure.set(exec->globalData(), this, JSNameScope::createStructure(exec->globalData(), this, jsNull()));
- m_activationStructure.set(exec->globalData(), this, JSActivation::createStructure(exec->globalData(), this, jsNull()));
- m_strictEvalActivationStructure.set(exec->globalData(), this, StrictEvalActivation::createStructure(exec->globalData(), this, jsNull()));
- m_withScopeStructure.set(exec->globalData(), this, JSWithScope::createStructure(exec->globalData(), this, jsNull()));
+ m_nameScopeStructure.set(exec->vm(), this, JSNameScope::createStructure(exec->vm(), this, jsNull()));
+ m_activationStructure.set(exec->vm(), this, JSActivation::createStructure(exec->vm(), this, jsNull()));
+ m_strictEvalActivationStructure.set(exec->vm(), this, StrictEvalActivation::createStructure(exec->vm(), this, jsNull()));
+ m_withScopeStructure.set(exec->vm(), this, JSWithScope::createStructure(exec->vm(), this, jsNull()));
- m_nullPrototypeObjectStructure.set(exec->globalData(), this, JSFinalObject::createStructure(globalData(), this, jsNull(), JSFinalObject::defaultInlineCapacity()));
+ m_nullPrototypeObjectStructure.set(exec->vm(), this, JSFinalObject::createStructure(vm(), this, jsNull(), JSFinalObject::defaultInlineCapacity()));
- m_callbackFunctionStructure.set(exec->globalData(), this, JSCallbackFunction::createStructure(exec->globalData(), this, m_functionPrototype.get()));
- m_argumentsStructure.set(exec->globalData(), this, Arguments::createStructure(exec->globalData(), this, m_objectPrototype.get()));
- m_callbackConstructorStructure.set(exec->globalData(), this, JSCallbackConstructor::createStructure(exec->globalData(), this, m_objectPrototype.get()));
- m_callbackObjectStructure.set(exec->globalData(), this, JSCallbackObject<JSDestructibleObject>::createStructure(exec->globalData(), this, m_objectPrototype.get()));
+ m_callbackFunctionStructure.set(exec->vm(), this, JSCallbackFunction::createStructure(exec->vm(), this, m_functionPrototype.get()));
+ m_argumentsStructure.set(exec->vm(), this, Arguments::createStructure(exec->vm(), this, m_objectPrototype.get()));
+ m_callbackConstructorStructure.set(exec->vm(), this, JSCallbackConstructor::createStructure(exec->vm(), this, m_objectPrototype.get()));
+ m_callbackObjectStructure.set(exec->vm(), this, JSCallbackObject<JSDestructibleObject>::createStructure(exec->vm(), this, m_objectPrototype.get()));
#if JSC_OBJC_API_ENABLED
- m_objcCallbackFunctionStructure.set(exec->globalData(), this, ObjCCallbackFunction::createStructure(exec->globalData(), this, m_functionPrototype.get()));
- m_objcWrapperObjectStructure.set(exec->globalData(), this, JSCallbackObject<JSAPIWrapperObject>::createStructure(exec->globalData(), this, m_objectPrototype.get()));
+ m_objcCallbackFunctionStructure.set(exec->vm(), this, ObjCCallbackFunction::createStructure(exec->vm(), this, m_functionPrototype.get()));
+ m_objcWrapperObjectStructure.set(exec->vm(), this, JSCallbackObject<JSAPIWrapperObject>::createStructure(exec->vm(), this, m_objectPrototype.get()));
#endif
- m_arrayPrototype.set(exec->globalData(), this, ArrayPrototype::create(exec, this, ArrayPrototype::createStructure(exec->globalData(), this, m_objectPrototype.get())));
+ m_arrayPrototype.set(exec->vm(), this, ArrayPrototype::create(exec, this, ArrayPrototype::createStructure(exec->vm(), this, m_objectPrototype.get())));
- m_originalArrayStructureForIndexingShape[UndecidedShape >> IndexingShapeShift].set(exec->globalData(), this, JSArray::createStructure(exec->globalData(), this, m_arrayPrototype.get(), ArrayWithUndecided));
- m_originalArrayStructureForIndexingShape[Int32Shape >> IndexingShapeShift].set(exec->globalData(), this, JSArray::createStructure(exec->globalData(), this, m_arrayPrototype.get(), ArrayWithInt32));
- m_originalArrayStructureForIndexingShape[DoubleShape >> IndexingShapeShift].set(exec->globalData(), this, JSArray::createStructure(exec->globalData(), this, m_arrayPrototype.get(), ArrayWithDouble));
- m_originalArrayStructureForIndexingShape[ContiguousShape >> IndexingShapeShift].set(exec->globalData(), this, JSArray::createStructure(exec->globalData(), this, m_arrayPrototype.get(), ArrayWithContiguous));
- m_originalArrayStructureForIndexingShape[ArrayStorageShape >> IndexingShapeShift].set(exec->globalData(), this, JSArray::createStructure(exec->globalData(), this, m_arrayPrototype.get(), ArrayWithArrayStorage));
- m_originalArrayStructureForIndexingShape[SlowPutArrayStorageShape >> IndexingShapeShift].set(exec->globalData(), this, JSArray::createStructure(exec->globalData(), this, m_arrayPrototype.get(), ArrayWithSlowPutArrayStorage));
+ m_originalArrayStructureForIndexingShape[UndecidedShape >> IndexingShapeShift].set(exec->vm(), this, JSArray::createStructure(exec->vm(), this, m_arrayPrototype.get(), ArrayWithUndecided));
+ m_originalArrayStructureForIndexingShape[Int32Shape >> IndexingShapeShift].set(exec->vm(), this, JSArray::createStructure(exec->vm(), this, m_arrayPrototype.get(), ArrayWithInt32));
+ m_originalArrayStructureForIndexingShape[DoubleShape >> IndexingShapeShift].set(exec->vm(), this, JSArray::createStructure(exec->vm(), this, m_arrayPrototype.get(), ArrayWithDouble));
+ m_originalArrayStructureForIndexingShape[ContiguousShape >> IndexingShapeShift].set(exec->vm(), this, JSArray::createStructure(exec->vm(), this, m_arrayPrototype.get(), ArrayWithContiguous));
+ m_originalArrayStructureForIndexingShape[ArrayStorageShape >> IndexingShapeShift].set(exec->vm(), this, JSArray::createStructure(exec->vm(), this, m_arrayPrototype.get(), ArrayWithArrayStorage));
+ m_originalArrayStructureForIndexingShape[SlowPutArrayStorageShape >> IndexingShapeShift].set(exec->vm(), this, JSArray::createStructure(exec->vm(), this, m_arrayPrototype.get(), ArrayWithSlowPutArrayStorage));
for (unsigned i = 0; i < NumberOfIndexingShapes; ++i)
m_arrayStructureForIndexingShapeDuringAllocation[i] = m_originalArrayStructureForIndexingShape[i];
- m_regExpMatchesArrayStructure.set(exec->globalData(), this, RegExpMatchesArray::createStructure(exec->globalData(), this, m_arrayPrototype.get()));
+ m_regExpMatchesArrayStructure.set(exec->vm(), this, RegExpMatchesArray::createStructure(exec->vm(), this, m_arrayPrototype.get()));
- m_stringPrototype.set(exec->globalData(), this, StringPrototype::create(exec, this, StringPrototype::createStructure(exec->globalData(), this, m_objectPrototype.get())));
- m_stringObjectStructure.set(exec->globalData(), this, StringObject::createStructure(exec->globalData(), this, m_stringPrototype.get()));
+ m_stringPrototype.set(exec->vm(), this, StringPrototype::create(exec, this, StringPrototype::createStructure(exec->vm(), this, m_objectPrototype.get())));
+ m_stringObjectStructure.set(exec->vm(), this, StringObject::createStructure(exec->vm(), this, m_stringPrototype.get()));
- m_booleanPrototype.set(exec->globalData(), this, BooleanPrototype::create(exec, this, BooleanPrototype::createStructure(exec->globalData(), this, m_objectPrototype.get())));
- m_booleanObjectStructure.set(exec->globalData(), this, BooleanObject::createStructure(exec->globalData(), this, m_booleanPrototype.get()));
+ m_booleanPrototype.set(exec->vm(), this, BooleanPrototype::create(exec, this, BooleanPrototype::createStructure(exec->vm(), this, m_objectPrototype.get())));
+ m_booleanObjectStructure.set(exec->vm(), this, BooleanObject::createStructure(exec->vm(), this, m_booleanPrototype.get()));
- m_numberPrototype.set(exec->globalData(), this, NumberPrototype::create(exec, this, NumberPrototype::createStructure(exec->globalData(), this, m_objectPrototype.get())));
- m_numberObjectStructure.set(exec->globalData(), this, NumberObject::createStructure(exec->globalData(), this, m_numberPrototype.get()));
+ m_numberPrototype.set(exec->vm(), this, NumberPrototype::create(exec, this, NumberPrototype::createStructure(exec->vm(), this, m_objectPrototype.get())));
+ m_numberObjectStructure.set(exec->vm(), this, NumberObject::createStructure(exec->vm(), this, m_numberPrototype.get()));
- m_datePrototype.set(exec->globalData(), this, DatePrototype::create(exec, this, DatePrototype::createStructure(exec->globalData(), this, m_objectPrototype.get())));
- m_dateStructure.set(exec->globalData(), this, DateInstance::createStructure(exec->globalData(), this, m_datePrototype.get()));
+ m_datePrototype.set(exec->vm(), this, DatePrototype::create(exec, this, DatePrototype::createStructure(exec->vm(), this, m_objectPrototype.get())));
+ m_dateStructure.set(exec->vm(), this, DateInstance::createStructure(exec->vm(), this, m_datePrototype.get()));
- RegExp* emptyRegex = RegExp::create(exec->globalData(), "", NoFlags);
+ RegExp* emptyRegex = RegExp::create(exec->vm(), "", NoFlags);
- m_regExpPrototype.set(exec->globalData(), this, RegExpPrototype::create(exec, this, RegExpPrototype::createStructure(exec->globalData(), this, m_objectPrototype.get()), emptyRegex));
- m_regExpStructure.set(exec->globalData(), this, RegExpObject::createStructure(exec->globalData(), this, m_regExpPrototype.get()));
+ m_regExpPrototype.set(exec->vm(), this, RegExpPrototype::create(exec, this, RegExpPrototype::createStructure(exec->vm(), this, m_objectPrototype.get()), emptyRegex));
+ m_regExpStructure.set(exec->vm(), this, RegExpObject::createStructure(exec->vm(), this, m_regExpPrototype.get()));
- m_errorPrototype.set(exec->globalData(), this, ErrorPrototype::create(exec, this, ErrorPrototype::createStructure(exec->globalData(), this, m_objectPrototype.get())));
- m_errorStructure.set(exec->globalData(), this, ErrorInstance::createStructure(exec->globalData(), this, m_errorPrototype.get()));
+ m_errorPrototype.set(exec->vm(), this, ErrorPrototype::create(exec, this, ErrorPrototype::createStructure(exec->vm(), this, m_objectPrototype.get())));
+ m_errorStructure.set(exec->vm(), this, ErrorInstance::createStructure(exec->vm(), this, m_errorPrototype.get()));
// Constructors
- JSCell* objectConstructor = ObjectConstructor::create(exec, this, ObjectConstructor::createStructure(exec->globalData(), this, m_functionPrototype.get()), m_objectPrototype.get());
- JSCell* functionConstructor = FunctionConstructor::create(exec, this, FunctionConstructor::createStructure(exec->globalData(), this, m_functionPrototype.get()), m_functionPrototype.get());
- JSCell* arrayConstructor = ArrayConstructor::create(exec, this, ArrayConstructor::createStructure(exec->globalData(), this, m_functionPrototype.get()), m_arrayPrototype.get());
- JSCell* stringConstructor = StringConstructor::create(exec, this, StringConstructor::createStructure(exec->globalData(), this, m_functionPrototype.get()), m_stringPrototype.get());
- JSCell* booleanConstructor = BooleanConstructor::create(exec, this, BooleanConstructor::createStructure(exec->globalData(), this, m_functionPrototype.get()), m_booleanPrototype.get());
- JSCell* numberConstructor = NumberConstructor::create(exec, this, NumberConstructor::createStructure(exec->globalData(), this, m_functionPrototype.get()), m_numberPrototype.get());
- JSCell* dateConstructor = DateConstructor::create(exec, this, DateConstructor::createStructure(exec->globalData(), this, m_functionPrototype.get()), m_datePrototype.get());
+ JSCell* objectConstructor = ObjectConstructor::create(exec, this, ObjectConstructor::createStructure(exec->vm(), this, m_functionPrototype.get()), m_objectPrototype.get());
+ JSCell* functionConstructor = FunctionConstructor::create(exec, this, FunctionConstructor::createStructure(exec->vm(), this, m_functionPrototype.get()), m_functionPrototype.get());
+ JSCell* arrayConstructor = ArrayConstructor::create(exec, this, ArrayConstructor::createStructure(exec->vm(), this, m_functionPrototype.get()), m_arrayPrototype.get());
+ JSCell* stringConstructor = StringConstructor::create(exec, this, StringConstructor::createStructure(exec->vm(), this, m_functionPrototype.get()), m_stringPrototype.get());
+ JSCell* booleanConstructor = BooleanConstructor::create(exec, this, BooleanConstructor::createStructure(exec->vm(), this, m_functionPrototype.get()), m_booleanPrototype.get());
+ JSCell* numberConstructor = NumberConstructor::create(exec, this, NumberConstructor::createStructure(exec->vm(), this, m_functionPrototype.get()), m_numberPrototype.get());
+ JSCell* dateConstructor = DateConstructor::create(exec, this, DateConstructor::createStructure(exec->vm(), this, m_functionPrototype.get()), m_datePrototype.get());
- m_regExpConstructor.set(exec->globalData(), this, RegExpConstructor::create(exec, this, RegExpConstructor::createStructure(exec->globalData(), this, m_functionPrototype.get()), m_regExpPrototype.get()));
+ m_regExpConstructor.set(exec->vm(), this, RegExpConstructor::create(exec, this, RegExpConstructor::createStructure(exec->vm(), this, m_functionPrototype.get()), m_regExpPrototype.get()));
- m_errorConstructor.set(exec->globalData(), this, ErrorConstructor::create(exec, this, ErrorConstructor::createStructure(exec->globalData(), this, m_functionPrototype.get()), m_errorPrototype.get()));
+ m_errorConstructor.set(exec->vm(), this, ErrorConstructor::create(exec, this, ErrorConstructor::createStructure(exec->vm(), this, m_functionPrototype.get()), m_errorPrototype.get()));
- Structure* nativeErrorPrototypeStructure = NativeErrorPrototype::createStructure(exec->globalData(), this, m_errorPrototype.get());
- Structure* nativeErrorStructure = NativeErrorConstructor::createStructure(exec->globalData(), this, m_functionPrototype.get());
- m_evalErrorConstructor.set(exec->globalData(), this, NativeErrorConstructor::create(exec, this, nativeErrorStructure, nativeErrorPrototypeStructure, ASCIILiteral("EvalError")));
- m_rangeErrorConstructor.set(exec->globalData(), this, NativeErrorConstructor::create(exec, this, nativeErrorStructure, nativeErrorPrototypeStructure, ASCIILiteral("RangeError")));
- m_referenceErrorConstructor.set(exec->globalData(), this, NativeErrorConstructor::create(exec, this, nativeErrorStructure, nativeErrorPrototypeStructure, ASCIILiteral("ReferenceError")));
- m_syntaxErrorConstructor.set(exec->globalData(), this, NativeErrorConstructor::create(exec, this, nativeErrorStructure, nativeErrorPrototypeStructure, ASCIILiteral("SyntaxError")));
- m_typeErrorConstructor.set(exec->globalData(), this, NativeErrorConstructor::create(exec, this, nativeErrorStructure, nativeErrorPrototypeStructure, ASCIILiteral("TypeError")));
- m_URIErrorConstructor.set(exec->globalData(), this, NativeErrorConstructor::create(exec, this, nativeErrorStructure, nativeErrorPrototypeStructure, ASCIILiteral("URIError")));
+ Structure* nativeErrorPrototypeStructure = NativeErrorPrototype::createStructure(exec->vm(), this, m_errorPrototype.get());
+ Structure* nativeErrorStructure = NativeErrorConstructor::createStructure(exec->vm(), this, m_functionPrototype.get());
+ m_evalErrorConstructor.set(exec->vm(), this, NativeErrorConstructor::create(exec, this, nativeErrorStructure, nativeErrorPrototypeStructure, ASCIILiteral("EvalError")));
+ m_rangeErrorConstructor.set(exec->vm(), this, NativeErrorConstructor::create(exec, this, nativeErrorStructure, nativeErrorPrototypeStructure, ASCIILiteral("RangeError")));
+ m_referenceErrorConstructor.set(exec->vm(), this, NativeErrorConstructor::create(exec, this, nativeErrorStructure, nativeErrorPrototypeStructure, ASCIILiteral("ReferenceError")));
+ m_syntaxErrorConstructor.set(exec->vm(), this, NativeErrorConstructor::create(exec, this, nativeErrorStructure, nativeErrorPrototypeStructure, ASCIILiteral("SyntaxError")));
+ m_typeErrorConstructor.set(exec->vm(), this, NativeErrorConstructor::create(exec, this, nativeErrorStructure, nativeErrorPrototypeStructure, ASCIILiteral("TypeError")));
+ m_URIErrorConstructor.set(exec->vm(), this, NativeErrorConstructor::create(exec, this, nativeErrorStructure, nativeErrorPrototypeStructure, ASCIILiteral("URIError")));
- m_objectPrototype->putDirectWithoutTransition(exec->globalData(), exec->propertyNames().constructor, objectConstructor, DontEnum);
- m_functionPrototype->putDirectWithoutTransition(exec->globalData(), exec->propertyNames().constructor, functionConstructor, DontEnum);
- m_arrayPrototype->putDirectWithoutTransition(exec->globalData(), exec->propertyNames().constructor, arrayConstructor, DontEnum);
- m_booleanPrototype->putDirectWithoutTransition(exec->globalData(), exec->propertyNames().constructor, booleanConstructor, DontEnum);
- m_stringPrototype->putDirectWithoutTransition(exec->globalData(), exec->propertyNames().constructor, stringConstructor, DontEnum);
- m_numberPrototype->putDirectWithoutTransition(exec->globalData(), exec->propertyNames().constructor, numberConstructor, DontEnum);
- m_datePrototype->putDirectWithoutTransition(exec->globalData(), exec->propertyNames().constructor, dateConstructor, DontEnum);
- m_regExpPrototype->putDirectWithoutTransition(exec->globalData(), exec->propertyNames().constructor, m_regExpConstructor.get(), DontEnum);
- m_errorPrototype->putDirectWithoutTransition(exec->globalData(), exec->propertyNames().constructor, m_errorConstructor.get(), DontEnum);
+ m_objectPrototype->putDirectWithoutTransition(exec->vm(), exec->propertyNames().constructor, objectConstructor, DontEnum);
+ m_functionPrototype->putDirectWithoutTransition(exec->vm(), exec->propertyNames().constructor, functionConstructor, DontEnum);
+ m_arrayPrototype->putDirectWithoutTransition(exec->vm(), exec->propertyNames().constructor, arrayConstructor, DontEnum);
+ m_booleanPrototype->putDirectWithoutTransition(exec->vm(), exec->propertyNames().constructor, booleanConstructor, DontEnum);
+ m_stringPrototype->putDirectWithoutTransition(exec->vm(), exec->propertyNames().constructor, stringConstructor, DontEnum);
+ m_numberPrototype->putDirectWithoutTransition(exec->vm(), exec->propertyNames().constructor, numberConstructor, DontEnum);
+ m_datePrototype->putDirectWithoutTransition(exec->vm(), exec->propertyNames().constructor, dateConstructor, DontEnum);
+ m_regExpPrototype->putDirectWithoutTransition(exec->vm(), exec->propertyNames().constructor, m_regExpConstructor.get(), DontEnum);
+ m_errorPrototype->putDirectWithoutTransition(exec->vm(), exec->propertyNames().constructor, m_errorConstructor.get(), DontEnum);
- putDirectWithoutTransition(exec->globalData(), exec->propertyNames().Object, objectConstructor, DontEnum);
- putDirectWithoutTransition(exec->globalData(), Identifier(exec, "Function"), functionConstructor, DontEnum);
- putDirectWithoutTransition(exec->globalData(), exec->propertyNames().Array, arrayConstructor, DontEnum);
- putDirectWithoutTransition(exec->globalData(), Identifier(exec, "Boolean"), booleanConstructor, DontEnum);
- putDirectWithoutTransition(exec->globalData(), Identifier(exec, "String"), stringConstructor, DontEnum);
- putDirectWithoutTransition(exec->globalData(), Identifier(exec, "Number"), numberConstructor, DontEnum);
- putDirectWithoutTransition(exec->globalData(), Identifier(exec, "Date"), dateConstructor, DontEnum);
- putDirectWithoutTransition(exec->globalData(), Identifier(exec, "RegExp"), m_regExpConstructor.get(), DontEnum);
- putDirectWithoutTransition(exec->globalData(), Identifier(exec, "Error"), m_errorConstructor.get(), DontEnum);
- putDirectWithoutTransition(exec->globalData(), Identifier(exec, "EvalError"), m_evalErrorConstructor.get(), DontEnum);
- putDirectWithoutTransition(exec->globalData(), Identifier(exec, "RangeError"), m_rangeErrorConstructor.get(), DontEnum);
- putDirectWithoutTransition(exec->globalData(), Identifier(exec, "ReferenceError"), m_referenceErrorConstructor.get(), DontEnum);
- putDirectWithoutTransition(exec->globalData(), Identifier(exec, "SyntaxError"), m_syntaxErrorConstructor.get(), DontEnum);
- putDirectWithoutTransition(exec->globalData(), Identifier(exec, "TypeError"), m_typeErrorConstructor.get(), DontEnum);
- putDirectWithoutTransition(exec->globalData(), Identifier(exec, "URIError"), m_URIErrorConstructor.get(), DontEnum);
+ putDirectWithoutTransition(exec->vm(), exec->propertyNames().Object, objectConstructor, DontEnum);
+ putDirectWithoutTransition(exec->vm(), Identifier(exec, "Function"), functionConstructor, DontEnum);
+ putDirectWithoutTransition(exec->vm(), exec->propertyNames().Array, arrayConstructor, DontEnum);
+ putDirectWithoutTransition(exec->vm(), Identifier(exec, "Boolean"), booleanConstructor, DontEnum);
+ putDirectWithoutTransition(exec->vm(), Identifier(exec, "String"), stringConstructor, DontEnum);
+ putDirectWithoutTransition(exec->vm(), Identifier(exec, "Number"), numberConstructor, DontEnum);
+ putDirectWithoutTransition(exec->vm(), Identifier(exec, "Date"), dateConstructor, DontEnum);
+ putDirectWithoutTransition(exec->vm(), Identifier(exec, "RegExp"), m_regExpConstructor.get(), DontEnum);
+ putDirectWithoutTransition(exec->vm(), Identifier(exec, "Error"), m_errorConstructor.get(), DontEnum);
+ putDirectWithoutTransition(exec->vm(), Identifier(exec, "EvalError"), m_evalErrorConstructor.get(), DontEnum);
+ putDirectWithoutTransition(exec->vm(), Identifier(exec, "RangeError"), m_rangeErrorConstructor.get(), DontEnum);
+ putDirectWithoutTransition(exec->vm(), Identifier(exec, "ReferenceError"), m_referenceErrorConstructor.get(), DontEnum);
+ putDirectWithoutTransition(exec->vm(), Identifier(exec, "SyntaxError"), m_syntaxErrorConstructor.get(), DontEnum);
+ putDirectWithoutTransition(exec->vm(), Identifier(exec, "TypeError"), m_typeErrorConstructor.get(), DontEnum);
+ putDirectWithoutTransition(exec->vm(), Identifier(exec, "URIError"), m_URIErrorConstructor.get(), DontEnum);
- m_evalFunction.set(exec->globalData(), this, JSFunction::create(exec, this, 1, exec->propertyNames().eval.string(), globalFuncEval));
- putDirectWithoutTransition(exec->globalData(), exec->propertyNames().eval, m_evalFunction.get(), DontEnum);
+ m_evalFunction.set(exec->vm(), this, JSFunction::create(exec, this, 1, exec->propertyNames().eval.string(), globalFuncEval));
+ putDirectWithoutTransition(exec->vm(), exec->propertyNames().eval, m_evalFunction.get(), DontEnum);
- putDirectWithoutTransition(exec->globalData(), Identifier(exec, "JSON"), JSONObject::create(exec, this, JSONObject::createStructure(exec->globalData(), this, m_objectPrototype.get())), DontEnum);
- putDirectWithoutTransition(exec->globalData(), Identifier(exec, "Math"), MathObject::create(exec, this, MathObject::createStructure(exec->globalData(), this, m_objectPrototype.get())), DontEnum);
+ putDirectWithoutTransition(exec->vm(), Identifier(exec, "JSON"), JSONObject::create(exec, this, JSONObject::createStructure(exec->vm(), this, m_objectPrototype.get())), DontEnum);
+ putDirectWithoutTransition(exec->vm(), Identifier(exec, "Math"), MathObject::create(exec, this, MathObject::createStructure(exec->vm(), this, m_objectPrototype.get())), DontEnum);
GlobalPropertyInfo staticGlobals[] = {
GlobalPropertyInfo(Identifier(exec, "NaN"), jsNaN(), DontEnum | DontDelete | ReadOnly),
@@ -331,15 +331,15 @@
m_specialPointers[Special::ArrayConstructor] = arrayConstructor;
if (m_experimentsEnabled) {
- NamePrototype* privateNamePrototype = NamePrototype::create(exec, NamePrototype::createStructure(exec->globalData(), this, m_objectPrototype.get()));
- m_privateNameStructure.set(exec->globalData(), this, NameInstance::createStructure(exec->globalData(), this, privateNamePrototype));
+ NamePrototype* privateNamePrototype = NamePrototype::create(exec, NamePrototype::createStructure(exec->vm(), this, m_objectPrototype.get()));
+ m_privateNameStructure.set(exec->vm(), this, NameInstance::createStructure(exec->vm(), this, privateNamePrototype));
- JSCell* privateNameConstructor = NameConstructor::create(exec, this, NameConstructor::createStructure(exec->globalData(), this, m_functionPrototype.get()), privateNamePrototype);
- privateNamePrototype->putDirectWithoutTransition(exec->globalData(), exec->propertyNames().constructor, privateNameConstructor, DontEnum);
- putDirectWithoutTransition(exec->globalData(), Identifier(exec, "Name"), privateNameConstructor, DontEnum);
+ JSCell* privateNameConstructor = NameConstructor::create(exec, this, NameConstructor::createStructure(exec->vm(), this, m_functionPrototype.get()), privateNamePrototype);
+ privateNamePrototype->putDirectWithoutTransition(exec->vm(), exec->propertyNames().constructor, privateNameConstructor, DontEnum);
+ putDirectWithoutTransition(exec->vm(), Identifier(exec, "Name"), privateNameConstructor, DontEnum);
}
- resetPrototype(exec->globalData(), prototype);
+ resetPrototype(exec->vm(), prototype);
}
// Private namespace for helpers for JSGlobalObject::haveABadTime()
@@ -405,9 +405,9 @@
} // end private namespace for helpers for JSGlobalObject::haveABadTime()
-void JSGlobalObject::haveABadTime(JSGlobalData& globalData)
+void JSGlobalObject::haveABadTime(VM& vm)
{
- ASSERT(&globalData == &this->globalData());
+ ASSERT(&vm == &this->vm());
if (isHavingABadTime())
return;
@@ -421,18 +421,18 @@
// Make sure that all JSArray allocations that load the appropriate structure from
// this object now load a structure that uses SlowPut.
for (unsigned i = 0; i < NumberOfIndexingShapes; ++i)
- m_arrayStructureForIndexingShapeDuringAllocation[i].set(globalData, this, originalArrayStructureForIndexingType(ArrayWithSlowPutArrayStorage));
+ m_arrayStructureForIndexingShapeDuringAllocation[i].set(vm, this, originalArrayStructureForIndexingType(ArrayWithSlowPutArrayStorage));
// Make sure that all objects that have indexed storage switch to the slow kind of
// indexed storage.
MarkedArgumentBuffer foundObjects; // Use MarkedArgumentBuffer because switchToSlowPutArrayStorage() may GC.
ObjectsWithBrokenIndexingFinder finder(foundObjects, this);
- globalData.heap.objectSpace().forEachLiveCell(finder);
+ vm.heap.objectSpace().forEachLiveCell(finder);
while (!foundObjects.isEmpty()) {
JSObject* object = asObject(foundObjects.last());
foundObjects.removeLast();
ASSERT(hasBrokenIndexing(object));
- object->switchToSlowPutArrayStorage(globalData);
+ object->switchToSlowPutArrayStorage(vm);
}
}
@@ -448,20 +448,20 @@
{
JSFunction* thrower = JSFunction::create(exec, this, 0, String(), globalFuncThrowTypeError);
GetterSetter* getterSetter = GetterSetter::create(exec);
- getterSetter->setGetter(exec->globalData(), thrower);
- getterSetter->setSetter(exec->globalData(), thrower);
- m_throwTypeErrorGetterSetter.set(exec->globalData(), this, getterSetter);
+ getterSetter->setGetter(exec->vm(), thrower);
+ getterSetter->setSetter(exec->vm(), thrower);
+ m_throwTypeErrorGetterSetter.set(exec->vm(), this, getterSetter);
}
// Set prototype, and also insert the object prototype at the end of the chain.
-void JSGlobalObject::resetPrototype(JSGlobalData& globalData, JSValue prototype)
+void JSGlobalObject::resetPrototype(VM& vm, JSValue prototype)
{
- setPrototype(globalData, prototype);
+ setPrototype(vm, prototype);
JSObject* oldLastInPrototypeChain = lastInPrototypeChain(this);
JSObject* objectPrototype = m_objectPrototype.get();
if (oldLastInPrototypeChain != objectPrototype)
- oldLastInPrototypeChain->setPrototype(globalData, objectPrototype);
+ oldLastInPrototypeChain->setPrototype(vm, objectPrototype);
}
void JSGlobalObject::visitChildren(JSCell* cell, SlotVisitor& visitor)
@@ -550,7 +550,7 @@
int index = symbolTable()->size();
SymbolTableEntry newEntry(index, global.attributes);
symbolTable()->add(global.identifier.impl(), newEntry);
- registerAt(index).set(globalData(), this, global.value);
+ registerAt(index).set(vm(), this, global.value);
}
}
@@ -575,24 +575,24 @@
jsCast<JSGlobalObject*>(cell)->m_rareData.clear();
}
-DynamicGlobalObjectScope::DynamicGlobalObjectScope(JSGlobalData& globalData, JSGlobalObject* dynamicGlobalObject)
- : m_dynamicGlobalObjectSlot(globalData.dynamicGlobalObject)
+DynamicGlobalObjectScope::DynamicGlobalObjectScope(VM& vm, JSGlobalObject* dynamicGlobalObject)
+ : m_dynamicGlobalObjectSlot(vm.dynamicGlobalObject)
, m_savedDynamicGlobalObject(m_dynamicGlobalObjectSlot)
{
if (!m_dynamicGlobalObjectSlot) {
#if ENABLE(ASSEMBLER)
if (ExecutableAllocator::underMemoryPressure())
- globalData.heap.deleteAllCompiledCode();
+ vm.heap.deleteAllCompiledCode();
#endif
m_dynamicGlobalObjectSlot = dynamicGlobalObject;
// Reset the date cache between JS invocations to force the VM
// to observe time zone changes.
- globalData.resetDateCache();
+ vm.resetDateCache();
}
// Clear the exception stack between entries
- globalData.exceptionStack = RefCountedArray<StackFrame>();
+ vm.exceptionStack = RefCountedArray<StackFrame>();
}
void slowValidateCell(JSGlobalObject* globalObject)
@@ -607,7 +607,7 @@
JSParserStrictness strictness = executable->isStrictMode() ? JSParseStrict : JSParseNormal;
DebuggerMode debuggerMode = hasDebugger() ? DebuggerOn : DebuggerOff;
ProfilerMode profilerMode = hasProfiler() ? ProfilerOn : ProfilerOff;
- UnlinkedProgramCodeBlock* unlinkedCode = globalData().codeCache()->getProgramCodeBlock(globalData(), executable, executable->source(), strictness, debuggerMode, profilerMode, error);
+ UnlinkedProgramCodeBlock* unlinkedCode = vm().codeCache()->getProgramCodeBlock(vm(), executable, executable->source(), strictness, debuggerMode, profilerMode, error);
if (hasDebugger())
debugger()->sourceParsed(callFrame, executable->source().provider(), error.m_line, error.m_message);
@@ -626,7 +626,7 @@
JSParserStrictness strictness = executable->isStrictMode() ? JSParseStrict : JSParseNormal;
DebuggerMode debuggerMode = hasDebugger() ? DebuggerOn : DebuggerOff;
ProfilerMode profilerMode = hasProfiler() ? ProfilerOn : ProfilerOff;
- UnlinkedEvalCodeBlock* unlinkedCode = globalData().codeCache()->getEvalCodeBlock(globalData(), scope, executable, executable->source(), strictness, debuggerMode, profilerMode, error);
+ UnlinkedEvalCodeBlock* unlinkedCode = vm().codeCache()->getEvalCodeBlock(vm(), scope, executable, executable->source(), strictness, debuggerMode, profilerMode, error);
if (hasDebugger())
debugger()->sourceParsed(callFrame, executable->source().provider(), error.m_line, error.m_message);
diff --git a/Source/JavaScriptCore/runtime/JSGlobalObject.h b/Source/JavaScriptCore/runtime/JSGlobalObject.h
index f60636e..dc8b529 100644
--- a/Source/JavaScriptCore/runtime/JSGlobalObject.h
+++ b/Source/JavaScriptCore/runtime/JSGlobalObject.h
@@ -25,7 +25,7 @@
#include "ArrayAllocationProfile.h"
#include "JSArray.h"
#include "JSClassRef.h"
-#include "JSGlobalData.h"
+#include "VM.h"
#include "JSSegmentedVariableObject.h"
#include "JSWeakObjectMapRefInternal.h"
#include "NumberPrototype.h"
@@ -195,11 +195,11 @@
public:
typedef JSSegmentedVariableObject Base;
- static JSGlobalObject* create(JSGlobalData& globalData, Structure* structure)
+ static JSGlobalObject* create(VM& vm, Structure* structure)
{
- JSGlobalObject* globalObject = new (NotNull, allocateCell<JSGlobalObject>(globalData.heap)) JSGlobalObject(globalData, structure);
- globalObject->finishCreation(globalData);
- globalData.heap.addFinalizer(globalObject, destroy);
+ JSGlobalObject* globalObject = new (NotNull, allocateCell<JSGlobalObject>(vm.heap)) JSGlobalObject(vm, structure);
+ globalObject->finishCreation(vm);
+ vm.heap.addFinalizer(globalObject, destroy);
return globalObject;
}
@@ -209,20 +209,20 @@
bool hasProfiler() const { return globalObjectMethodTable()->supportsProfiling(this); }
protected:
- JS_EXPORT_PRIVATE explicit JSGlobalObject(JSGlobalData&, Structure*, const GlobalObjectMethodTable* = 0);
+ JS_EXPORT_PRIVATE explicit JSGlobalObject(VM&, Structure*, const GlobalObjectMethodTable* = 0);
- void finishCreation(JSGlobalData& globalData)
+ void finishCreation(VM& vm)
{
- Base::finishCreation(globalData);
- structure()->setGlobalObject(globalData, this);
+ Base::finishCreation(vm);
+ structure()->setGlobalObject(vm, this);
m_experimentsEnabled = m_globalObjectMethodTable->javaScriptExperimentsEnabled(this);
init(this);
}
- void finishCreation(JSGlobalData& globalData, JSObject* thisValue)
+ void finishCreation(VM& vm, JSObject* thisValue)
{
- Base::finishCreation(globalData);
- structure()->setGlobalObject(globalData, this);
+ Base::finishCreation(vm);
+ structure()->setGlobalObject(vm, this);
m_experimentsEnabled = m_globalObjectMethodTable->javaScriptExperimentsEnabled(this);
init(thisValue);
}
@@ -344,7 +344,7 @@
return m_havingABadTimeWatchpoint->hasBeenInvalidated();
}
- void haveABadTime(JSGlobalData&);
+ void haveABadTime(VM&);
bool arrayPrototypeChainIsSane();
@@ -380,14 +380,14 @@
m_evalDisabledErrorMessage = errorMessage;
}
- void resetPrototype(JSGlobalData&, JSValue prototype);
+ void resetPrototype(VM&, JSValue prototype);
- JSGlobalData& globalData() const { return *Heap::heap(this)->globalData(); }
+ VM& vm() const { return *Heap::heap(this)->vm(); }
JSObject* globalThis() const;
- static Structure* createStructure(JSGlobalData& globalData, JSValue prototype)
+ static Structure* createStructure(VM& vm, JSValue prototype)
{
- return Structure::create(globalData, 0, prototype, TypeInfo(GlobalObjectType, StructureFlags), &s_info);
+ return Structure::create(vm, 0, prototype, TypeInfo(GlobalObjectType, StructureFlags), &s_info);
}
void registerWeakMap(OpaqueJSWeakObjectMap* map)
@@ -434,7 +434,7 @@
JS_EXPORT_PRIVATE static JSC::JSObject* toThisObject(JSC::JSCell*, JSC::ExecState*);
- JS_EXPORT_PRIVATE void setGlobalThis(JSGlobalData&, JSObject* globalThis);
+ JS_EXPORT_PRIVATE void setGlobalThis(VM&, JSObject* globalThis);
private:
friend class LLIntOffsetsExtractor;
@@ -478,13 +478,13 @@
// For any ExecState that's not a globalExec, the
// dynamic global object must be set since code is running
- ASSERT(globalData().dynamicGlobalObject);
- return globalData().dynamicGlobalObject;
+ ASSERT(vm().dynamicGlobalObject);
+ return vm().dynamicGlobalObject;
}
inline JSArray* constructEmptyArray(ExecState* exec, ArrayAllocationProfile* profile, JSGlobalObject* globalObject, unsigned initialLength = 0)
{
- return ArrayAllocationProfile::updateLastAllocationFor(profile, JSArray::create(exec->globalData(), initialLength >= MIN_SPARSE_ARRAY_INDEX ? globalObject->arrayStructureForIndexingTypeDuringAllocation(ArrayWithArrayStorage) : globalObject->arrayStructureForProfileDuringAllocation(profile), initialLength));
+ return ArrayAllocationProfile::updateLastAllocationFor(profile, JSArray::create(exec->vm(), initialLength >= MIN_SPARSE_ARRAY_INDEX ? globalObject->arrayStructureForIndexingTypeDuringAllocation(ArrayWithArrayStorage) : globalObject->arrayStructureForProfileDuringAllocation(profile), initialLength));
}
inline JSArray* constructEmptyArray(ExecState* exec, ArrayAllocationProfile* profile, unsigned initialLength = 0)
@@ -515,7 +515,7 @@
class DynamicGlobalObjectScope {
WTF_MAKE_NONCOPYABLE(DynamicGlobalObjectScope);
public:
- JS_EXPORT_PRIVATE DynamicGlobalObjectScope(JSGlobalData&, JSGlobalObject*);
+ JS_EXPORT_PRIVATE DynamicGlobalObjectScope(VM&, JSGlobalObject*);
~DynamicGlobalObjectScope()
{
diff --git a/Source/JavaScriptCore/runtime/JSGlobalObjectFunctions.cpp b/Source/JavaScriptCore/runtime/JSGlobalObjectFunctions.cpp
index 78503d6..dc6694e 100644
--- a/Source/JavaScriptCore/runtime/JSGlobalObjectFunctions.cpp
+++ b/Source/JavaScriptCore/runtime/JSGlobalObjectFunctions.cpp
@@ -736,7 +736,7 @@
if (!thisObject->isExtensible())
return throwVMError(exec, createTypeError(exec, StrictModeReadonlyPropertyWriteError));
- if (!thisObject->setPrototypeWithCycleCheck(exec->globalData(), value))
+ if (!thisObject->setPrototypeWithCycleCheck(exec->vm(), value))
throwError(exec, createError(exec, "cyclic __proto__ value"));
return JSValue::encode(jsUndefined());
}
diff --git a/Source/JavaScriptCore/runtime/JSLock.cpp b/Source/JavaScriptCore/runtime/JSLock.cpp
index 4ad3cb9..4baa2a6 100644
--- a/Source/JavaScriptCore/runtime/JSLock.cpp
+++ b/Source/JavaScriptCore/runtime/JSLock.cpp
@@ -51,40 +51,40 @@
}
JSLockHolder::JSLockHolder(ExecState* exec)
- : m_globalData(&exec->globalData())
+ : m_vm(&exec->vm())
{
init();
}
-JSLockHolder::JSLockHolder(JSGlobalData* globalData)
- : m_globalData(globalData)
+JSLockHolder::JSLockHolder(VM* vm)
+ : m_vm(vm)
{
init();
}
-JSLockHolder::JSLockHolder(JSGlobalData& globalData)
- : m_globalData(&globalData)
+JSLockHolder::JSLockHolder(VM& vm)
+ : m_vm(&vm)
{
init();
}
void JSLockHolder::init()
{
- m_globalData->apiLock().lock();
+ m_vm->apiLock().lock();
}
JSLockHolder::~JSLockHolder()
{
- RefPtr<JSLock> apiLock(&m_globalData->apiLock());
- m_globalData.clear();
+ RefPtr<JSLock> apiLock(&m_vm->apiLock());
+ m_vm.clear();
apiLock->unlock();
}
-JSLock::JSLock(JSGlobalData* globalData)
+JSLock::JSLock(VM* vm)
: m_ownerThread(0)
, m_lockCount(0)
, m_lockDropDepth(0)
- , m_globalData(globalData)
+ , m_vm(vm)
{
m_spinLock.Init();
}
@@ -93,10 +93,10 @@
{
}
-void JSLock::willDestroyGlobalData(JSGlobalData* globalData)
+void JSLock::willDestroyVM(VM* vm)
{
- ASSERT_UNUSED(globalData, m_globalData == globalData);
- m_globalData = 0;
+ ASSERT_UNUSED(vm, m_vm == vm);
+ m_vm = 0;
}
void JSLock::lock()
@@ -133,12 +133,12 @@
void JSLock::lock(ExecState* exec)
{
- exec->globalData().apiLock().lock();
+ exec->vm().apiLock().lock();
}
void JSLock::unlock(ExecState* exec)
{
- exec->globalData().apiLock().unlock();
+ exec->vm().apiLock().unlock();
}
bool JSLock::currentThreadIsHoldingLock()
@@ -215,21 +215,21 @@
JSLock::DropAllLocks::DropAllLocks(ExecState* exec)
: m_lockCount(0)
- , m_globalData(&exec->globalData())
+ , m_vm(&exec->vm())
{
- m_lockCount = m_globalData->apiLock().dropAllLocks();
+ m_lockCount = m_vm->apiLock().dropAllLocks();
}
-JSLock::DropAllLocks::DropAllLocks(JSGlobalData* globalData)
+JSLock::DropAllLocks::DropAllLocks(VM* vm)
: m_lockCount(0)
- , m_globalData(globalData)
+ , m_vm(vm)
{
- m_lockCount = m_globalData->apiLock().dropAllLocks();
+ m_lockCount = m_vm->apiLock().dropAllLocks();
}
JSLock::DropAllLocks::~DropAllLocks()
{
- m_globalData->apiLock().grabAllLocks(m_lockCount);
+ m_vm->apiLock().grabAllLocks(m_lockCount);
}
} // namespace JSC
diff --git a/Source/JavaScriptCore/runtime/JSLock.h b/Source/JavaScriptCore/runtime/JSLock.h
index 2428af0..83bcc24 100644
--- a/Source/JavaScriptCore/runtime/JSLock.h
+++ b/Source/JavaScriptCore/runtime/JSLock.h
@@ -49,10 +49,10 @@
// thread acquired it to begin with.
class ExecState;
- class JSGlobalData;
+ class VM;
// This class is used to protect the initialization of the legacy single
- // shared JSGlobalData.
+ // shared VM.
class GlobalJSLock {
WTF_MAKE_NONCOPYABLE(GlobalJSLock);
public:
@@ -66,21 +66,21 @@
class JSLockHolder {
public:
- JS_EXPORT_PRIVATE JSLockHolder(JSGlobalData*);
- JS_EXPORT_PRIVATE JSLockHolder(JSGlobalData&);
+ JS_EXPORT_PRIVATE JSLockHolder(VM*);
+ JS_EXPORT_PRIVATE JSLockHolder(VM&);
JS_EXPORT_PRIVATE JSLockHolder(ExecState*);
JS_EXPORT_PRIVATE ~JSLockHolder();
private:
void init();
- RefPtr<JSGlobalData> m_globalData;
+ RefPtr<VM> m_vm;
};
class JSLock : public ThreadSafeRefCounted<JSLock> {
WTF_MAKE_NONCOPYABLE(JSLock);
public:
- JSLock(JSGlobalData*);
+ JSLock(VM*);
JS_EXPORT_PRIVATE ~JSLock();
JS_EXPORT_PRIVATE void lock();
@@ -88,10 +88,10 @@
static void lock(ExecState*);
static void unlock(ExecState*);
- static void lock(JSGlobalData&);
- static void unlock(JSGlobalData&);
+ static void lock(VM&);
+ static void unlock(VM&);
- JSGlobalData* globalData() { return m_globalData; }
+ VM* vm() { return m_vm; }
JS_EXPORT_PRIVATE bool currentThreadIsHoldingLock();
@@ -99,18 +99,18 @@
unsigned dropAllLocksUnconditionally();
void grabAllLocks(unsigned lockCount);
- void willDestroyGlobalData(JSGlobalData*);
+ void willDestroyVM(VM*);
class DropAllLocks {
WTF_MAKE_NONCOPYABLE(DropAllLocks);
public:
JS_EXPORT_PRIVATE DropAllLocks(ExecState* exec);
- JS_EXPORT_PRIVATE DropAllLocks(JSGlobalData*);
+ JS_EXPORT_PRIVATE DropAllLocks(VM*);
JS_EXPORT_PRIVATE ~DropAllLocks();
private:
intptr_t m_lockCount;
- RefPtr<JSGlobalData> m_globalData;
+ RefPtr<VM> m_vm;
};
private:
@@ -119,7 +119,7 @@
ThreadIdentifier m_ownerThread;
intptr_t m_lockCount;
unsigned m_lockDropDepth;
- JSGlobalData* m_globalData;
+ VM* m_vm;
};
} // namespace
diff --git a/Source/JavaScriptCore/runtime/JSNameScope.h b/Source/JavaScriptCore/runtime/JSNameScope.h
index e67370d..4376329 100644
--- a/Source/JavaScriptCore/runtime/JSNameScope.h
+++ b/Source/JavaScriptCore/runtime/JSNameScope.h
@@ -56,15 +56,15 @@
static bool getOwnPropertySlot(JSCell*, ExecState*, PropertyName, PropertySlot&);
static void put(JSCell*, ExecState*, PropertyName, JSValue, PutPropertySlot&);
- static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue proto) { return Structure::create(globalData, globalObject, proto, TypeInfo(NameScopeObjectType, StructureFlags), &s_info); }
+ static Structure* createStructure(VM& vm, JSGlobalObject* globalObject, JSValue proto) { return Structure::create(vm, globalObject, proto, TypeInfo(NameScopeObjectType, StructureFlags), &s_info); }
static const ClassInfo s_info;
protected:
void finishCreation(ExecState* exec, const Identifier& identifier, JSValue value, unsigned attributes)
{
- Base::finishCreation(exec->globalData());
- m_registerStore.set(exec->globalData(), this, value);
+ Base::finishCreation(exec->vm());
+ m_registerStore.set(exec->vm(), this, value);
symbolTable()->add(identifier.impl(), SymbolTableEntry(-1, attributes));
}
@@ -73,7 +73,7 @@
private:
JSNameScope(ExecState* exec, JSScope* next)
: Base(
- exec->globalData(),
+ exec->vm(),
exec->lexicalGlobalObject()->nameScopeStructure(),
reinterpret_cast<Register*>(&m_registerStore + 1),
next
diff --git a/Source/JavaScriptCore/runtime/JSNotAnObject.h b/Source/JavaScriptCore/runtime/JSNotAnObject.h
index 3636c9b..4ec73ac 100644
--- a/Source/JavaScriptCore/runtime/JSNotAnObject.h
+++ b/Source/JavaScriptCore/runtime/JSNotAnObject.h
@@ -39,7 +39,7 @@
class JSNotAnObject : public JSNonFinalObject {
private:
JSNotAnObject(ExecState* exec)
- : JSNonFinalObject(exec->globalData(), exec->globalData().notAnObjectStructure.get())
+ : JSNonFinalObject(exec->vm(), exec->vm().notAnObjectStructure.get())
{
}
@@ -49,13 +49,13 @@
static JSNotAnObject* create(ExecState* exec)
{
JSNotAnObject* object = new (NotNull, allocateCell<JSNotAnObject>(*exec->heap())) JSNotAnObject(exec);
- object->finishCreation(exec->globalData());
+ object->finishCreation(exec->vm());
return object;
}
- static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype)
+ static Structure* createStructure(VM& vm, JSGlobalObject* globalObject, JSValue prototype)
{
- return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), &s_info);
+ return Structure::create(vm, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), &s_info);
}
static const ClassInfo s_info;
diff --git a/Source/JavaScriptCore/runtime/JSONObject.cpp b/Source/JavaScriptCore/runtime/JSONObject.cpp
index e6cf27a..91b412e 100644
--- a/Source/JavaScriptCore/runtime/JSONObject.cpp
+++ b/Source/JavaScriptCore/runtime/JSONObject.cpp
@@ -55,13 +55,13 @@
namespace JSC {
JSONObject::JSONObject(JSGlobalObject* globalObject, Structure* structure)
- : JSNonFinalObject(globalObject->globalData(), structure)
+ : JSNonFinalObject(globalObject->vm(), structure)
{
}
void JSONObject::finishCreation(JSGlobalObject* globalObject)
{
- Base::finishCreation(globalObject->globalData());
+ Base::finishCreation(globalObject->vm());
ASSERT(inherits(&s_info));
}
@@ -90,7 +90,7 @@
private:
class Holder {
public:
- Holder(JSGlobalData&, JSObject*);
+ Holder(VM&, JSObject*);
JSObject* object() const { return m_object.get(); }
@@ -217,7 +217,7 @@
if (m_replacer.asObject()->inherits(&JSArray::s_info)) {
m_usingArrayReplacer = true;
Handle<JSObject> array = m_replacer.asObject();
- unsigned length = array->get(exec, exec->globalData().propertyNames->length).toUInt32(exec);
+ unsigned length = array->get(exec, exec->vm().propertyNames->length).toUInt32(exec);
for (unsigned i = 0; i < length; ++i) {
JSValue name = array->get(exec, i);
if (exec->hadException())
@@ -240,18 +240,18 @@
{
JSObject* object = constructEmptyObject(m_exec);
if (m_exec->hadException())
- return Local<Unknown>(m_exec->globalData(), jsNull());
+ return Local<Unknown>(m_exec->vm(), jsNull());
- PropertyNameForFunctionCall emptyPropertyName(m_exec->globalData().propertyNames->emptyIdentifier);
- object->putDirect(m_exec->globalData(), m_exec->globalData().propertyNames->emptyIdentifier, value.get());
+ PropertyNameForFunctionCall emptyPropertyName(m_exec->vm().propertyNames->emptyIdentifier);
+ object->putDirect(m_exec->vm(), m_exec->vm().propertyNames->emptyIdentifier, value.get());
StringBuilder result;
if (appendStringifiedValue(result, value.get(), object, emptyPropertyName) != StringifySucceeded)
- return Local<Unknown>(m_exec->globalData(), jsUndefined());
+ return Local<Unknown>(m_exec->vm(), jsUndefined());
if (m_exec->hadException())
- return Local<Unknown>(m_exec->globalData(), jsNull());
+ return Local<Unknown>(m_exec->vm(), jsNull());
- return Local<Unknown>(m_exec->globalData(), jsString(m_exec, result.toString()));
+ return Local<Unknown>(m_exec->vm(), jsString(m_exec, result.toString()));
}
template <typename CharType>
@@ -320,10 +320,10 @@
inline JSValue Stringifier::toJSON(JSValue value, const PropertyNameForFunctionCall& propertyName)
{
ASSERT(!m_exec->hadException());
- if (!value.isObject() || !asObject(value)->hasProperty(m_exec, m_exec->globalData().propertyNames->toJSON))
+ if (!value.isObject() || !asObject(value)->hasProperty(m_exec, m_exec->vm().propertyNames->toJSON))
return value;
- JSValue toJSONFunction = asObject(value)->get(m_exec, m_exec->globalData().propertyNames->toJSON);
+ JSValue toJSONFunction = asObject(value)->get(m_exec, m_exec->vm().propertyNames->toJSON);
if (m_exec->hadException())
return jsNull();
@@ -416,7 +416,7 @@
}
}
bool holderStackWasEmpty = m_holderStack.isEmpty();
- m_holderStack.append(Holder(m_exec->globalData(), object));
+ m_holderStack.append(Holder(m_exec->vm(), object));
if (!holderStackWasEmpty)
return StringifySucceeded;
@@ -459,8 +459,8 @@
builder.append(m_indent);
}
-inline Stringifier::Holder::Holder(JSGlobalData& globalData, JSObject* object)
- : m_object(globalData, object)
+inline Stringifier::Holder::Holder(VM& vm, JSObject* object)
+ : m_object(vm, object)
, m_isArray(object->inherits(&JSArray::s_info))
, m_index(0)
#ifndef NDEBUG
@@ -479,7 +479,7 @@
if (!m_index) {
if (m_isArray) {
m_isJSArray = isJSArray(m_object.get());
- m_size = m_object->get(exec, exec->globalData().propertyNames->length).toUInt32(exec);
+ m_size = m_object->get(exec, exec->vm().propertyNames->length).toUInt32(exec);
builder.append('[');
} else {
if (stringifier.m_usingArrayReplacer)
@@ -604,7 +604,7 @@
public:
Walker(ExecState* exec, Handle<JSObject> function, CallType callType, CallData callData)
: m_exec(exec)
- , m_function(exec->globalData(), function)
+ , m_function(exec->vm(), function)
, m_callType(callType)
, m_callData(callData)
{
@@ -635,8 +635,8 @@
{
Vector<PropertyNameArray, 16, UnsafeVectorOverflow> propertyStack;
Vector<uint32_t, 16, UnsafeVectorOverflow> indexStack;
- LocalStack<JSObject, 16> objectStack(m_exec->globalData());
- LocalStack<JSArray, 16> arrayStack(m_exec->globalData());
+ LocalStack<JSObject, 16> objectStack(m_exec->vm());
+ LocalStack<JSArray, 16> arrayStack(m_exec->vm());
Vector<WalkerState, 16, UnsafeVectorOverflow> stateStack;
WalkerState state = StateUnknown;
@@ -772,7 +772,7 @@
}
JSObject* finalHolder = constructEmptyObject(m_exec);
PutPropertySlot slot;
- finalHolder->methodTable()->put(finalHolder, m_exec, m_exec->globalData().propertyNames->emptyIdentifier, outValue, slot);
+ finalHolder->methodTable()->put(finalHolder, m_exec, m_exec->vm().propertyNames->emptyIdentifier, outValue, slot);
return callReviver(finalHolder, jsEmptyString(m_exec), outValue);
}
@@ -786,7 +786,7 @@
return JSValue::encode(jsNull());
JSValue unfiltered;
- LocalScope scope(exec->globalData());
+ LocalScope scope(exec->vm());
if (source.is8Bit()) {
LiteralParser<LChar> jsonParser(exec, source.characters8(), source.length(), StrictJSON);
unfiltered = jsonParser.tryLiteralParse();
@@ -807,7 +807,7 @@
CallType callType = getCallData(function, callData);
if (callType == CallTypeNone)
return JSValue::encode(unfiltered);
- return JSValue::encode(Walker(exec, Local<JSObject>(exec->globalData(), asObject(function)), callType, callData).walk(unfiltered));
+ return JSValue::encode(Walker(exec, Local<JSObject>(exec->vm(), asObject(function)), callType, callData).walk(unfiltered));
}
// ECMA-262 v5 15.12.3
@@ -815,17 +815,17 @@
{
if (!exec->argumentCount())
return throwVMError(exec, createError(exec, ASCIILiteral("No input to stringify")));
- LocalScope scope(exec->globalData());
- Local<Unknown> value(exec->globalData(), exec->argument(0));
- Local<Unknown> replacer(exec->globalData(), exec->argument(1));
- Local<Unknown> space(exec->globalData(), exec->argument(2));
+ LocalScope scope(exec->vm());
+ Local<Unknown> value(exec->vm(), exec->argument(0));
+ Local<Unknown> replacer(exec->vm(), exec->argument(1));
+ Local<Unknown> space(exec->vm(), exec->argument(2));
return JSValue::encode(Stringifier(exec, replacer, space).stringify(value).get());
}
String JSONStringify(ExecState* exec, JSValue value, unsigned indent)
{
- LocalScope scope(exec->globalData());
- Local<Unknown> result = Stringifier(exec, Local<Unknown>(exec->globalData(), jsNull()), Local<Unknown>(exec->globalData(), jsNumber(indent))).stringify(Local<Unknown>(exec->globalData(), value));
+ LocalScope scope(exec->vm());
+ Local<Unknown> result = Stringifier(exec, Local<Unknown>(exec->vm(), jsNull()), Local<Unknown>(exec->vm(), jsNumber(indent))).stringify(Local<Unknown>(exec->vm(), value));
if (result.isUndefinedOrNull())
return String();
return result.getString(exec);
diff --git a/Source/JavaScriptCore/runtime/JSONObject.h b/Source/JavaScriptCore/runtime/JSONObject.h
index b537b91..c028090 100644
--- a/Source/JavaScriptCore/runtime/JSONObject.h
+++ b/Source/JavaScriptCore/runtime/JSONObject.h
@@ -43,9 +43,9 @@
return object;
}
- static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype)
+ static Structure* createStructure(VM& vm, JSGlobalObject* globalObject, JSValue prototype)
{
- return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), &s_info);
+ return Structure::create(vm, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), &s_info);
}
static const ClassInfo s_info;
diff --git a/Source/JavaScriptCore/runtime/JSObject.cpp b/Source/JavaScriptCore/runtime/JSObject.cpp
index dbe9be6..b133e49 100644
--- a/Source/JavaScriptCore/runtime/JSObject.cpp
+++ b/Source/JavaScriptCore/runtime/JSObject.cpp
@@ -342,7 +342,7 @@
JSObject* thisObject = jsCast<JSObject*>(cell);
ASSERT(value);
ASSERT(!Heap::heap(value) || Heap::heap(value) == Heap::heap(thisObject));
- JSGlobalData& globalData = exec->globalData();
+ VM& vm = exec->vm();
// Try indexed put first. This is required for correctness, since loads on property names that appear like
// valid indices will never look in the named property storage.
@@ -358,8 +358,8 @@
for (JSObject* obj = thisObject; !obj->structure()->hasReadOnlyOrGetterSetterPropertiesExcludingProto(); obj = asObject(prototype)) {
prototype = obj->prototype();
if (prototype.isNull()) {
- ASSERT(!thisObject->structure()->prototypeChainMayInterceptStoreTo(exec->globalData(), propertyName));
- if (!thisObject->putDirectInternal<PutModePut>(globalData, propertyName, value, 0, slot, getCallableObject(value))
+ ASSERT(!thisObject->structure()->prototypeChainMayInterceptStoreTo(exec->vm(), propertyName));
+ if (!thisObject->putDirectInternal<PutModePut>(vm, propertyName, value, 0, slot, getCallableObject(value))
&& slot.isStrictMode())
throwTypeError(exec, ASCIILiteral(StrictModeReadonlyPropertyWriteError));
return;
@@ -371,10 +371,10 @@
for (obj = thisObject; ; obj = asObject(prototype)) {
unsigned attributes;
JSCell* specificValue;
- PropertyOffset offset = obj->structure()->get(globalData, propertyName, attributes, specificValue);
+ PropertyOffset offset = obj->structure()->get(vm, propertyName, attributes, specificValue);
if (isValidOffset(offset)) {
if (attributes & ReadOnly) {
- ASSERT(thisObject->structure()->prototypeChainMayInterceptStoreTo(exec->globalData(), propertyName) || obj == thisObject);
+ ASSERT(thisObject->structure()->prototypeChainMayInterceptStoreTo(exec->vm(), propertyName) || obj == thisObject);
if (slot.isStrictMode())
throwError(exec, createTypeError(exec, ASCIILiteral(StrictModeReadonlyPropertyWriteError)));
return;
@@ -383,7 +383,7 @@
JSValue gs = obj->getDirect(offset);
if (gs.isGetterSetter()) {
ASSERT(attributes & Accessor);
- ASSERT(thisObject->structure()->prototypeChainMayInterceptStoreTo(exec->globalData(), propertyName) || obj == thisObject);
+ ASSERT(thisObject->structure()->prototypeChainMayInterceptStoreTo(exec->vm(), propertyName) || obj == thisObject);
JSObject* setterFunc = asGetterSetter(gs)->setter();
if (!setterFunc) {
if (slot.isStrictMode())
@@ -412,8 +412,8 @@
break;
}
- ASSERT(!thisObject->structure()->prototypeChainMayInterceptStoreTo(exec->globalData(), propertyName) || obj == thisObject);
- if (!thisObject->putDirectInternal<PutModePut>(globalData, propertyName, value, 0, slot, getCallableObject(value)) && slot.isStrictMode())
+ ASSERT(!thisObject->structure()->prototypeChainMayInterceptStoreTo(exec->vm(), propertyName) || obj == thisObject);
+ if (!thisObject->putDirectInternal<PutModePut>(vm, propertyName, value, 0, slot, getCallableObject(value)) && slot.isStrictMode())
throwTypeError(exec, ASCIILiteral(StrictModeReadonlyPropertyWriteError));
return;
}
@@ -433,7 +433,7 @@
break;
case ALL_UNDECIDED_INDEXING_TYPES: {
- thisObject->convertUndecidedForValue(exec->globalData(), value);
+ thisObject->convertUndecidedForValue(exec->vm(), value);
// Reloop.
putByIndex(cell, exec, propertyName, value, shouldThrow);
return;
@@ -441,7 +441,7 @@
case ALL_INT32_INDEXING_TYPES: {
if (!value.isInt32()) {
- thisObject->convertInt32ForValue(exec->globalData(), value);
+ thisObject->convertInt32ForValue(exec->vm(), value);
putByIndex(cell, exec, propertyName, value, shouldThrow);
return;
}
@@ -452,7 +452,7 @@
Butterfly* butterfly = thisObject->m_butterfly;
if (propertyName >= butterfly->vectorLength())
break;
- butterfly->contiguous()[propertyName].set(exec->globalData(), thisObject, value);
+ butterfly->contiguous()[propertyName].set(exec->vm(), thisObject, value);
if (propertyName >= butterfly->publicLength())
butterfly->setPublicLength(propertyName + 1);
return;
@@ -460,14 +460,14 @@
case ALL_DOUBLE_INDEXING_TYPES: {
if (!value.isNumber()) {
- thisObject->convertDoubleToContiguous(exec->globalData());
+ thisObject->convertDoubleToContiguous(exec->vm());
// Reloop.
putByIndex(cell, exec, propertyName, value, shouldThrow);
return;
}
double valueAsDouble = value.asNumber();
if (valueAsDouble != valueAsDouble) {
- thisObject->convertDoubleToContiguous(exec->globalData());
+ thisObject->convertDoubleToContiguous(exec->vm());
// Reloop.
putByIndex(cell, exec, propertyName, value, shouldThrow);
return;
@@ -499,7 +499,7 @@
} else if (!valueSlot)
++storage->m_numValuesInVector;
- valueSlot.set(exec->globalData(), thisObject, value);
+ valueSlot.set(exec->vm(), thisObject, value);
return;
}
@@ -526,7 +526,7 @@
++storage->m_numValuesInVector;
}
- valueSlot.set(exec->globalData(), thisObject, value);
+ valueSlot.set(exec->vm(), thisObject, value);
return;
}
@@ -537,12 +537,12 @@
thisObject->putByIndexBeyondVectorLength(exec, propertyName, value, shouldThrow);
}
-ArrayStorage* JSObject::enterDictionaryIndexingModeWhenArrayStorageAlreadyExists(JSGlobalData& globalData, ArrayStorage* storage)
+ArrayStorage* JSObject::enterDictionaryIndexingModeWhenArrayStorageAlreadyExists(VM& vm, ArrayStorage* storage)
{
SparseArrayValueMap* map = storage->m_sparseMap.get();
if (!map)
- map = allocateSparseIndexMap(globalData);
+ map = allocateSparseIndexMap(vm);
if (map->sparseMode())
return storage;
@@ -555,21 +555,21 @@
// This will always be a new entry in the map, so no need to check we can write,
// and attributes are default so no need to set them.
if (value)
- map->add(this, i).iterator->value.set(globalData, this, value);
+ map->add(this, i).iterator->value.set(vm, this, value);
}
- Butterfly* newButterfly = storage->butterfly()->resizeArray(globalData, structure(), 0, ArrayStorage::sizeFor(0));
+ Butterfly* newButterfly = storage->butterfly()->resizeArray(vm, structure(), 0, ArrayStorage::sizeFor(0));
RELEASE_ASSERT(newButterfly);
m_butterfly = newButterfly;
newButterfly->arrayStorage()->m_indexBias = 0;
newButterfly->arrayStorage()->setVectorLength(0);
- newButterfly->arrayStorage()->m_sparseMap.set(globalData, this, map);
+ newButterfly->arrayStorage()->m_sparseMap.set(vm, this, map);
return newButterfly->arrayStorage();
}
-void JSObject::enterDictionaryIndexingMode(JSGlobalData& globalData)
+void JSObject::enterDictionaryIndexingMode(VM& vm)
{
switch (structure()->indexingType()) {
case ALL_BLANK_INDEXING_TYPES:
@@ -579,10 +579,10 @@
case ALL_CONTIGUOUS_INDEXING_TYPES:
// NOTE: this is horribly inefficient, as it will perform two conversions. We could optimize
// this case if we ever cared.
- enterDictionaryIndexingModeWhenArrayStorageAlreadyExists(globalData, ensureArrayStorageSlow(globalData));
+ enterDictionaryIndexingModeWhenArrayStorageAlreadyExists(vm, ensureArrayStorageSlow(vm));
break;
case ALL_ARRAY_STORAGE_INDEXING_TYPES:
- enterDictionaryIndexingModeWhenArrayStorageAlreadyExists(globalData, m_butterfly->arrayStorage());
+ enterDictionaryIndexingModeWhenArrayStorageAlreadyExists(vm, m_butterfly->arrayStorage());
break;
default:
@@ -590,20 +590,20 @@
}
}
-void JSObject::notifyPresenceOfIndexedAccessors(JSGlobalData& globalData)
+void JSObject::notifyPresenceOfIndexedAccessors(VM& vm)
{
if (mayInterceptIndexedAccesses())
return;
- setStructure(globalData, Structure::nonPropertyTransition(globalData, structure(), AddIndexedAccessors));
+ setStructure(vm, Structure::nonPropertyTransition(vm, structure(), AddIndexedAccessors));
- if (!globalData.prototypeMap.isPrototype(this))
+ if (!vm.prototypeMap.isPrototype(this))
return;
- globalObject()->haveABadTime(globalData);
+ globalObject()->haveABadTime(vm);
}
-Butterfly* JSObject::createInitialIndexedStorage(JSGlobalData& globalData, unsigned length, size_t elementSize)
+Butterfly* JSObject::createInitialIndexedStorage(VM& vm, unsigned length, size_t elementSize)
{
ASSERT(length < MAX_ARRAY_INDEX);
IndexingType oldType = structure()->indexingType();
@@ -612,53 +612,53 @@
ASSERT(!indexingShouldBeSparse());
unsigned vectorLength = std::max(length, BASE_VECTOR_LEN);
Butterfly* newButterfly = Butterfly::createOrGrowArrayRight(m_butterfly,
- globalData, structure(), structure()->outOfLineCapacity(), false, 0,
+ vm, structure(), structure()->outOfLineCapacity(), false, 0,
elementSize * vectorLength);
newButterfly->setPublicLength(length);
newButterfly->setVectorLength(vectorLength);
return newButterfly;
}
-Butterfly* JSObject::createInitialUndecided(JSGlobalData& globalData, unsigned length)
+Butterfly* JSObject::createInitialUndecided(VM& vm, unsigned length)
{
- Butterfly* newButterfly = createInitialIndexedStorage(globalData, length, sizeof(EncodedJSValue));
- Structure* newStructure = Structure::nonPropertyTransition(globalData, structure(), AllocateUndecided);
- setButterfly(globalData, newButterfly, newStructure);
+ Butterfly* newButterfly = createInitialIndexedStorage(vm, length, sizeof(EncodedJSValue));
+ Structure* newStructure = Structure::nonPropertyTransition(vm, structure(), AllocateUndecided);
+ setButterfly(vm, newButterfly, newStructure);
return newButterfly;
}
-ContiguousJSValues JSObject::createInitialInt32(JSGlobalData& globalData, unsigned length)
+ContiguousJSValues JSObject::createInitialInt32(VM& vm, unsigned length)
{
- Butterfly* newButterfly = createInitialIndexedStorage(globalData, length, sizeof(EncodedJSValue));
- Structure* newStructure = Structure::nonPropertyTransition(globalData, structure(), AllocateInt32);
- setButterfly(globalData, newButterfly, newStructure);
+ Butterfly* newButterfly = createInitialIndexedStorage(vm, length, sizeof(EncodedJSValue));
+ Structure* newStructure = Structure::nonPropertyTransition(vm, structure(), AllocateInt32);
+ setButterfly(vm, newButterfly, newStructure);
return newButterfly->contiguousInt32();
}
-ContiguousDoubles JSObject::createInitialDouble(JSGlobalData& globalData, unsigned length)
+ContiguousDoubles JSObject::createInitialDouble(VM& vm, unsigned length)
{
- Butterfly* newButterfly = createInitialIndexedStorage(globalData, length, sizeof(double));
+ Butterfly* newButterfly = createInitialIndexedStorage(vm, length, sizeof(double));
for (unsigned i = newButterfly->vectorLength(); i--;)
newButterfly->contiguousDouble()[i] = QNaN;
- Structure* newStructure = Structure::nonPropertyTransition(globalData, structure(), AllocateDouble);
- setButterfly(globalData, newButterfly, newStructure);
+ Structure* newStructure = Structure::nonPropertyTransition(vm, structure(), AllocateDouble);
+ setButterfly(vm, newButterfly, newStructure);
return newButterfly->contiguousDouble();
}
-ContiguousJSValues JSObject::createInitialContiguous(JSGlobalData& globalData, unsigned length)
+ContiguousJSValues JSObject::createInitialContiguous(VM& vm, unsigned length)
{
- Butterfly* newButterfly = createInitialIndexedStorage(globalData, length, sizeof(EncodedJSValue));
- Structure* newStructure = Structure::nonPropertyTransition(globalData, structure(), AllocateContiguous);
- setButterfly(globalData, newButterfly, newStructure);
+ Butterfly* newButterfly = createInitialIndexedStorage(vm, length, sizeof(EncodedJSValue));
+ Structure* newStructure = Structure::nonPropertyTransition(vm, structure(), AllocateContiguous);
+ setButterfly(vm, newButterfly, newStructure);
return newButterfly->contiguous();
}
-ArrayStorage* JSObject::createArrayStorage(JSGlobalData& globalData, unsigned length, unsigned vectorLength)
+ArrayStorage* JSObject::createArrayStorage(VM& vm, unsigned length, unsigned vectorLength)
{
IndexingType oldType = structure()->indexingType();
ASSERT_UNUSED(oldType, !hasIndexedProperties(oldType));
Butterfly* newButterfly = Butterfly::createOrGrowArrayRight(m_butterfly,
- globalData, structure(), structure()->outOfLineCapacity(), false, 0,
+ vm, structure(), structure()->outOfLineCapacity(), false, 0,
ArrayStorage::sizeFor(vectorLength));
RELEASE_ASSERT(newButterfly);
@@ -668,49 +668,49 @@
result->m_sparseMap.clear();
result->m_numValuesInVector = 0;
result->m_indexBias = 0;
- Structure* newStructure = Structure::nonPropertyTransition(globalData, structure(), structure()->suggestedArrayStorageTransition());
- setButterfly(globalData, newButterfly, newStructure);
+ Structure* newStructure = Structure::nonPropertyTransition(vm, structure(), structure()->suggestedArrayStorageTransition());
+ setButterfly(vm, newButterfly, newStructure);
return result;
}
-ArrayStorage* JSObject::createInitialArrayStorage(JSGlobalData& globalData)
+ArrayStorage* JSObject::createInitialArrayStorage(VM& vm)
{
- return createArrayStorage(globalData, 0, BASE_VECTOR_LEN);
+ return createArrayStorage(vm, 0, BASE_VECTOR_LEN);
}
-ContiguousJSValues JSObject::convertUndecidedToInt32(JSGlobalData& globalData)
+ContiguousJSValues JSObject::convertUndecidedToInt32(VM& vm)
{
ASSERT(hasUndecided(structure()->indexingType()));
- setStructure(globalData, Structure::nonPropertyTransition(globalData, structure(), AllocateInt32));
+ setStructure(vm, Structure::nonPropertyTransition(vm, structure(), AllocateInt32));
return m_butterfly->contiguousInt32();
}
-ContiguousDoubles JSObject::convertUndecidedToDouble(JSGlobalData& globalData)
+ContiguousDoubles JSObject::convertUndecidedToDouble(VM& vm)
{
ASSERT(hasUndecided(structure()->indexingType()));
for (unsigned i = m_butterfly->vectorLength(); i--;)
m_butterfly->contiguousDouble()[i] = QNaN;
- setStructure(globalData, Structure::nonPropertyTransition(globalData, structure(), AllocateDouble));
+ setStructure(vm, Structure::nonPropertyTransition(vm, structure(), AllocateDouble));
return m_butterfly->contiguousDouble();
}
-ContiguousJSValues JSObject::convertUndecidedToContiguous(JSGlobalData& globalData)
+ContiguousJSValues JSObject::convertUndecidedToContiguous(VM& vm)
{
ASSERT(hasUndecided(structure()->indexingType()));
- setStructure(globalData, Structure::nonPropertyTransition(globalData, structure(), AllocateContiguous));
+ setStructure(vm, Structure::nonPropertyTransition(vm, structure(), AllocateContiguous));
return m_butterfly->contiguous();
}
-ArrayStorage* JSObject::constructConvertedArrayStorageWithoutCopyingElements(JSGlobalData& globalData, unsigned neededLength)
+ArrayStorage* JSObject::constructConvertedArrayStorageWithoutCopyingElements(VM& vm, unsigned neededLength)
{
unsigned publicLength = m_butterfly->publicLength();
unsigned propertyCapacity = structure()->outOfLineCapacity();
unsigned propertySize = structure()->outOfLineSize();
Butterfly* newButterfly = Butterfly::createUninitialized(
- globalData, 0, propertyCapacity, true, ArrayStorage::sizeFor(neededLength));
+ vm, 0, propertyCapacity, true, ArrayStorage::sizeFor(neededLength));
memcpy(
newButterfly->propertyStorage() - propertySize,
@@ -727,29 +727,29 @@
return newStorage;
}
-ArrayStorage* JSObject::convertUndecidedToArrayStorage(JSGlobalData& globalData, NonPropertyTransition transition, unsigned neededLength)
+ArrayStorage* JSObject::convertUndecidedToArrayStorage(VM& vm, NonPropertyTransition transition, unsigned neededLength)
{
ASSERT(hasUndecided(structure()->indexingType()));
- ArrayStorage* storage = constructConvertedArrayStorageWithoutCopyingElements(globalData, neededLength);
+ ArrayStorage* storage = constructConvertedArrayStorageWithoutCopyingElements(vm, neededLength);
// No need to copy elements.
- Structure* newStructure = Structure::nonPropertyTransition(globalData, structure(), transition);
- setButterfly(globalData, storage->butterfly(), newStructure);
+ Structure* newStructure = Structure::nonPropertyTransition(vm, structure(), transition);
+ setButterfly(vm, storage->butterfly(), newStructure);
return storage;
}
-ArrayStorage* JSObject::convertUndecidedToArrayStorage(JSGlobalData& globalData, NonPropertyTransition transition)
+ArrayStorage* JSObject::convertUndecidedToArrayStorage(VM& vm, NonPropertyTransition transition)
{
- return convertUndecidedToArrayStorage(globalData, transition, m_butterfly->vectorLength());
+ return convertUndecidedToArrayStorage(vm, transition, m_butterfly->vectorLength());
}
-ArrayStorage* JSObject::convertUndecidedToArrayStorage(JSGlobalData& globalData)
+ArrayStorage* JSObject::convertUndecidedToArrayStorage(VM& vm)
{
- return convertUndecidedToArrayStorage(globalData, structure()->suggestedArrayStorageTransition());
+ return convertUndecidedToArrayStorage(vm, structure()->suggestedArrayStorageTransition());
}
-ContiguousDoubles JSObject::convertInt32ToDouble(JSGlobalData& globalData)
+ContiguousDoubles JSObject::convertInt32ToDouble(VM& vm)
{
ASSERT(hasInt32(structure()->indexingType()));
@@ -765,23 +765,23 @@
*currentAsDouble = v.asInt32();
}
- setStructure(globalData, Structure::nonPropertyTransition(globalData, structure(), AllocateDouble));
+ setStructure(vm, Structure::nonPropertyTransition(vm, structure(), AllocateDouble));
return m_butterfly->contiguousDouble();
}
-ContiguousJSValues JSObject::convertInt32ToContiguous(JSGlobalData& globalData)
+ContiguousJSValues JSObject::convertInt32ToContiguous(VM& vm)
{
ASSERT(hasInt32(structure()->indexingType()));
- setStructure(globalData, Structure::nonPropertyTransition(globalData, structure(), AllocateContiguous));
+ setStructure(vm, Structure::nonPropertyTransition(vm, structure(), AllocateContiguous));
return m_butterfly->contiguous();
}
-ArrayStorage* JSObject::convertInt32ToArrayStorage(JSGlobalData& globalData, NonPropertyTransition transition, unsigned neededLength)
+ArrayStorage* JSObject::convertInt32ToArrayStorage(VM& vm, NonPropertyTransition transition, unsigned neededLength)
{
ASSERT(hasInt32(structure()->indexingType()));
- ArrayStorage* newStorage = constructConvertedArrayStorageWithoutCopyingElements(globalData, neededLength);
+ ArrayStorage* newStorage = constructConvertedArrayStorageWithoutCopyingElements(vm, neededLength);
for (unsigned i = m_butterfly->publicLength(); i--;) {
JSValue v = m_butterfly->contiguous()[i].get();
if (!v)
@@ -790,23 +790,23 @@
newStorage->m_numValuesInVector++;
}
- Structure* newStructure = Structure::nonPropertyTransition(globalData, structure(), transition);
- setButterfly(globalData, newStorage->butterfly(), newStructure);
+ Structure* newStructure = Structure::nonPropertyTransition(vm, structure(), transition);
+ setButterfly(vm, newStorage->butterfly(), newStructure);
return newStorage;
}
-ArrayStorage* JSObject::convertInt32ToArrayStorage(JSGlobalData& globalData, NonPropertyTransition transition)
+ArrayStorage* JSObject::convertInt32ToArrayStorage(VM& vm, NonPropertyTransition transition)
{
- return convertInt32ToArrayStorage(globalData, transition, m_butterfly->vectorLength());
+ return convertInt32ToArrayStorage(vm, transition, m_butterfly->vectorLength());
}
-ArrayStorage* JSObject::convertInt32ToArrayStorage(JSGlobalData& globalData)
+ArrayStorage* JSObject::convertInt32ToArrayStorage(VM& vm)
{
- return convertInt32ToArrayStorage(globalData, structure()->suggestedArrayStorageTransition());
+ return convertInt32ToArrayStorage(vm, structure()->suggestedArrayStorageTransition());
}
template<JSObject::DoubleToContiguousMode mode>
-ContiguousJSValues JSObject::genericConvertDoubleToContiguous(JSGlobalData& globalData)
+ContiguousJSValues JSObject::genericConvertDoubleToContiguous(VM& vm)
{
ASSERT(hasDouble(structure()->indexingType()));
@@ -831,25 +831,25 @@
currentAsValue->setWithoutWriteBarrier(v);
}
- setStructure(globalData, Structure::nonPropertyTransition(globalData, structure(), AllocateContiguous));
+ setStructure(vm, Structure::nonPropertyTransition(vm, structure(), AllocateContiguous));
return m_butterfly->contiguous();
}
-ContiguousJSValues JSObject::convertDoubleToContiguous(JSGlobalData& globalData)
+ContiguousJSValues JSObject::convertDoubleToContiguous(VM& vm)
{
- return genericConvertDoubleToContiguous<EncodeValueAsDouble>(globalData);
+ return genericConvertDoubleToContiguous<EncodeValueAsDouble>(vm);
}
-ContiguousJSValues JSObject::rageConvertDoubleToContiguous(JSGlobalData& globalData)
+ContiguousJSValues JSObject::rageConvertDoubleToContiguous(VM& vm)
{
- return genericConvertDoubleToContiguous<RageConvertDoubleToValue>(globalData);
+ return genericConvertDoubleToContiguous<RageConvertDoubleToValue>(vm);
}
-ArrayStorage* JSObject::convertDoubleToArrayStorage(JSGlobalData& globalData, NonPropertyTransition transition, unsigned neededLength)
+ArrayStorage* JSObject::convertDoubleToArrayStorage(VM& vm, NonPropertyTransition transition, unsigned neededLength)
{
ASSERT(hasDouble(structure()->indexingType()));
- ArrayStorage* newStorage = constructConvertedArrayStorageWithoutCopyingElements(globalData, neededLength);
+ ArrayStorage* newStorage = constructConvertedArrayStorageWithoutCopyingElements(vm, neededLength);
for (unsigned i = m_butterfly->publicLength(); i--;) {
double value = m_butterfly->contiguousDouble()[i];
if (value != value)
@@ -858,26 +858,26 @@
newStorage->m_numValuesInVector++;
}
- Structure* newStructure = Structure::nonPropertyTransition(globalData, structure(), transition);
- setButterfly(globalData, newStorage->butterfly(), newStructure);
+ Structure* newStructure = Structure::nonPropertyTransition(vm, structure(), transition);
+ setButterfly(vm, newStorage->butterfly(), newStructure);
return newStorage;
}
-ArrayStorage* JSObject::convertDoubleToArrayStorage(JSGlobalData& globalData, NonPropertyTransition transition)
+ArrayStorage* JSObject::convertDoubleToArrayStorage(VM& vm, NonPropertyTransition transition)
{
- return convertDoubleToArrayStorage(globalData, transition, m_butterfly->vectorLength());
+ return convertDoubleToArrayStorage(vm, transition, m_butterfly->vectorLength());
}
-ArrayStorage* JSObject::convertDoubleToArrayStorage(JSGlobalData& globalData)
+ArrayStorage* JSObject::convertDoubleToArrayStorage(VM& vm)
{
- return convertDoubleToArrayStorage(globalData, structure()->suggestedArrayStorageTransition());
+ return convertDoubleToArrayStorage(vm, structure()->suggestedArrayStorageTransition());
}
-ArrayStorage* JSObject::convertContiguousToArrayStorage(JSGlobalData& globalData, NonPropertyTransition transition, unsigned neededLength)
+ArrayStorage* JSObject::convertContiguousToArrayStorage(VM& vm, NonPropertyTransition transition, unsigned neededLength)
{
ASSERT(hasContiguous(structure()->indexingType()));
- ArrayStorage* newStorage = constructConvertedArrayStorageWithoutCopyingElements(globalData, neededLength);
+ ArrayStorage* newStorage = constructConvertedArrayStorageWithoutCopyingElements(vm, neededLength);
for (unsigned i = m_butterfly->publicLength(); i--;) {
JSValue v = m_butterfly->contiguous()[i].get();
if (!v)
@@ -886,71 +886,71 @@
newStorage->m_numValuesInVector++;
}
- Structure* newStructure = Structure::nonPropertyTransition(globalData, structure(), transition);
- setButterfly(globalData, newStorage->butterfly(), newStructure);
+ Structure* newStructure = Structure::nonPropertyTransition(vm, structure(), transition);
+ setButterfly(vm, newStorage->butterfly(), newStructure);
return newStorage;
}
-ArrayStorage* JSObject::convertContiguousToArrayStorage(JSGlobalData& globalData, NonPropertyTransition transition)
+ArrayStorage* JSObject::convertContiguousToArrayStorage(VM& vm, NonPropertyTransition transition)
{
- return convertContiguousToArrayStorage(globalData, transition, m_butterfly->vectorLength());
+ return convertContiguousToArrayStorage(vm, transition, m_butterfly->vectorLength());
}
-ArrayStorage* JSObject::convertContiguousToArrayStorage(JSGlobalData& globalData)
+ArrayStorage* JSObject::convertContiguousToArrayStorage(VM& vm)
{
- return convertContiguousToArrayStorage(globalData, structure()->suggestedArrayStorageTransition());
+ return convertContiguousToArrayStorage(vm, structure()->suggestedArrayStorageTransition());
}
-void JSObject::convertUndecidedForValue(JSGlobalData& globalData, JSValue value)
+void JSObject::convertUndecidedForValue(VM& vm, JSValue value)
{
if (value.isInt32()) {
- convertUndecidedToInt32(globalData);
+ convertUndecidedToInt32(vm);
return;
}
if (value.isDouble()) {
- convertUndecidedToDouble(globalData);
+ convertUndecidedToDouble(vm);
return;
}
- convertUndecidedToContiguous(globalData);
+ convertUndecidedToContiguous(vm);
}
-void JSObject::convertInt32ForValue(JSGlobalData& globalData, JSValue value)
+void JSObject::convertInt32ForValue(VM& vm, JSValue value)
{
ASSERT(!value.isInt32());
if (value.isDouble()) {
- convertInt32ToDouble(globalData);
+ convertInt32ToDouble(vm);
return;
}
- convertInt32ToContiguous(globalData);
+ convertInt32ToContiguous(vm);
}
-void JSObject::setIndexQuicklyToUndecided(JSGlobalData& globalData, unsigned index, JSValue value)
+void JSObject::setIndexQuicklyToUndecided(VM& vm, unsigned index, JSValue value)
{
ASSERT(index < m_butterfly->publicLength());
ASSERT(index < m_butterfly->vectorLength());
- convertUndecidedForValue(globalData, value);
- setIndexQuickly(globalData, index, value);
+ convertUndecidedForValue(vm, value);
+ setIndexQuickly(vm, index, value);
}
-void JSObject::convertInt32ToDoubleOrContiguousWhilePerformingSetIndex(JSGlobalData& globalData, unsigned index, JSValue value)
+void JSObject::convertInt32ToDoubleOrContiguousWhilePerformingSetIndex(VM& vm, unsigned index, JSValue value)
{
ASSERT(!value.isInt32());
- convertInt32ForValue(globalData, value);
- setIndexQuickly(globalData, index, value);
+ convertInt32ForValue(vm, value);
+ setIndexQuickly(vm, index, value);
}
-void JSObject::convertDoubleToContiguousWhilePerformingSetIndex(JSGlobalData& globalData, unsigned index, JSValue value)
+void JSObject::convertDoubleToContiguousWhilePerformingSetIndex(VM& vm, unsigned index, JSValue value)
{
ASSERT(!value.isNumber() || value.asNumber() != value.asNumber());
- convertDoubleToContiguous(globalData);
- setIndexQuickly(globalData, index, value);
+ convertDoubleToContiguous(vm);
+ setIndexQuickly(vm, index, value);
}
-ContiguousJSValues JSObject::ensureInt32Slow(JSGlobalData& globalData)
+ContiguousJSValues JSObject::ensureInt32Slow(VM& vm)
{
ASSERT(inherits(&s_info));
@@ -958,10 +958,10 @@
case ALL_BLANK_INDEXING_TYPES:
if (UNLIKELY(indexingShouldBeSparse() || structure()->needsSlowPutIndexing()))
return ContiguousJSValues();
- return createInitialInt32(globalData, 0);
+ return createInitialInt32(vm, 0);
case ALL_UNDECIDED_INDEXING_TYPES:
- return convertUndecidedToInt32(globalData);
+ return convertUndecidedToInt32(vm);
case ALL_DOUBLE_INDEXING_TYPES:
case ALL_CONTIGUOUS_INDEXING_TYPES:
@@ -974,7 +974,7 @@
}
}
-ContiguousDoubles JSObject::ensureDoubleSlow(JSGlobalData& globalData)
+ContiguousDoubles JSObject::ensureDoubleSlow(VM& vm)
{
ASSERT(inherits(&s_info));
@@ -982,13 +982,13 @@
case ALL_BLANK_INDEXING_TYPES:
if (UNLIKELY(indexingShouldBeSparse() || structure()->needsSlowPutIndexing()))
return ContiguousDoubles();
- return createInitialDouble(globalData, 0);
+ return createInitialDouble(vm, 0);
case ALL_UNDECIDED_INDEXING_TYPES:
- return convertUndecidedToDouble(globalData);
+ return convertUndecidedToDouble(vm);
case ALL_INT32_INDEXING_TYPES:
- return convertInt32ToDouble(globalData);
+ return convertInt32ToDouble(vm);
case ALL_CONTIGUOUS_INDEXING_TYPES:
case ALL_ARRAY_STORAGE_INDEXING_TYPES:
@@ -1000,7 +1000,7 @@
}
}
-ContiguousJSValues JSObject::ensureContiguousSlow(JSGlobalData& globalData, DoubleToContiguousMode mode)
+ContiguousJSValues JSObject::ensureContiguousSlow(VM& vm, DoubleToContiguousMode mode)
{
ASSERT(inherits(&s_info));
@@ -1008,18 +1008,18 @@
case ALL_BLANK_INDEXING_TYPES:
if (UNLIKELY(indexingShouldBeSparse() || structure()->needsSlowPutIndexing()))
return ContiguousJSValues();
- return createInitialContiguous(globalData, 0);
+ return createInitialContiguous(vm, 0);
case ALL_UNDECIDED_INDEXING_TYPES:
- return convertUndecidedToContiguous(globalData);
+ return convertUndecidedToContiguous(vm);
case ALL_INT32_INDEXING_TYPES:
- return convertInt32ToContiguous(globalData);
+ return convertInt32ToContiguous(vm);
case ALL_DOUBLE_INDEXING_TYPES:
if (mode == RageConvertDoubleToValue)
- return rageConvertDoubleToContiguous(globalData);
- return convertDoubleToContiguous(globalData);
+ return rageConvertDoubleToContiguous(vm);
+ return convertDoubleToContiguous(vm);
case ALL_ARRAY_STORAGE_INDEXING_TYPES:
return ContiguousJSValues();
@@ -1030,45 +1030,45 @@
}
}
-ContiguousJSValues JSObject::ensureContiguousSlow(JSGlobalData& globalData)
+ContiguousJSValues JSObject::ensureContiguousSlow(VM& vm)
{
- return ensureContiguousSlow(globalData, EncodeValueAsDouble);
+ return ensureContiguousSlow(vm, EncodeValueAsDouble);
}
-ContiguousJSValues JSObject::rageEnsureContiguousSlow(JSGlobalData& globalData)
+ContiguousJSValues JSObject::rageEnsureContiguousSlow(VM& vm)
{
- return ensureContiguousSlow(globalData, RageConvertDoubleToValue);
+ return ensureContiguousSlow(vm, RageConvertDoubleToValue);
}
-ArrayStorage* JSObject::ensureArrayStorageSlow(JSGlobalData& globalData)
+ArrayStorage* JSObject::ensureArrayStorageSlow(VM& vm)
{
ASSERT(inherits(&s_info));
switch (structure()->indexingType()) {
case ALL_BLANK_INDEXING_TYPES:
if (UNLIKELY(indexingShouldBeSparse()))
- return ensureArrayStorageExistsAndEnterDictionaryIndexingMode(globalData);
- return createInitialArrayStorage(globalData);
+ return ensureArrayStorageExistsAndEnterDictionaryIndexingMode(vm);
+ return createInitialArrayStorage(vm);
case ALL_UNDECIDED_INDEXING_TYPES:
ASSERT(!indexingShouldBeSparse());
ASSERT(!structure()->needsSlowPutIndexing());
- return convertUndecidedToArrayStorage(globalData);
+ return convertUndecidedToArrayStorage(vm);
case ALL_INT32_INDEXING_TYPES:
ASSERT(!indexingShouldBeSparse());
ASSERT(!structure()->needsSlowPutIndexing());
- return convertInt32ToArrayStorage(globalData);
+ return convertInt32ToArrayStorage(vm);
case ALL_DOUBLE_INDEXING_TYPES:
ASSERT(!indexingShouldBeSparse());
ASSERT(!structure()->needsSlowPutIndexing());
- return convertDoubleToArrayStorage(globalData);
+ return convertDoubleToArrayStorage(vm);
case ALL_CONTIGUOUS_INDEXING_TYPES:
ASSERT(!indexingShouldBeSparse());
ASSERT(!structure()->needsSlowPutIndexing());
- return convertContiguousToArrayStorage(globalData);
+ return convertContiguousToArrayStorage(vm);
default:
RELEASE_ASSERT_NOT_REACHED();
@@ -1076,30 +1076,30 @@
}
}
-ArrayStorage* JSObject::ensureArrayStorageExistsAndEnterDictionaryIndexingMode(JSGlobalData& globalData)
+ArrayStorage* JSObject::ensureArrayStorageExistsAndEnterDictionaryIndexingMode(VM& vm)
{
switch (structure()->indexingType()) {
case ALL_BLANK_INDEXING_TYPES: {
- createArrayStorage(globalData, 0, 0);
- SparseArrayValueMap* map = allocateSparseIndexMap(globalData);
+ createArrayStorage(vm, 0, 0);
+ SparseArrayValueMap* map = allocateSparseIndexMap(vm);
map->setSparseMode();
return arrayStorage();
}
case ALL_UNDECIDED_INDEXING_TYPES:
- return enterDictionaryIndexingModeWhenArrayStorageAlreadyExists(globalData, convertUndecidedToArrayStorage(globalData));
+ return enterDictionaryIndexingModeWhenArrayStorageAlreadyExists(vm, convertUndecidedToArrayStorage(vm));
case ALL_INT32_INDEXING_TYPES:
- return enterDictionaryIndexingModeWhenArrayStorageAlreadyExists(globalData, convertInt32ToArrayStorage(globalData));
+ return enterDictionaryIndexingModeWhenArrayStorageAlreadyExists(vm, convertInt32ToArrayStorage(vm));
case ALL_DOUBLE_INDEXING_TYPES:
- return enterDictionaryIndexingModeWhenArrayStorageAlreadyExists(globalData, convertDoubleToArrayStorage(globalData));
+ return enterDictionaryIndexingModeWhenArrayStorageAlreadyExists(vm, convertDoubleToArrayStorage(vm));
case ALL_CONTIGUOUS_INDEXING_TYPES:
- return enterDictionaryIndexingModeWhenArrayStorageAlreadyExists(globalData, convertContiguousToArrayStorage(globalData));
+ return enterDictionaryIndexingModeWhenArrayStorageAlreadyExists(vm, convertContiguousToArrayStorage(vm));
case ALL_ARRAY_STORAGE_INDEXING_TYPES:
- return enterDictionaryIndexingModeWhenArrayStorageAlreadyExists(globalData, m_butterfly->arrayStorage());
+ return enterDictionaryIndexingModeWhenArrayStorageAlreadyExists(vm, m_butterfly->arrayStorage());
default:
CRASH();
@@ -1107,29 +1107,29 @@
}
}
-void JSObject::switchToSlowPutArrayStorage(JSGlobalData& globalData)
+void JSObject::switchToSlowPutArrayStorage(VM& vm)
{
switch (structure()->indexingType()) {
case ALL_UNDECIDED_INDEXING_TYPES:
- convertUndecidedToArrayStorage(globalData, AllocateSlowPutArrayStorage);
+ convertUndecidedToArrayStorage(vm, AllocateSlowPutArrayStorage);
break;
case ALL_INT32_INDEXING_TYPES:
- convertInt32ToArrayStorage(globalData, AllocateSlowPutArrayStorage);
+ convertInt32ToArrayStorage(vm, AllocateSlowPutArrayStorage);
break;
case ALL_DOUBLE_INDEXING_TYPES:
- convertDoubleToArrayStorage(globalData, AllocateSlowPutArrayStorage);
+ convertDoubleToArrayStorage(vm, AllocateSlowPutArrayStorage);
break;
case ALL_CONTIGUOUS_INDEXING_TYPES:
- convertContiguousToArrayStorage(globalData, AllocateSlowPutArrayStorage);
+ convertContiguousToArrayStorage(vm, AllocateSlowPutArrayStorage);
break;
case NonArrayWithArrayStorage:
case ArrayWithArrayStorage: {
- Structure* newStructure = Structure::nonPropertyTransition(globalData, structure(), SwitchToSlowPutArrayStorage);
- setStructure(globalData, newStructure);
+ Structure* newStructure = Structure::nonPropertyTransition(vm, structure(), SwitchToSlowPutArrayStorage);
+ setStructure(vm, newStructure);
break;
}
@@ -1143,23 +1143,23 @@
{
ASSERT(!value.isGetterSetter() && !(attributes & Accessor));
PutPropertySlot slot;
- object->putDirectInternal<PutModeDefineOwnProperty>(exec->globalData(), propertyName, value, attributes, slot, getCallableObject(value));
+ object->putDirectInternal<PutModeDefineOwnProperty>(exec->vm(), propertyName, value, attributes, slot, getCallableObject(value));
}
-void JSObject::setPrototype(JSGlobalData& globalData, JSValue prototype)
+void JSObject::setPrototype(VM& vm, JSValue prototype)
{
ASSERT(prototype);
if (prototype.isObject())
- globalData.prototypeMap.addPrototype(asObject(prototype));
+ vm.prototypeMap.addPrototype(asObject(prototype));
- Structure* newStructure = Structure::changePrototypeTransition(globalData, structure(), prototype);
- setStructure(globalData, newStructure);
+ Structure* newStructure = Structure::changePrototypeTransition(vm, structure(), prototype);
+ setStructure(vm, newStructure);
if (!newStructure->anyObjectInChainMayInterceptIndexedAccesses())
return;
- if (globalData.prototypeMap.isPrototype(this)) {
- newStructure->globalObject()->haveABadTime(globalData);
+ if (vm.prototypeMap.isPrototype(this)) {
+ newStructure->globalObject()->haveABadTime(vm);
return;
}
@@ -1169,10 +1169,10 @@
if (shouldUseSlowPut(structure()->indexingType()))
return;
- switchToSlowPutArrayStorage(globalData);
+ switchToSlowPutArrayStorage(vm);
}
-bool JSObject::setPrototypeWithCycleCheck(JSGlobalData& globalData, JSValue prototype)
+bool JSObject::setPrototypeWithCycleCheck(VM& vm, JSValue prototype)
{
JSValue checkFor = this;
if (this->isGlobalObject())
@@ -1184,7 +1184,7 @@
return false;
nextPrototype = asObject(nextPrototype)->prototype();
}
- setPrototype(globalData, prototype);
+ setPrototype(vm, prototype);
return true;
}
@@ -1204,21 +1204,21 @@
return;
}
- JSGlobalData& globalData = exec->globalData();
+ VM& vm = exec->vm();
PutPropertySlot slot;
- putDirectInternal<PutModeDefineOwnProperty>(globalData, propertyName, value, attributes, slot, getCallableObject(value));
+ putDirectInternal<PutModeDefineOwnProperty>(vm, propertyName, value, attributes, slot, getCallableObject(value));
// putDirect will change our Structure if we add a new property. For
// getters and setters, though, we also need to change our Structure
// if we override an existing non-getter or non-setter.
if (slot.type() != PutPropertySlot::NewProperty)
- setStructure(globalData, Structure::attributeChangeTransition(globalData, structure(), propertyName, attributes));
+ setStructure(vm, Structure::attributeChangeTransition(vm, structure(), propertyName, attributes));
if (attributes & ReadOnly)
structure()->setContainsReadOnlyProperties();
- structure()->setHasGetterSetterProperties(propertyName == globalData.propertyNames->underscoreProto);
+ structure()->setHasGetterSetterProperties(propertyName == vm.propertyNames->underscoreProto);
}
bool JSObject::hasProperty(ExecState* exec, PropertyName propertyName) const
@@ -1247,16 +1247,16 @@
unsigned attributes;
JSCell* specificValue;
- if (isValidOffset(thisObject->structure()->get(exec->globalData(), propertyName, attributes, specificValue))) {
- if (attributes & DontDelete && !exec->globalData().isInDefineOwnProperty())
+ if (isValidOffset(thisObject->structure()->get(exec->vm(), propertyName, attributes, specificValue))) {
+ if (attributes & DontDelete && !exec->vm().isInDefineOwnProperty())
return false;
- thisObject->removeDirect(exec->globalData(), propertyName);
+ thisObject->removeDirect(exec->vm(), propertyName);
return true;
}
// Look in the static hashtable of properties
const HashEntry* entry = thisObject->findPropertyHashEntry(exec, propertyName);
- if (entry && entry->attributes() & DontDelete && !exec->globalData().isInDefineOwnProperty())
+ if (entry && entry->attributes() & DontDelete && !exec->vm().isInDefineOwnProperty())
return false; // this builtin property can't be deleted
// FIXME: Should the code here actually do some deletion?
@@ -1430,7 +1430,7 @@
bool JSObject::getPropertySpecificValue(ExecState* exec, PropertyName propertyName, JSCell*& specificValue) const
{
unsigned attributes;
- if (isValidOffset(structure()->get(exec->globalData(), propertyName, attributes, specificValue)))
+ if (isValidOffset(structure()->get(exec->vm(), propertyName, attributes, specificValue)))
return true;
// This could be a function within the static table? - should probably
@@ -1535,7 +1535,7 @@
getClassPropertyNames(exec, object->classInfo(), propertyNames, mode, object->staticFunctionsReified());
bool canCachePropertiesFromStructure = !propertyNames.size();
- object->structure()->getPropertyNamesFromStructure(exec->globalData(), propertyNames, mode);
+ object->structure()->getPropertyNamesFromStructure(exec->vm(), propertyNames, mode);
if (canCachePropertiesFromStructure)
propertyNames.setNumCacheableSlotsForObject(object, propertyNames.size());
@@ -1562,27 +1562,27 @@
return jsCast<JSObject*>(cell);
}
-void JSObject::seal(JSGlobalData& globalData)
+void JSObject::seal(VM& vm)
{
- if (isSealed(globalData))
+ if (isSealed(vm))
return;
- preventExtensions(globalData);
- setStructure(globalData, Structure::sealTransition(globalData, structure()));
+ preventExtensions(vm);
+ setStructure(vm, Structure::sealTransition(vm, structure()));
}
-void JSObject::freeze(JSGlobalData& globalData)
+void JSObject::freeze(VM& vm)
{
- if (isFrozen(globalData))
+ if (isFrozen(vm))
return;
- preventExtensions(globalData);
- setStructure(globalData, Structure::freezeTransition(globalData, structure()));
+ preventExtensions(vm);
+ setStructure(vm, Structure::freezeTransition(vm, structure()));
}
-void JSObject::preventExtensions(JSGlobalData& globalData)
+void JSObject::preventExtensions(VM& vm)
{
- enterDictionaryIndexingMode(globalData);
+ enterDictionaryIndexingMode(vm);
if (isExtensible())
- setStructure(globalData, Structure::preventExtensionsTransition(globalData, structure()));
+ setStructure(vm, Structure::preventExtensionsTransition(vm, structure()));
}
// This presently will flatten to an uncachable dictionary; this is suitable
@@ -1590,7 +1590,7 @@
void JSObject::reifyStaticFunctionsForDelete(ExecState* exec)
{
ASSERT(!staticFunctionsReified());
- JSGlobalData& globalData = exec->globalData();
+ VM& vm = exec->vm();
// If this object's ClassInfo has no static properties, then nothing to reify!
// We can safely set the flag to avoid the expensive check again in the future.
@@ -1600,37 +1600,37 @@
}
if (!structure()->isUncacheableDictionary())
- setStructure(globalData, Structure::toUncacheableDictionaryTransition(globalData, structure()));
+ setStructure(vm, Structure::toUncacheableDictionaryTransition(vm, structure()));
for (const ClassInfo* info = classInfo(); info; info = info->parentClass) {
const HashTable* hashTable = info->propHashTable(globalObject()->globalExec());
if (!hashTable)
continue;
PropertySlot slot;
- for (HashTable::ConstIterator iter = hashTable->begin(globalData); iter != hashTable->end(globalData); ++iter) {
+ for (HashTable::ConstIterator iter = hashTable->begin(vm); iter != hashTable->end(vm); ++iter) {
if (iter->attributes() & Function)
- setUpStaticFunctionSlot(globalObject()->globalExec(), *iter, this, Identifier(&globalData, iter->key()), slot);
+ setUpStaticFunctionSlot(globalObject()->globalExec(), *iter, this, Identifier(&vm, iter->key()), slot);
}
}
structure()->setStaticFunctionsReified();
}
-bool JSObject::removeDirect(JSGlobalData& globalData, PropertyName propertyName)
+bool JSObject::removeDirect(VM& vm, PropertyName propertyName)
{
- if (!isValidOffset(structure()->get(globalData, propertyName)))
+ if (!isValidOffset(structure()->get(vm, propertyName)))
return false;
PropertyOffset offset;
if (structure()->isUncacheableDictionary()) {
- offset = structure()->removePropertyWithoutTransition(globalData, propertyName);
+ offset = structure()->removePropertyWithoutTransition(vm, propertyName);
if (offset == invalidOffset)
return false;
putDirectUndefined(offset);
return true;
}
- setStructure(globalData, Structure::removePropertyTransition(globalData, structure(), propertyName, offset));
+ setStructure(vm, Structure::removePropertyTransition(vm, structure(), propertyName, offset));
if (offset == invalidOffset)
return false;
putDirectUndefined(offset);
@@ -1652,9 +1652,9 @@
{
if (descriptor.isDataDescriptor()) {
if (descriptor.value())
- entryInMap->set(exec->globalData(), this, descriptor.value());
+ entryInMap->set(exec->vm(), this, descriptor.value());
else if (oldDescriptor.isAccessorDescriptor())
- entryInMap->set(exec->globalData(), this, jsUndefined());
+ entryInMap->set(exec->vm(), this, jsUndefined());
entryInMap->attributes = descriptor.attributesOverridingCurrent(oldDescriptor) & ~Accessor;
return;
}
@@ -1673,11 +1673,11 @@
GetterSetter* accessor = GetterSetter::create(exec);
if (getter)
- accessor->setGetter(exec->globalData(), getter);
+ accessor->setGetter(exec->vm(), getter);
if (setter)
- accessor->setSetter(exec->globalData(), setter);
+ accessor->setSetter(exec->vm(), setter);
- entryInMap->set(exec->globalData(), this, accessor);
+ entryInMap->set(exec->vm(), this, accessor);
entryInMap->attributes = descriptor.attributesOverridingCurrent(oldDescriptor) & ~ReadOnly;
return;
}
@@ -1701,11 +1701,11 @@
return putDirectIndex(exec, index, descriptor.value(), 0, throwException ? PutDirectIndexShouldThrow : PutDirectIndexShouldNotThrow);
}
- ensureArrayStorageExistsAndEnterDictionaryIndexingMode(exec->globalData());
+ ensureArrayStorageExistsAndEnterDictionaryIndexingMode(exec->vm());
}
if (descriptor.attributes() & (ReadOnly | Accessor))
- notifyPresenceOfIndexedAccessors(exec->globalData());
+ notifyPresenceOfIndexedAccessors(exec->vm());
SparseArrayValueMap* map = m_butterfly->arrayStorage()->m_sparseMap.get();
RELEASE_ASSERT(map);
@@ -1808,10 +1808,10 @@
return true;
}
-SparseArrayValueMap* JSObject::allocateSparseIndexMap(JSGlobalData& globalData)
+SparseArrayValueMap* JSObject::allocateSparseIndexMap(VM& vm)
{
- SparseArrayValueMap* result = SparseArrayValueMap::create(globalData);
- arrayStorage()->m_sparseMap.set(globalData, this, result);
+ SparseArrayValueMap* result = SparseArrayValueMap::create(vm);
+ arrayStorage()->m_sparseMap.set(vm, this, result);
return result;
}
@@ -1865,21 +1865,21 @@
// or equal to the vector length.
ASSERT(i >= m_butterfly->vectorLength());
- JSGlobalData& globalData = exec->globalData();
+ VM& vm = exec->vm();
if (i >= MAX_ARRAY_INDEX - 1
|| (i >= MIN_SPARSE_ARRAY_INDEX
&& !isDenseEnoughForVector(i, countElements<indexingShape>(m_butterfly)))) {
ASSERT(i <= MAX_ARRAY_INDEX);
- ensureArrayStorageSlow(globalData);
- SparseArrayValueMap* map = allocateSparseIndexMap(globalData);
+ ensureArrayStorageSlow(vm);
+ SparseArrayValueMap* map = allocateSparseIndexMap(vm);
map->putEntry(exec, this, i, value, false);
ASSERT(i >= arrayStorage()->length());
arrayStorage()->setLength(i + 1);
return;
}
- ensureLength(globalData, i + 1);
+ ensureLength(vm, i + 1);
RELEASE_ASSERT(i < m_butterfly->vectorLength());
switch (indexingShape) {
@@ -1897,7 +1897,7 @@
}
case ContiguousShape:
- m_butterfly->contiguous()[i].set(globalData, this, value);
+ m_butterfly->contiguous()[i].set(vm, this, value);
break;
default:
@@ -1907,7 +1907,7 @@
void JSObject::putByIndexBeyondVectorLengthWithArrayStorage(ExecState* exec, unsigned i, JSValue value, bool shouldThrow, ArrayStorage* storage)
{
- JSGlobalData& globalData = exec->globalData();
+ VM& vm = exec->vm();
// i should be a valid array index that is outside of the current vector.
ASSERT(i <= MAX_ARRAY_INDEX);
@@ -1925,15 +1925,15 @@
storage->setLength(i + 1);
// Check that it is sensible to still be using a vector, and then try to grow the vector.
- if (LIKELY((isDenseEnoughForVector(i, storage->m_numValuesInVector)) && increaseVectorLength(globalData, i + 1))) {
+ if (LIKELY((isDenseEnoughForVector(i, storage->m_numValuesInVector)) && increaseVectorLength(vm, i + 1))) {
// success! - reread m_storage since it has likely been reallocated, and store to the vector.
storage = arrayStorage();
- storage->m_vector[i].set(globalData, this, value);
+ storage->m_vector[i].set(vm, this, value);
++storage->m_numValuesInVector;
return;
}
// We don't want to, or can't use a vector to hold this property - allocate a sparse map & add the value.
- map = allocateSparseIndexMap(exec->globalData());
+ map = allocateSparseIndexMap(exec->vm());
map->putEntry(exec, this, i, value, shouldThrow);
return;
}
@@ -1954,7 +1954,7 @@
// We are currently using a map - check whether we still want to be doing so.
// We will continue to use a sparse map if SparseMode is set, a vector would be too sparse, or if allocation fails.
unsigned numValuesInArray = storage->m_numValuesInVector + map->size();
- if (map->sparseMode() || !isDenseEnoughForVector(length, numValuesInArray) || !increaseVectorLength(exec->globalData(), length)) {
+ if (map->sparseMode() || !isDenseEnoughForVector(length, numValuesInArray) || !increaseVectorLength(exec->vm(), length)) {
map->putEntry(exec, this, i, value, shouldThrow);
return;
}
@@ -1967,19 +1967,19 @@
WriteBarrier<Unknown>* vector = storage->m_vector;
SparseArrayValueMap::const_iterator end = map->end();
for (SparseArrayValueMap::const_iterator it = map->begin(); it != end; ++it)
- vector[it->key].set(globalData, this, it->value.getNonSparseMode());
+ vector[it->key].set(vm, this, it->value.getNonSparseMode());
deallocateSparseIndexMap();
// Store the new property into the vector.
WriteBarrier<Unknown>& valueSlot = vector[i];
if (!valueSlot)
++storage->m_numValuesInVector;
- valueSlot.set(globalData, this, value);
+ valueSlot.set(vm, this, value);
}
void JSObject::putByIndexBeyondVectorLength(ExecState* exec, unsigned i, JSValue value, bool shouldThrow)
{
- JSGlobalData& globalData = exec->globalData();
+ VM& vm = exec->vm();
// i should be a valid array index that is outside of the current vector.
ASSERT(i <= MAX_ARRAY_INDEX);
@@ -1989,22 +1989,22 @@
if (indexingShouldBeSparse()) {
putByIndexBeyondVectorLengthWithArrayStorage(
exec, i, value, shouldThrow,
- ensureArrayStorageExistsAndEnterDictionaryIndexingMode(globalData));
+ ensureArrayStorageExistsAndEnterDictionaryIndexingMode(vm));
break;
}
if (i >= MIN_SPARSE_ARRAY_INDEX) {
putByIndexBeyondVectorLengthWithArrayStorage(
- exec, i, value, shouldThrow, createArrayStorage(globalData, 0, 0));
+ exec, i, value, shouldThrow, createArrayStorage(vm, 0, 0));
break;
}
if (structure()->needsSlowPutIndexing()) {
- ArrayStorage* storage = createArrayStorage(globalData, i + 1, getNewVectorLength(0, 0, i + 1));
- storage->m_vector[i].set(globalData, this, value);
+ ArrayStorage* storage = createArrayStorage(vm, i + 1, getNewVectorLength(0, 0, i + 1));
+ storage->m_vector[i].set(vm, this, value);
storage->m_numValuesInVector++;
break;
}
- createInitialContiguous(globalData, i + 1)[i].set(globalData, this, value);
+ createInitialContiguous(vm, i + 1)[i].set(vm, this, value);
break;
}
@@ -2049,7 +2049,7 @@
bool JSObject::putDirectIndexBeyondVectorLengthWithArrayStorage(ExecState* exec, unsigned i, JSValue value, unsigned attributes, PutDirectIndexMode mode, ArrayStorage* storage)
{
- JSGlobalData& globalData = exec->globalData();
+ VM& vm = exec->vm();
// i should be a valid array index that is outside of the current vector.
ASSERT(hasArrayStorage(structure()->indexingType()));
@@ -2072,15 +2072,15 @@
if (LIKELY(
!attributes
&& (isDenseEnoughForVector(i, storage->m_numValuesInVector))
- && increaseVectorLength(globalData, i + 1))) {
+ && increaseVectorLength(vm, i + 1))) {
// success! - reread m_storage since it has likely been reallocated, and store to the vector.
storage = arrayStorage();
- storage->m_vector[i].set(globalData, this, value);
+ storage->m_vector[i].set(vm, this, value);
++storage->m_numValuesInVector;
return true;
}
// We don't want to, or can't use a vector to hold this property - allocate a sparse map & add the value.
- map = allocateSparseIndexMap(exec->globalData());
+ map = allocateSparseIndexMap(exec->vm());
return map->putDirect(exec, this, i, value, attributes, mode);
}
@@ -2101,7 +2101,7 @@
// We are currently using a map - check whether we still want to be doing so.
// We will continue to use a sparse map if SparseMode is set, a vector would be too sparse, or if allocation fails.
unsigned numValuesInArray = storage->m_numValuesInVector + map->size();
- if (map->sparseMode() || attributes || !isDenseEnoughForVector(length, numValuesInArray) || !increaseVectorLength(exec->globalData(), length))
+ if (map->sparseMode() || attributes || !isDenseEnoughForVector(length, numValuesInArray) || !increaseVectorLength(exec->vm(), length))
return map->putDirect(exec, this, i, value, attributes, mode);
// Reread m_storage after increaseVectorLength, update m_numValuesInVector.
@@ -2112,51 +2112,51 @@
WriteBarrier<Unknown>* vector = storage->m_vector;
SparseArrayValueMap::const_iterator end = map->end();
for (SparseArrayValueMap::const_iterator it = map->begin(); it != end; ++it)
- vector[it->key].set(globalData, this, it->value.getNonSparseMode());
+ vector[it->key].set(vm, this, it->value.getNonSparseMode());
deallocateSparseIndexMap();
// Store the new property into the vector.
WriteBarrier<Unknown>& valueSlot = vector[i];
if (!valueSlot)
++storage->m_numValuesInVector;
- valueSlot.set(globalData, this, value);
+ valueSlot.set(vm, this, value);
return true;
}
bool JSObject::putDirectIndexBeyondVectorLength(ExecState* exec, unsigned i, JSValue value, unsigned attributes, PutDirectIndexMode mode)
{
- JSGlobalData& globalData = exec->globalData();
+ VM& vm = exec->vm();
// i should be a valid array index that is outside of the current vector.
ASSERT(i <= MAX_ARRAY_INDEX);
if (attributes & (ReadOnly | Accessor))
- notifyPresenceOfIndexedAccessors(globalData);
+ notifyPresenceOfIndexedAccessors(vm);
switch (structure()->indexingType()) {
case ALL_BLANK_INDEXING_TYPES: {
if (indexingShouldBeSparse() || attributes) {
return putDirectIndexBeyondVectorLengthWithArrayStorage(
exec, i, value, attributes, mode,
- ensureArrayStorageExistsAndEnterDictionaryIndexingMode(globalData));
+ ensureArrayStorageExistsAndEnterDictionaryIndexingMode(vm));
}
if (i >= MIN_SPARSE_ARRAY_INDEX) {
return putDirectIndexBeyondVectorLengthWithArrayStorage(
- exec, i, value, attributes, mode, createArrayStorage(globalData, 0, 0));
+ exec, i, value, attributes, mode, createArrayStorage(vm, 0, 0));
}
if (structure()->needsSlowPutIndexing()) {
- ArrayStorage* storage = createArrayStorage(globalData, i + 1, getNewVectorLength(0, 0, i + 1));
- storage->m_vector[i].set(globalData, this, value);
+ ArrayStorage* storage = createArrayStorage(vm, i + 1, getNewVectorLength(0, 0, i + 1));
+ storage->m_vector[i].set(vm, this, value);
storage->m_numValuesInVector++;
return true;
}
- createInitialContiguous(globalData, i + 1)[i].set(globalData, this, value);
+ createInitialContiguous(vm, i + 1)[i].set(vm, this, value);
return true;
}
case ALL_UNDECIDED_INDEXING_TYPES: {
- convertUndecidedForValue(exec->globalData(), value);
+ convertUndecidedForValue(exec->vm(), value);
// Reloop.
return putDirectIndex(exec, i, value, attributes, mode);
}
@@ -2164,10 +2164,10 @@
case ALL_INT32_INDEXING_TYPES: {
if (attributes & (ReadOnly | Accessor)) {
return putDirectIndexBeyondVectorLengthWithArrayStorage(
- exec, i, value, attributes, mode, convertInt32ToArrayStorage(globalData));
+ exec, i, value, attributes, mode, convertInt32ToArrayStorage(vm));
}
if (!value.isInt32()) {
- convertInt32ForValue(globalData, value);
+ convertInt32ForValue(vm, value);
return putDirectIndexBeyondVectorLength(exec, i, value, attributes, mode);
}
putByIndexBeyondVectorLengthWithoutAttributes<Int32Shape>(exec, i, value);
@@ -2177,15 +2177,15 @@
case ALL_DOUBLE_INDEXING_TYPES: {
if (attributes & (ReadOnly | Accessor)) {
return putDirectIndexBeyondVectorLengthWithArrayStorage(
- exec, i, value, attributes, mode, convertDoubleToArrayStorage(globalData));
+ exec, i, value, attributes, mode, convertDoubleToArrayStorage(vm));
}
if (!value.isNumber()) {
- convertDoubleToContiguous(globalData);
+ convertDoubleToContiguous(vm);
return putDirectIndexBeyondVectorLength(exec, i, value, attributes, mode);
}
double valueAsDouble = value.asNumber();
if (valueAsDouble != valueAsDouble) {
- convertDoubleToContiguous(globalData);
+ convertDoubleToContiguous(vm);
return putDirectIndexBeyondVectorLength(exec, i, value, attributes, mode);
}
putByIndexBeyondVectorLengthWithoutAttributes<DoubleShape>(exec, i, value);
@@ -2195,7 +2195,7 @@
case ALL_CONTIGUOUS_INDEXING_TYPES: {
if (attributes & (ReadOnly | Accessor)) {
return putDirectIndexBeyondVectorLengthWithArrayStorage(
- exec, i, value, attributes, mode, convertContiguousToArrayStorage(globalData));
+ exec, i, value, attributes, mode, convertContiguousToArrayStorage(vm));
}
putByIndexBeyondVectorLengthWithoutAttributes<ContiguousShape>(exec, i, value);
return true;
@@ -2217,7 +2217,7 @@
JSFunction* function =
JSFunction::create(exec, globalObject, functionLength, name, nativeFunction, intrinsic);
- putDirect(exec->globalData(), propertyName, function, attributes);
+ putDirect(exec->vm(), propertyName, function, attributes);
}
ALWAYS_INLINE unsigned JSObject::getNewVectorLength(unsigned currentVectorLength, unsigned currentLength, unsigned desiredLength)
@@ -2306,7 +2306,7 @@
}
}
-bool JSObject::increaseVectorLength(JSGlobalData& globalData, unsigned newLength)
+bool JSObject::increaseVectorLength(VM& vm, unsigned newLength)
{
// This function leaves the array in an internally inconsistent state, because it does not move any values from sparse value map
// to the vector. Callers have to account for that, because they can do it more efficiently.
@@ -2326,7 +2326,7 @@
// Fast case - there is no precapacity. In these cases a realloc makes sense.
if (LIKELY(!indexBias)) {
- Butterfly* newButterfly = storage->butterfly()->growArrayRight(globalData, structure(), structure()->outOfLineCapacity(), true, ArrayStorage::sizeFor(vectorLength), ArrayStorage::sizeFor(newVectorLength));
+ Butterfly* newButterfly = storage->butterfly()->growArrayRight(vm, structure(), structure()->outOfLineCapacity(), true, ArrayStorage::sizeFor(vectorLength), ArrayStorage::sizeFor(newVectorLength));
if (!newButterfly)
return false;
m_butterfly = newButterfly;
@@ -2337,7 +2337,7 @@
// Remove some, but not all of the precapacity. Atomic decay, & capped to not overflow array length.
unsigned newIndexBias = std::min(indexBias >> 1, MAX_STORAGE_VECTOR_LENGTH - newVectorLength);
Butterfly* newButterfly = storage->butterfly()->resizeArray(
- globalData,
+ vm,
structure()->outOfLineCapacity(), true, ArrayStorage::sizeFor(vectorLength),
newIndexBias, true, ArrayStorage::sizeFor(newVectorLength));
if (!newButterfly)
@@ -2349,7 +2349,7 @@
return true;
}
-void JSObject::ensureLengthSlow(JSGlobalData& globalData, unsigned length)
+void JSObject::ensureLengthSlow(VM& vm, unsigned length)
{
ASSERT(length < MAX_ARRAY_INDEX);
ASSERT(hasContiguous(structure()->indexingType()) || hasInt32(structure()->indexingType()) || hasDouble(structure()->indexingType()) || hasUndecided(structure()->indexingType()));
@@ -2360,7 +2360,7 @@
MAX_STORAGE_VECTOR_LENGTH);
unsigned oldVectorLength = m_butterfly->vectorLength();
m_butterfly = m_butterfly->growArrayRight(
- globalData, structure(), structure()->outOfLineCapacity(), true,
+ vm, structure(), structure()->outOfLineCapacity(), true,
oldVectorLength * sizeof(EncodedJSValue),
newVectorLength * sizeof(EncodedJSValue));
if (hasDouble(structure()->indexingType())) {
@@ -2370,21 +2370,21 @@
m_butterfly->setVectorLength(newVectorLength);
}
-Butterfly* JSObject::growOutOfLineStorage(JSGlobalData& globalData, size_t oldSize, size_t newSize)
+Butterfly* JSObject::growOutOfLineStorage(VM& vm, size_t oldSize, size_t newSize)
{
ASSERT(newSize > oldSize);
// It's important that this function not rely on structure(), for the property
// capacity, since we might have already mutated the structure in-place.
- return m_butterfly->growPropertyStorage(globalData, structure(), oldSize, newSize);
+ return m_butterfly->growPropertyStorage(vm, structure(), oldSize, newSize);
}
bool JSObject::getOwnPropertyDescriptor(JSObject* object, ExecState* exec, PropertyName propertyName, PropertyDescriptor& descriptor)
{
unsigned attributes = 0;
JSCell* cell = 0;
- PropertyOffset offset = object->structure()->get(exec->globalData(), propertyName, attributes, cell);
+ PropertyOffset offset = object->structure()->get(exec->vm(), propertyName, attributes, cell);
if (isValidOffset(offset)) {
descriptor.setDescriptor(object->getDirect(offset), attributes);
return true;
@@ -2468,9 +2468,9 @@
if (descriptor.isGenericDescriptor() && oldDescriptor.isAccessorDescriptor()) {
GetterSetter* accessor = GetterSetter::create(exec);
if (oldDescriptor.getterPresent())
- accessor->setGetter(exec->globalData(), oldDescriptor.getterObject());
+ accessor->setGetter(exec->vm(), oldDescriptor.getterObject());
if (oldDescriptor.setterPresent())
- accessor->setSetter(exec->globalData(), oldDescriptor.setterObject());
+ accessor->setSetter(exec->vm(), oldDescriptor.setterObject());
target->putDirectAccessor(exec, propertyName, accessor, attributes | Accessor);
return true;
}
@@ -2479,7 +2479,7 @@
newValue = descriptor.value();
else if (oldDescriptor.value())
newValue = oldDescriptor.value();
- target->putDirect(exec->globalData(), propertyName, newValue, attributes & ~Accessor);
+ target->putDirect(exec->vm(), propertyName, newValue, attributes & ~Accessor);
if (attributes & ReadOnly)
target->structure()->setContainsReadOnlyProperties();
return true;
@@ -2488,13 +2488,13 @@
GetterSetter* accessor = GetterSetter::create(exec);
if (descriptor.getterPresent())
- accessor->setGetter(exec->globalData(), descriptor.getterObject());
+ accessor->setGetter(exec->vm(), descriptor.getterObject());
else if (oldDescriptor.getterPresent())
- accessor->setGetter(exec->globalData(), oldDescriptor.getterObject());
+ accessor->setGetter(exec->vm(), oldDescriptor.getterObject());
if (descriptor.setterPresent())
- accessor->setSetter(exec->globalData(), descriptor.setterObject());
+ accessor->setSetter(exec->vm(), descriptor.setterObject());
else if (oldDescriptor.setterPresent())
- accessor->setSetter(exec->globalData(), oldDescriptor.setterObject());
+ accessor->setSetter(exec->vm(), oldDescriptor.setterObject());
target->putDirectAccessor(exec, propertyName, accessor, attributes | Accessor);
return true;
@@ -2504,7 +2504,7 @@
{
unsigned asIndex = propertyName.asIndex();
if (asIndex == PropertyName::NotAnIndex)
- putDirect(exec->globalData(), propertyName, value);
+ putDirect(exec->vm(), propertyName, value);
else
putDirectIndex(exec, asIndex, value);
}
@@ -2512,18 +2512,18 @@
class DefineOwnPropertyScope {
public:
DefineOwnPropertyScope(ExecState* exec)
- : m_globalData(exec->globalData())
+ : m_vm(exec->vm())
{
- m_globalData.setInDefineOwnProperty(true);
+ m_vm.setInDefineOwnProperty(true);
}
~DefineOwnPropertyScope()
{
- m_globalData.setInDefineOwnProperty(false);
+ m_vm.setInDefineOwnProperty(false);
}
private:
- JSGlobalData& m_globalData;
+ VM& m_vm;
};
bool JSObject::defineOwnNonIndexProperty(ExecState* exec, PropertyName propertyName, PropertyDescriptor& descriptor, bool throwException)
@@ -2624,14 +2624,14 @@
return false;
}
}
- JSValue accessor = getDirect(exec->globalData(), propertyName);
+ JSValue accessor = getDirect(exec->vm(), propertyName);
if (!accessor)
return false;
GetterSetter* getterSetter = asGetterSetter(accessor);
if (descriptor.setterPresent())
- getterSetter->setSetter(exec->globalData(), descriptor.setterObject());
+ getterSetter->setSetter(exec->vm(), descriptor.setterObject());
if (descriptor.getterPresent())
- getterSetter->setGetter(exec->globalData(), descriptor.getterObject());
+ getterSetter->setGetter(exec->vm(), descriptor.getterObject());
if (current.attributesEqual(descriptor))
return true;
methodTable()->deleteProperty(this, exec, propertyName);
diff --git a/Source/JavaScriptCore/runtime/JSObject.h b/Source/JavaScriptCore/runtime/JSObject.h
index fb2a887..ad6a904 100644
--- a/Source/JavaScriptCore/runtime/JSObject.h
+++ b/Source/JavaScriptCore/runtime/JSObject.h
@@ -37,7 +37,7 @@
#include "PutPropertySlot.h"
#include "Structure.h"
-#include "JSGlobalData.h"
+#include "VM.h"
#include "JSString.h"
#include "SlotVisitorInlines.h"
#include "SparseArrayValueMap.h"
@@ -121,8 +121,8 @@
JS_EXPORT_PRIVATE static String className(const JSObject*);
JSValue prototype() const;
- void setPrototype(JSGlobalData&, JSValue prototype);
- bool setPrototypeWithCycleCheck(JSGlobalData&, JSValue prototype);
+ void setPrototype(VM&, JSValue prototype);
+ bool setPrototypeWithCycleCheck(VM&, JSValue prototype);
bool mayInterceptIndexedAccesses()
{
@@ -162,7 +162,7 @@
void putByIndexInline(ExecState* exec, unsigned propertyName, JSValue value, bool shouldThrow)
{
if (canSetIndexQuickly(propertyName)) {
- setIndexQuickly(exec->globalData(), propertyName, value);
+ setIndexQuickly(exec->vm(), propertyName, value);
return;
}
methodTable()->putByIndex(this, exec, propertyName, value, shouldThrow);
@@ -176,7 +176,7 @@
bool putDirectIndex(ExecState* exec, unsigned propertyName, JSValue value, unsigned attributes, PutDirectIndexMode mode)
{
if (!attributes && canSetIndexQuicklyForPutDirect(propertyName)) {
- setIndexQuickly(exec->globalData(), propertyName, value);
+ setIndexQuickly(exec->vm(), propertyName, value);
return true;
}
return putDirectIndexBeyondVectorLength(exec, propertyName, value, attributes, mode);
@@ -316,20 +316,20 @@
}
}
- void setIndexQuickly(JSGlobalData& globalData, unsigned i, JSValue v)
+ void setIndexQuickly(VM& vm, unsigned i, JSValue v)
{
switch (structure()->indexingType()) {
case ALL_INT32_INDEXING_TYPES: {
ASSERT(i < m_butterfly->vectorLength());
if (!v.isInt32()) {
- convertInt32ToDoubleOrContiguousWhilePerformingSetIndex(globalData, i, v);
+ convertInt32ToDoubleOrContiguousWhilePerformingSetIndex(vm, i, v);
return;
}
// Fall through to contiguous case.
}
case ALL_CONTIGUOUS_INDEXING_TYPES: {
ASSERT(i < m_butterfly->vectorLength());
- m_butterfly->contiguous()[i].set(globalData, this, v);
+ m_butterfly->contiguous()[i].set(vm, this, v);
if (i >= m_butterfly->publicLength())
m_butterfly->setPublicLength(i + 1);
break;
@@ -337,12 +337,12 @@
case ALL_DOUBLE_INDEXING_TYPES: {
ASSERT(i < m_butterfly->vectorLength());
if (!v.isNumber()) {
- convertDoubleToContiguousWhilePerformingSetIndex(globalData, i, v);
+ convertDoubleToContiguousWhilePerformingSetIndex(vm, i, v);
return;
}
double value = v.asNumber();
if (value != value) {
- convertDoubleToContiguousWhilePerformingSetIndex(globalData, i, v);
+ convertDoubleToContiguousWhilePerformingSetIndex(vm, i, v);
return;
}
m_butterfly->contiguousDouble()[i] = value;
@@ -354,7 +354,7 @@
ArrayStorage* storage = m_butterfly->arrayStorage();
WriteBarrier<Unknown>& x = storage->m_vector[i];
JSValue old = x.get();
- x.set(globalData, this, v);
+ x.set(vm, this, v);
if (!old) {
++storage->m_numValuesInVector;
if (i >= storage->length())
@@ -367,18 +367,18 @@
}
}
- void initializeIndex(JSGlobalData& globalData, unsigned i, JSValue v)
+ void initializeIndex(VM& vm, unsigned i, JSValue v)
{
switch (structure()->indexingType()) {
case ALL_UNDECIDED_INDEXING_TYPES: {
- setIndexQuicklyToUndecided(globalData, i, v);
+ setIndexQuicklyToUndecided(vm, i, v);
break;
}
case ALL_INT32_INDEXING_TYPES: {
ASSERT(i < m_butterfly->publicLength());
ASSERT(i < m_butterfly->vectorLength());
if (!v.isInt32()) {
- convertInt32ToDoubleOrContiguousWhilePerformingSetIndex(globalData, i, v);
+ convertInt32ToDoubleOrContiguousWhilePerformingSetIndex(vm, i, v);
break;
}
// Fall through.
@@ -386,19 +386,19 @@
case ALL_CONTIGUOUS_INDEXING_TYPES: {
ASSERT(i < m_butterfly->publicLength());
ASSERT(i < m_butterfly->vectorLength());
- m_butterfly->contiguous()[i].set(globalData, this, v);
+ m_butterfly->contiguous()[i].set(vm, this, v);
break;
}
case ALL_DOUBLE_INDEXING_TYPES: {
ASSERT(i < m_butterfly->publicLength());
ASSERT(i < m_butterfly->vectorLength());
if (!v.isNumber()) {
- convertDoubleToContiguousWhilePerformingSetIndex(globalData, i, v);
+ convertDoubleToContiguousWhilePerformingSetIndex(vm, i, v);
return;
}
double value = v.asNumber();
if (value != value) {
- convertDoubleToContiguousWhilePerformingSetIndex(globalData, i, v);
+ convertDoubleToContiguousWhilePerformingSetIndex(vm, i, v);
return;
}
m_butterfly->contiguousDouble()[i] = value;
@@ -408,7 +408,7 @@
ArrayStorage* storage = m_butterfly->arrayStorage();
ASSERT(i < storage->length());
ASSERT(i < storage->m_numValuesInVector);
- storage->m_vector[i].set(globalData, this, v);
+ storage->m_vector[i].set(vm, this, v);
break;
}
default:
@@ -450,7 +450,7 @@
}
}
- void enterDictionaryIndexingMode(JSGlobalData&);
+ void enterDictionaryIndexingMode(VM&);
// putDirect is effectively an unchecked vesion of 'defineOwnProperty':
// - the prototype chain is not consulted
@@ -458,9 +458,9 @@
// - attributes will be respected (after the call the property will exist with the given attributes)
// - the property name is assumed to not be an index.
JS_EXPORT_PRIVATE static void putDirectVirtual(JSObject*, ExecState*, PropertyName, JSValue, unsigned attributes);
- void putDirect(JSGlobalData&, PropertyName, JSValue, unsigned attributes = 0);
- void putDirect(JSGlobalData&, PropertyName, JSValue, PutPropertySlot&);
- void putDirectWithoutTransition(JSGlobalData&, PropertyName, JSValue, unsigned attributes = 0);
+ void putDirect(VM&, PropertyName, JSValue, unsigned attributes = 0);
+ void putDirect(VM&, PropertyName, JSValue, PutPropertySlot&);
+ void putDirectWithoutTransition(VM&, PropertyName, JSValue, unsigned attributes = 0);
void putDirectAccessor(ExecState*, PropertyName, JSValue, unsigned attributes);
bool propertyIsEnumerable(ExecState*, const Identifier& propertyName) const;
@@ -493,16 +493,16 @@
bool getPropertySpecificValue(ExecState*, PropertyName, JSCell*& specificFunction) const;
// This get function only looks at the property map.
- JSValue getDirect(JSGlobalData& globalData, PropertyName propertyName) const
+ JSValue getDirect(VM& vm, PropertyName propertyName) const
{
- PropertyOffset offset = structure()->get(globalData, propertyName);
+ PropertyOffset offset = structure()->get(vm, propertyName);
checkOffset(offset, structure()->inlineCapacity());
return offset != invalidOffset ? getDirect(offset) : JSValue();
}
- PropertyOffset getDirectOffset(JSGlobalData& globalData, PropertyName propertyName)
+ PropertyOffset getDirectOffset(VM& vm, PropertyName propertyName)
{
- PropertyOffset offset = structure()->get(globalData, propertyName);
+ PropertyOffset offset = structure()->get(vm, propertyName);
checkOffset(offset, structure()->inlineCapacity());
return offset;
}
@@ -547,9 +547,9 @@
return &outOfLineStorage()[offsetInOutOfLineStorage(offset)];
}
- void transitionTo(JSGlobalData&, Structure*);
+ void transitionTo(VM&, Structure*);
- bool removeDirect(JSGlobalData&, PropertyName); // Return true if anything is removed.
+ bool removeDirect(VM&, PropertyName); // Return true if anything is removed.
bool hasCustomProperties() { return structure()->didTransition(); }
bool hasGetterSetterProperties() { return structure()->hasGetterSetterProperties(); }
@@ -558,11 +558,11 @@
// - provides no special handling for __proto__
// - does not walk the prototype chain (to check for accessors or non-writable properties).
// This is used by JSActivation.
- bool putOwnDataProperty(JSGlobalData&, PropertyName, JSValue, PutPropertySlot&);
+ bool putOwnDataProperty(VM&, PropertyName, JSValue, PutPropertySlot&);
// Fast access to known property offsets.
JSValue getDirect(PropertyOffset offset) const { return locationForOffset(offset)->get(); }
- void putDirect(JSGlobalData& globalData, PropertyOffset offset, JSValue value) { locationForOffset(offset)->set(globalData, this, value); }
+ void putDirect(VM& vm, PropertyOffset offset, JSValue value) { locationForOffset(offset)->set(vm, this, value); }
void putDirectUndefined(PropertyOffset offset) { locationForOffset(offset)->setUndefined(); }
void putDirectNativeFunction(ExecState*, JSGlobalObject*, const PropertyName&, unsigned functionLength, NativeFunction, Intrinsic, unsigned attributes);
@@ -575,11 +575,11 @@
bool isActivationObject() const;
bool isErrorInstance() const;
- void seal(JSGlobalData&);
- void freeze(JSGlobalData&);
- JS_EXPORT_PRIVATE void preventExtensions(JSGlobalData&);
- bool isSealed(JSGlobalData& globalData) { return structure()->isSealed(globalData); }
- bool isFrozen(JSGlobalData& globalData) { return structure()->isFrozen(globalData); }
+ void seal(VM&);
+ void freeze(VM&);
+ JS_EXPORT_PRIVATE void preventExtensions(VM&);
+ bool isSealed(VM& vm) { return structure()->isSealed(vm); }
+ bool isFrozen(VM& vm) { return structure()->isFrozen(vm); }
bool isExtensible() { return structure()->isExtensible(); }
bool indexingShouldBeSparse()
{
@@ -590,16 +590,16 @@
bool staticFunctionsReified() { return structure()->staticFunctionsReified(); }
void reifyStaticFunctionsForDelete(ExecState* exec);
- JS_EXPORT_PRIVATE Butterfly* growOutOfLineStorage(JSGlobalData&, size_t oldSize, size_t newSize);
- void setButterfly(JSGlobalData&, Butterfly*, Structure*);
+ JS_EXPORT_PRIVATE Butterfly* growOutOfLineStorage(VM&, size_t oldSize, size_t newSize);
+ void setButterfly(VM&, Butterfly*, Structure*);
void setButterflyWithoutChangingStructure(Butterfly*); // You probably don't want to call this.
- void setStructureAndReallocateStorageIfNecessary(JSGlobalData&, unsigned oldCapacity, Structure*);
- void setStructureAndReallocateStorageIfNecessary(JSGlobalData&, Structure*);
+ void setStructureAndReallocateStorageIfNecessary(VM&, unsigned oldCapacity, Structure*);
+ void setStructureAndReallocateStorageIfNecessary(VM&, Structure*);
- void flattenDictionaryObject(JSGlobalData& globalData)
+ void flattenDictionaryObject(VM& vm)
{
- structure()->flattenDictionaryStructure(globalData, this);
+ structure()->flattenDictionaryStructure(vm, this);
}
JSGlobalObject* globalObject() const
@@ -609,7 +609,7 @@
return structure()->globalObject();
}
- void switchToSlowPutArrayStorage(JSGlobalData&);
+ void switchToSlowPutArrayStorage(VM&);
// The receiver is the prototype in this case. The following:
//
@@ -624,57 +624,57 @@
// indexing should be sparse, we're having a bad time, or because
// we already have a more general form of storage (double,
// contiguous, array storage).
- ContiguousJSValues ensureInt32(JSGlobalData& globalData)
+ ContiguousJSValues ensureInt32(VM& vm)
{
if (LIKELY(hasInt32(structure()->indexingType())))
return m_butterfly->contiguousInt32();
- return ensureInt32Slow(globalData);
+ return ensureInt32Slow(vm);
}
// Returns 0 if double storage cannot be created - either because
// indexing should be sparse, we're having a bad time, or because
// we already have a more general form of storage (contiguous,
// or array storage).
- ContiguousDoubles ensureDouble(JSGlobalData& globalData)
+ ContiguousDoubles ensureDouble(VM& vm)
{
if (LIKELY(hasDouble(structure()->indexingType())))
return m_butterfly->contiguousDouble();
- return ensureDoubleSlow(globalData);
+ return ensureDoubleSlow(vm);
}
// Returns 0 if contiguous storage cannot be created - either because
// indexing should be sparse or because we're having a bad time.
- ContiguousJSValues ensureContiguous(JSGlobalData& globalData)
+ ContiguousJSValues ensureContiguous(VM& vm)
{
if (LIKELY(hasContiguous(structure()->indexingType())))
return m_butterfly->contiguous();
- return ensureContiguousSlow(globalData);
+ return ensureContiguousSlow(vm);
}
// Same as ensureContiguous(), except that if the indexed storage is in
// double mode, then it does a rage conversion to contiguous: it
// attempts to convert each double to an int32.
- ContiguousJSValues rageEnsureContiguous(JSGlobalData& globalData)
+ ContiguousJSValues rageEnsureContiguous(VM& vm)
{
if (LIKELY(hasContiguous(structure()->indexingType())))
return m_butterfly->contiguous();
- return rageEnsureContiguousSlow(globalData);
+ return rageEnsureContiguousSlow(vm);
}
// Ensure that the object is in a mode where it has array storage. Use
// this if you're about to perform actions that would have required the
// object to be converted to have array storage, if it didn't have it
// already.
- ArrayStorage* ensureArrayStorage(JSGlobalData& globalData)
+ ArrayStorage* ensureArrayStorage(VM& vm)
{
if (LIKELY(hasArrayStorage(structure()->indexingType())))
return m_butterfly->arrayStorage();
- return ensureArrayStorageSlow(globalData);
+ return ensureArrayStorageSlow(vm);
}
static size_t offsetOfInlineStorage();
@@ -692,9 +692,9 @@
static JS_EXPORTDATA const ClassInfo s_info;
protected:
- void finishCreation(JSGlobalData& globalData)
+ void finishCreation(VM& vm)
{
- Base::finishCreation(globalData);
+ Base::finishCreation(vm);
ASSERT(inherits(&s_info));
ASSERT(!structure()->outOfLineCapacity());
ASSERT(structure()->isEmpty());
@@ -703,14 +703,14 @@
ASSERT(classInfo());
}
- static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype)
+ static Structure* createStructure(VM& vm, JSGlobalObject* globalObject, JSValue prototype)
{
- return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), &s_info);
+ return Structure::create(vm, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), &s_info);
}
// To instantiate objects you likely want JSFinalObject, below.
// To create derived types you likely want JSNonFinalObject, below.
- JSObject(JSGlobalData&, Structure*, Butterfly* = 0);
+ JSObject(VM&, Structure*, Butterfly* = 0);
void visitButterfly(SlotVisitor&, Butterfly*, size_t storageSize);
void copyButterfly(CopyVisitor&, Butterfly*, size_t storageSize);
@@ -736,42 +736,42 @@
}
}
- Butterfly* createInitialUndecided(JSGlobalData&, unsigned length);
- ContiguousJSValues createInitialInt32(JSGlobalData&, unsigned length);
- ContiguousDoubles createInitialDouble(JSGlobalData&, unsigned length);
- ContiguousJSValues createInitialContiguous(JSGlobalData&, unsigned length);
+ Butterfly* createInitialUndecided(VM&, unsigned length);
+ ContiguousJSValues createInitialInt32(VM&, unsigned length);
+ ContiguousDoubles createInitialDouble(VM&, unsigned length);
+ ContiguousJSValues createInitialContiguous(VM&, unsigned length);
- void convertUndecidedForValue(JSGlobalData&, JSValue);
- void convertInt32ForValue(JSGlobalData&, JSValue);
+ void convertUndecidedForValue(VM&, JSValue);
+ void convertInt32ForValue(VM&, JSValue);
- ArrayStorage* createArrayStorage(JSGlobalData&, unsigned length, unsigned vectorLength);
- ArrayStorage* createInitialArrayStorage(JSGlobalData&);
+ ArrayStorage* createArrayStorage(VM&, unsigned length, unsigned vectorLength);
+ ArrayStorage* createInitialArrayStorage(VM&);
- ContiguousJSValues convertUndecidedToInt32(JSGlobalData&);
- ContiguousDoubles convertUndecidedToDouble(JSGlobalData&);
- ContiguousJSValues convertUndecidedToContiguous(JSGlobalData&);
- ArrayStorage* convertUndecidedToArrayStorage(JSGlobalData&, NonPropertyTransition, unsigned neededLength);
- ArrayStorage* convertUndecidedToArrayStorage(JSGlobalData&, NonPropertyTransition);
- ArrayStorage* convertUndecidedToArrayStorage(JSGlobalData&);
+ ContiguousJSValues convertUndecidedToInt32(VM&);
+ ContiguousDoubles convertUndecidedToDouble(VM&);
+ ContiguousJSValues convertUndecidedToContiguous(VM&);
+ ArrayStorage* convertUndecidedToArrayStorage(VM&, NonPropertyTransition, unsigned neededLength);
+ ArrayStorage* convertUndecidedToArrayStorage(VM&, NonPropertyTransition);
+ ArrayStorage* convertUndecidedToArrayStorage(VM&);
- ContiguousDoubles convertInt32ToDouble(JSGlobalData&);
- ContiguousJSValues convertInt32ToContiguous(JSGlobalData&);
- ArrayStorage* convertInt32ToArrayStorage(JSGlobalData&, NonPropertyTransition, unsigned neededLength);
- ArrayStorage* convertInt32ToArrayStorage(JSGlobalData&, NonPropertyTransition);
- ArrayStorage* convertInt32ToArrayStorage(JSGlobalData&);
+ ContiguousDoubles convertInt32ToDouble(VM&);
+ ContiguousJSValues convertInt32ToContiguous(VM&);
+ ArrayStorage* convertInt32ToArrayStorage(VM&, NonPropertyTransition, unsigned neededLength);
+ ArrayStorage* convertInt32ToArrayStorage(VM&, NonPropertyTransition);
+ ArrayStorage* convertInt32ToArrayStorage(VM&);
- ContiguousJSValues convertDoubleToContiguous(JSGlobalData&);
- ContiguousJSValues rageConvertDoubleToContiguous(JSGlobalData&);
- ArrayStorage* convertDoubleToArrayStorage(JSGlobalData&, NonPropertyTransition, unsigned neededLength);
- ArrayStorage* convertDoubleToArrayStorage(JSGlobalData&, NonPropertyTransition);
- ArrayStorage* convertDoubleToArrayStorage(JSGlobalData&);
+ ContiguousJSValues convertDoubleToContiguous(VM&);
+ ContiguousJSValues rageConvertDoubleToContiguous(VM&);
+ ArrayStorage* convertDoubleToArrayStorage(VM&, NonPropertyTransition, unsigned neededLength);
+ ArrayStorage* convertDoubleToArrayStorage(VM&, NonPropertyTransition);
+ ArrayStorage* convertDoubleToArrayStorage(VM&);
- ArrayStorage* convertContiguousToArrayStorage(JSGlobalData&, NonPropertyTransition, unsigned neededLength);
- ArrayStorage* convertContiguousToArrayStorage(JSGlobalData&, NonPropertyTransition);
- ArrayStorage* convertContiguousToArrayStorage(JSGlobalData&);
+ ArrayStorage* convertContiguousToArrayStorage(VM&, NonPropertyTransition, unsigned neededLength);
+ ArrayStorage* convertContiguousToArrayStorage(VM&, NonPropertyTransition);
+ ArrayStorage* convertContiguousToArrayStorage(VM&);
- ArrayStorage* ensureArrayStorageExistsAndEnterDictionaryIndexingMode(JSGlobalData&);
+ ArrayStorage* ensureArrayStorageExistsAndEnterDictionaryIndexingMode(VM&);
bool defineOwnNonIndexProperty(ExecState*, PropertyName, PropertyDescriptor&, bool throwException);
@@ -779,24 +779,24 @@
void putByIndexBeyondVectorLengthWithoutAttributes(ExecState*, unsigned propertyName, JSValue);
void putByIndexBeyondVectorLengthWithArrayStorage(ExecState*, unsigned propertyName, JSValue, bool shouldThrow, ArrayStorage*);
- bool increaseVectorLength(JSGlobalData&, unsigned newLength);
+ bool increaseVectorLength(VM&, unsigned newLength);
void deallocateSparseIndexMap();
bool defineOwnIndexedProperty(ExecState*, unsigned, PropertyDescriptor&, bool throwException);
- SparseArrayValueMap* allocateSparseIndexMap(JSGlobalData&);
+ SparseArrayValueMap* allocateSparseIndexMap(VM&);
- void notifyPresenceOfIndexedAccessors(JSGlobalData&);
+ void notifyPresenceOfIndexedAccessors(VM&);
bool attemptToInterceptPutByIndexOnHole(ExecState*, unsigned index, JSValue, bool shouldThrow);
// Call this if you want setIndexQuickly to succeed and you're sure that
// the array is contiguous.
- void ensureLength(JSGlobalData& globalData, unsigned length)
+ void ensureLength(VM& vm, unsigned length)
{
ASSERT(length < MAX_ARRAY_INDEX);
ASSERT(hasContiguous(structure()->indexingType()) || hasInt32(structure()->indexingType()) || hasDouble(structure()->indexingType()) || hasUndecided(structure()->indexingType()));
if (m_butterfly->vectorLength() < length)
- ensureLengthSlow(globalData, length);
+ ensureLengthSlow(vm, length);
if (m_butterfly->publicLength() < length)
m_butterfly->setPublicLength(length);
@@ -916,12 +916,12 @@
void isObject();
void isString();
- Butterfly* createInitialIndexedStorage(JSGlobalData&, unsigned length, size_t elementSize);
+ Butterfly* createInitialIndexedStorage(VM&, unsigned length, size_t elementSize);
- ArrayStorage* enterDictionaryIndexingModeWhenArrayStorageAlreadyExists(JSGlobalData&, ArrayStorage*);
+ ArrayStorage* enterDictionaryIndexingModeWhenArrayStorageAlreadyExists(VM&, ArrayStorage*);
template<PutMode>
- bool putDirectInternal(JSGlobalData&, PropertyName, JSValue, unsigned attr, PutPropertySlot&, JSCell*);
+ bool putDirectInternal(VM&, PropertyName, JSValue, unsigned attr, PutPropertySlot&, JSCell*);
bool inlineGetOwnPropertySlot(ExecState*, PropertyName, PropertySlot&);
JS_EXPORT_PRIVATE void fillGetterPropertySlot(PropertySlot&, PropertyOffset);
@@ -939,24 +939,24 @@
JS_EXPORT_PRIVATE bool getOwnPropertySlotSlow(ExecState*, PropertyName, PropertySlot&);
- ArrayStorage* constructConvertedArrayStorageWithoutCopyingElements(JSGlobalData&, unsigned neededLength);
+ ArrayStorage* constructConvertedArrayStorageWithoutCopyingElements(VM&, unsigned neededLength);
- JS_EXPORT_PRIVATE void setIndexQuicklyToUndecided(JSGlobalData&, unsigned index, JSValue);
- JS_EXPORT_PRIVATE void convertInt32ToDoubleOrContiguousWhilePerformingSetIndex(JSGlobalData&, unsigned index, JSValue);
- JS_EXPORT_PRIVATE void convertDoubleToContiguousWhilePerformingSetIndex(JSGlobalData&, unsigned index, JSValue);
+ JS_EXPORT_PRIVATE void setIndexQuicklyToUndecided(VM&, unsigned index, JSValue);
+ JS_EXPORT_PRIVATE void convertInt32ToDoubleOrContiguousWhilePerformingSetIndex(VM&, unsigned index, JSValue);
+ JS_EXPORT_PRIVATE void convertDoubleToContiguousWhilePerformingSetIndex(VM&, unsigned index, JSValue);
- void ensureLengthSlow(JSGlobalData&, unsigned length);
+ void ensureLengthSlow(VM&, unsigned length);
- ContiguousJSValues ensureInt32Slow(JSGlobalData&);
- ContiguousDoubles ensureDoubleSlow(JSGlobalData&);
- ContiguousJSValues ensureContiguousSlow(JSGlobalData&);
- ContiguousJSValues rageEnsureContiguousSlow(JSGlobalData&);
- ArrayStorage* ensureArrayStorageSlow(JSGlobalData&);
+ ContiguousJSValues ensureInt32Slow(VM&);
+ ContiguousDoubles ensureDoubleSlow(VM&);
+ ContiguousJSValues ensureContiguousSlow(VM&);
+ ContiguousJSValues rageEnsureContiguousSlow(VM&);
+ ArrayStorage* ensureArrayStorageSlow(VM&);
enum DoubleToContiguousMode { EncodeValueAsDouble, RageConvertDoubleToValue };
template<DoubleToContiguousMode mode>
- ContiguousJSValues genericConvertDoubleToContiguous(JSGlobalData&);
- ContiguousJSValues ensureContiguousSlow(JSGlobalData&, DoubleToContiguousMode);
+ ContiguousJSValues genericConvertDoubleToContiguous(VM&);
+ ContiguousJSValues ensureContiguousSlow(VM&, DoubleToContiguousMode);
protected:
Butterfly* m_butterfly;
@@ -971,20 +971,20 @@
public:
typedef JSObject Base;
- static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype)
+ static Structure* createStructure(VM& vm, JSGlobalObject* globalObject, JSValue prototype)
{
- return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), &s_info);
+ return Structure::create(vm, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), &s_info);
}
protected:
- explicit JSNonFinalObject(JSGlobalData& globalData, Structure* structure, Butterfly* butterfly = 0)
- : JSObject(globalData, structure, butterfly)
+ explicit JSNonFinalObject(VM& vm, Structure* structure, Butterfly* butterfly = 0)
+ : JSObject(vm, structure, butterfly)
{
}
- void finishCreation(JSGlobalData& globalData)
+ void finishCreation(VM& vm)
{
- Base::finishCreation(globalData);
+ Base::finishCreation(vm);
ASSERT(!this->structure()->totalStorageCapacity());
ASSERT(classInfo());
}
@@ -1013,9 +1013,9 @@
}
static JSFinalObject* create(ExecState*, Structure*);
- static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype, unsigned inlineCapacity)
+ static Structure* createStructure(VM& vm, JSGlobalObject* globalObject, JSValue prototype, unsigned inlineCapacity)
{
- return Structure::create(globalData, globalObject, prototype, TypeInfo(FinalObjectType, StructureFlags), &s_info, NonArray, inlineCapacity);
+ return Structure::create(vm, globalObject, prototype, TypeInfo(FinalObjectType, StructureFlags), &s_info, NonArray, inlineCapacity);
}
JS_EXPORT_PRIVATE static void visitChildren(JSCell*, SlotVisitor&);
@@ -1025,9 +1025,9 @@
protected:
void visitChildrenCommon(SlotVisitor&);
- void finishCreation(JSGlobalData& globalData)
+ void finishCreation(VM& vm)
{
- Base::finishCreation(globalData);
+ Base::finishCreation(vm);
ASSERT(structure()->totalStorageCapacity() == structure()->inlineCapacity());
ASSERT(classInfo());
}
@@ -1035,8 +1035,8 @@
private:
friend class LLIntOffsetsExtractor;
- explicit JSFinalObject(JSGlobalData& globalData, Structure* structure)
- : JSObject(globalData, structure)
+ explicit JSFinalObject(VM& vm, Structure* structure)
+ : JSObject(vm, structure)
{
}
@@ -1051,8 +1051,8 @@
*exec->heap(),
allocationSize(structure->inlineCapacity())
)
- ) JSFinalObject(exec->globalData(), structure);
- finalObject->finishCreation(exec->globalData());
+ ) JSFinalObject(exec->vm(), structure);
+ finalObject->finishCreation(exec->vm());
return finalObject;
}
@@ -1096,11 +1096,11 @@
return structure()->typeInfo().type() == ErrorInstanceType;
}
-inline void JSObject::setButterfly(JSGlobalData& globalData, Butterfly* butterfly, Structure* structure)
+inline void JSObject::setButterfly(VM& vm, Butterfly* butterfly, Structure* structure)
{
ASSERT(structure);
ASSERT(!butterfly == (!structure->outOfLineCapacity() && !hasIndexingHeader(structure->indexingType())));
- setStructure(globalData, structure);
+ setStructure(vm, structure);
m_butterfly = butterfly;
}
@@ -1134,8 +1134,8 @@
return asObject(value.asCell());
}
-inline JSObject::JSObject(JSGlobalData& globalData, Structure* structure, Butterfly* butterfly)
- : JSCell(globalData, structure)
+inline JSObject::JSObject(VM& vm, Structure* structure, Butterfly* butterfly)
+ : JSCell(vm, structure)
, m_butterfly(butterfly)
{
}
@@ -1147,7 +1147,7 @@
ALWAYS_INLINE bool JSObject::inlineGetOwnPropertySlot(ExecState* exec, PropertyName propertyName, PropertySlot& slot)
{
- PropertyOffset offset = structure()->get(exec->globalData(), propertyName);
+ PropertyOffset offset = structure()->get(exec->vm(), propertyName);
if (LIKELY(isValidOffset(offset))) {
JSValue value = getDirect(offset);
if (structure()->hasGetterSetterProperties() && value.isGetterSetter())
@@ -1215,7 +1215,7 @@
}
template<JSObject::PutMode mode>
-inline bool JSObject::putDirectInternal(JSGlobalData& globalData, PropertyName propertyName, JSValue value, unsigned attributes, PutPropertySlot& slot, JSCell* specificFunction)
+inline bool JSObject::putDirectInternal(VM& vm, PropertyName propertyName, JSValue value, unsigned attributes, PutPropertySlot& slot, JSCell* specificFunction)
{
ASSERT(value);
ASSERT(value.isGetterSetter() == !!(attributes & Accessor));
@@ -1225,16 +1225,16 @@
if (structure()->isDictionary()) {
unsigned currentAttributes;
JSCell* currentSpecificFunction;
- PropertyOffset offset = structure()->get(globalData, propertyName, currentAttributes, currentSpecificFunction);
+ PropertyOffset offset = structure()->get(vm, propertyName, currentAttributes, currentSpecificFunction);
if (offset != invalidOffset) {
// If there is currently a specific function, and there now either isn't,
// or the new value is different, then despecify.
if (currentSpecificFunction && (specificFunction != currentSpecificFunction))
- structure()->despecifyDictionaryFunction(globalData, propertyName);
+ structure()->despecifyDictionaryFunction(vm, propertyName);
if ((mode == PutModePut) && currentAttributes & ReadOnly)
return false;
- putDirect(globalData, offset, value);
+ putDirect(vm, offset, value);
// At this point, the objects structure only has a specific value set if previously there
// had been one set, and if the new value being specified is the same (otherwise we would
// have despecified, above). So, if currentSpecificFunction is not set, or if the new
@@ -1251,13 +1251,13 @@
Butterfly* newButterfly = m_butterfly;
if (structure()->putWillGrowOutOfLineStorage())
- newButterfly = growOutOfLineStorage(globalData, structure()->outOfLineCapacity(), structure()->suggestedNewOutOfLineStorageCapacity());
- offset = structure()->addPropertyWithoutTransition(globalData, propertyName, attributes, specificFunction);
- setButterfly(globalData, newButterfly, structure());
+ newButterfly = growOutOfLineStorage(vm, structure()->outOfLineCapacity(), structure()->suggestedNewOutOfLineStorageCapacity());
+ offset = structure()->addPropertyWithoutTransition(vm, propertyName, attributes, specificFunction);
+ setButterfly(vm, newButterfly, structure());
validateOffset(offset);
ASSERT(structure()->isValidOffset(offset));
- putDirect(globalData, offset, value);
+ putDirect(vm, offset, value);
// See comment on setNewProperty call below.
if (!specificFunction)
slot.setNewProperty(this, offset);
@@ -1271,12 +1271,12 @@
if (Structure* structure = Structure::addPropertyTransitionToExistingStructure(this->structure(), propertyName, attributes, specificFunction, offset)) {
Butterfly* newButterfly = m_butterfly;
if (currentCapacity != structure->outOfLineCapacity())
- newButterfly = growOutOfLineStorage(globalData, currentCapacity, structure->outOfLineCapacity());
+ newButterfly = growOutOfLineStorage(vm, currentCapacity, structure->outOfLineCapacity());
validateOffset(offset);
ASSERT(structure->isValidOffset(offset));
- setButterfly(globalData, newButterfly, structure);
- putDirect(globalData, offset, value);
+ setButterfly(vm, newButterfly, structure);
+ putDirect(vm, offset, value);
// This is a new property; transitions with specific values are not currently cachable,
// so leave the slot in an uncachable state.
if (!specificFunction)
@@ -1286,7 +1286,7 @@
unsigned currentAttributes;
JSCell* currentSpecificFunction;
- offset = structure()->get(globalData, propertyName, currentAttributes, currentSpecificFunction);
+ offset = structure()->get(vm, propertyName, currentAttributes, currentSpecificFunction);
if (offset != invalidOffset) {
if ((mode == PutModePut) && currentAttributes & ReadOnly)
return false;
@@ -1303,29 +1303,29 @@
if (currentSpecificFunction) {
// case (1) Do the put, then return leaving the slot uncachable.
if (specificFunction == currentSpecificFunction) {
- putDirect(globalData, offset, value);
+ putDirect(vm, offset, value);
return true;
}
// case (2) Despecify, fall through to (3).
- setStructure(globalData, Structure::despecifyFunctionTransition(globalData, structure(), propertyName));
+ setStructure(vm, Structure::despecifyFunctionTransition(vm, structure(), propertyName));
}
// case (3) set the slot, do the put, return.
slot.setExistingProperty(this, offset);
- putDirect(globalData, offset, value);
+ putDirect(vm, offset, value);
return true;
}
if ((mode == PutModePut) && !isExtensible())
return false;
- Structure* structure = Structure::addPropertyTransition(globalData, this->structure(), propertyName, attributes, specificFunction, offset);
+ Structure* structure = Structure::addPropertyTransition(vm, this->structure(), propertyName, attributes, specificFunction, offset);
validateOffset(offset);
ASSERT(structure->isValidOffset(offset));
- setStructureAndReallocateStorageIfNecessary(globalData, structure);
+ setStructureAndReallocateStorageIfNecessary(vm, structure);
- putDirect(globalData, offset, value);
+ putDirect(vm, offset, value);
// This is a new property; transitions with specific values are not currently cachable,
// so leave the slot in an uncachable state.
if (!specificFunction)
@@ -1335,57 +1335,57 @@
return true;
}
-inline void JSObject::setStructureAndReallocateStorageIfNecessary(JSGlobalData& globalData, unsigned oldCapacity, Structure* newStructure)
+inline void JSObject::setStructureAndReallocateStorageIfNecessary(VM& vm, unsigned oldCapacity, Structure* newStructure)
{
ASSERT(oldCapacity <= newStructure->outOfLineCapacity());
if (oldCapacity == newStructure->outOfLineCapacity()) {
- setStructure(globalData, newStructure);
+ setStructure(vm, newStructure);
return;
}
Butterfly* newButterfly = growOutOfLineStorage(
- globalData, oldCapacity, newStructure->outOfLineCapacity());
- setButterfly(globalData, newButterfly, newStructure);
+ vm, oldCapacity, newStructure->outOfLineCapacity());
+ setButterfly(vm, newButterfly, newStructure);
}
-inline void JSObject::setStructureAndReallocateStorageIfNecessary(JSGlobalData& globalData, Structure* newStructure)
+inline void JSObject::setStructureAndReallocateStorageIfNecessary(VM& vm, Structure* newStructure)
{
setStructureAndReallocateStorageIfNecessary(
- globalData, structure()->outOfLineCapacity(), newStructure);
+ vm, structure()->outOfLineCapacity(), newStructure);
}
-inline bool JSObject::putOwnDataProperty(JSGlobalData& globalData, PropertyName propertyName, JSValue value, PutPropertySlot& slot)
+inline bool JSObject::putOwnDataProperty(VM& vm, PropertyName propertyName, JSValue value, PutPropertySlot& slot)
{
ASSERT(value);
ASSERT(!Heap::heap(value) || Heap::heap(value) == Heap::heap(this));
ASSERT(!structure()->hasGetterSetterProperties());
- return putDirectInternal<PutModePut>(globalData, propertyName, value, 0, slot, getCallableObject(value));
+ return putDirectInternal<PutModePut>(vm, propertyName, value, 0, slot, getCallableObject(value));
}
-inline void JSObject::putDirect(JSGlobalData& globalData, PropertyName propertyName, JSValue value, unsigned attributes)
+inline void JSObject::putDirect(VM& vm, PropertyName propertyName, JSValue value, unsigned attributes)
{
ASSERT(!value.isGetterSetter() && !(attributes & Accessor));
PutPropertySlot slot;
- putDirectInternal<PutModeDefineOwnProperty>(globalData, propertyName, value, attributes, slot, getCallableObject(value));
+ putDirectInternal<PutModeDefineOwnProperty>(vm, propertyName, value, attributes, slot, getCallableObject(value));
}
-inline void JSObject::putDirect(JSGlobalData& globalData, PropertyName propertyName, JSValue value, PutPropertySlot& slot)
+inline void JSObject::putDirect(VM& vm, PropertyName propertyName, JSValue value, PutPropertySlot& slot)
{
ASSERT(!value.isGetterSetter());
- putDirectInternal<PutModeDefineOwnProperty>(globalData, propertyName, value, 0, slot, getCallableObject(value));
+ putDirectInternal<PutModeDefineOwnProperty>(vm, propertyName, value, 0, slot, getCallableObject(value));
}
-inline void JSObject::putDirectWithoutTransition(JSGlobalData& globalData, PropertyName propertyName, JSValue value, unsigned attributes)
+inline void JSObject::putDirectWithoutTransition(VM& vm, PropertyName propertyName, JSValue value, unsigned attributes)
{
ASSERT(!value.isGetterSetter() && !(attributes & Accessor));
Butterfly* newButterfly = m_butterfly;
if (structure()->putWillGrowOutOfLineStorage())
- newButterfly = growOutOfLineStorage(globalData, structure()->outOfLineCapacity(), structure()->suggestedNewOutOfLineStorageCapacity());
- PropertyOffset offset = structure()->addPropertyWithoutTransition(globalData, propertyName, attributes, getCallableObject(value));
- setButterfly(globalData, newButterfly, structure());
- putDirect(globalData, offset, value);
+ newButterfly = growOutOfLineStorage(vm, structure()->outOfLineCapacity(), structure()->suggestedNewOutOfLineStorageCapacity());
+ PropertyOffset offset = structure()->addPropertyWithoutTransition(vm, propertyName, attributes, getCallableObject(value));
+ setButterfly(vm, newButterfly, structure());
+ putDirect(vm, offset, value);
}
inline JSValue JSObject::toPrimitive(ExecState* exec, PreferredPrimitiveType preferredType) const
@@ -1453,7 +1453,7 @@
// Helper for defining native functions, if you're not using a static hash table.
// Use this macro from within finishCreation() methods in prototypes. This assumes
-// you've defined variables called exec, globalObject, and globalData, and they
+// you've defined variables called exec, globalObject, and vm, and they
// have the expected meanings.
#define JSC_NATIVE_INTRINSIC_FUNCTION(jsName, cppName, attributes, length, intrinsic) \
putDirectNativeFunction(\
diff --git a/Source/JavaScriptCore/runtime/JSPropertyNameIterator.cpp b/Source/JavaScriptCore/runtime/JSPropertyNameIterator.cpp
index 4967995..78b8aae 100644
--- a/Source/JavaScriptCore/runtime/JSPropertyNameIterator.cpp
+++ b/Source/JavaScriptCore/runtime/JSPropertyNameIterator.cpp
@@ -36,7 +36,7 @@
const ClassInfo JSPropertyNameIterator::s_info = { "JSPropertyNameIterator", 0, 0, 0, CREATE_METHOD_TABLE(JSPropertyNameIterator) };
inline JSPropertyNameIterator::JSPropertyNameIterator(ExecState* exec, PropertyNameArrayData* propertyNameArrayData, size_t numCacheableSlots)
- : JSCell(exec->globalData(), exec->globalData().propertyNameIteratorStructure.get())
+ : JSCell(exec->vm(), exec->vm().propertyNameIteratorStructure.get())
, m_numCacheableSlots(numCacheableSlots)
, m_jsStringsSize(propertyNameArrayData->propertyNameVector().size())
, m_jsStrings(adoptArrayPtr(new WriteBarrier<Unknown>[m_jsStringsSize]))
@@ -76,9 +76,9 @@
return jsPropertyNameIterator;
}
- jsPropertyNameIterator->setCachedPrototypeChain(exec->globalData(), structureChain);
- jsPropertyNameIterator->setCachedStructure(exec->globalData(), o->structure());
- o->structure()->setEnumerationCache(exec->globalData(), jsPropertyNameIterator);
+ jsPropertyNameIterator->setCachedPrototypeChain(exec->vm(), structureChain);
+ jsPropertyNameIterator->setCachedStructure(exec->vm(), o->structure());
+ o->structure()->setEnumerationCache(exec->vm(), jsPropertyNameIterator);
return jsPropertyNameIterator;
}
diff --git a/Source/JavaScriptCore/runtime/JSPropertyNameIterator.h b/Source/JavaScriptCore/runtime/JSPropertyNameIterator.h
index 0990232..ba931b1 100644
--- a/Source/JavaScriptCore/runtime/JSPropertyNameIterator.h
+++ b/Source/JavaScriptCore/runtime/JSPropertyNameIterator.h
@@ -52,9 +52,9 @@
static const bool hasImmortalStructure = true;
static void destroy(JSCell*);
- static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype)
+ static Structure* createStructure(VM& vm, JSGlobalObject* globalObject, JSValue prototype)
{
- return Structure::create(globalData, globalObject, prototype, TypeInfo(CompoundType, OverridesVisitChildren), &s_info);
+ return Structure::create(vm, globalObject, prototype, TypeInfo(CompoundType, OverridesVisitChildren), &s_info);
}
static void visitChildren(JSCell*, SlotVisitor&);
@@ -62,15 +62,15 @@
JSValue get(ExecState*, JSObject*, size_t i);
size_t size() { return m_jsStringsSize; }
- void setCachedStructure(JSGlobalData& globalData, Structure* structure)
+ void setCachedStructure(VM& vm, Structure* structure)
{
ASSERT(!m_cachedStructure);
ASSERT(structure);
- m_cachedStructure.set(globalData, this, structure);
+ m_cachedStructure.set(vm, this, structure);
}
Structure* cachedStructure() { return m_cachedStructure.get(); }
- void setCachedPrototypeChain(JSGlobalData& globalData, StructureChain* cachedPrototypeChain) { m_cachedPrototypeChain.set(globalData, this, cachedPrototypeChain); }
+ void setCachedPrototypeChain(VM& vm, StructureChain* cachedPrototypeChain) { m_cachedPrototypeChain.set(vm, this, cachedPrototypeChain); }
StructureChain* cachedPrototypeChain() { return m_cachedPrototypeChain.get(); }
static JS_EXPORTDATA const ClassInfo s_info;
@@ -78,10 +78,10 @@
protected:
void finishCreation(ExecState* exec, PropertyNameArrayData* propertyNameArrayData, JSObject* object)
{
- Base::finishCreation(exec->globalData());
+ Base::finishCreation(exec->vm());
PropertyNameArrayData::PropertyNameVector& propertyNameVector = propertyNameArrayData->propertyNameVector();
for (size_t i = 0; i < m_jsStringsSize; ++i)
- m_jsStrings[i].set(exec->globalData(), this, jsOwnedString(exec, propertyNameVector[i].string()));
+ m_jsStrings[i].set(exec->vm(), this, jsOwnedString(exec, propertyNameVector[i].string()));
m_cachedStructureInlineCapacity = object->structure()->inlineCapacity();
}
@@ -108,9 +108,9 @@
return m_enumerationCache.get();
}
- inline void StructureRareData::setEnumerationCache(JSGlobalData& globalData, const Structure* owner, JSPropertyNameIterator* value)
+ inline void StructureRareData::setEnumerationCache(VM& vm, const Structure* owner, JSPropertyNameIterator* value)
{
- m_enumerationCache.set(globalData, owner, value);
+ m_enumerationCache.set(vm, owner, value);
}
} // namespace JSC
diff --git a/Source/JavaScriptCore/runtime/JSProxy.cpp b/Source/JavaScriptCore/runtime/JSProxy.cpp
index ea15353..e0f9d69 100644
--- a/Source/JavaScriptCore/runtime/JSProxy.cpp
+++ b/Source/JavaScriptCore/runtime/JSProxy.cpp
@@ -47,13 +47,13 @@
visitor.append(&thisObject->m_target);
}
-void JSProxy::setTarget(JSGlobalData& globalData, JSGlobalObject* globalObject)
+void JSProxy::setTarget(VM& vm, JSGlobalObject* globalObject)
{
ASSERT_ARG(globalObject, globalObject);
- m_target.set(globalData, this, globalObject);
- setPrototype(globalData, globalObject->prototype());
+ m_target.set(vm, this, globalObject);
+ setPrototype(vm, globalObject->prototype());
- PrototypeMap& prototypeMap = globalData.prototypeMap;
+ PrototypeMap& prototypeMap = vm.prototypeMap;
if (!prototypeMap.isPrototype(this))
return;
diff --git a/Source/JavaScriptCore/runtime/JSProxy.h b/Source/JavaScriptCore/runtime/JSProxy.h
index ffc910d..9b6bed5 100644
--- a/Source/JavaScriptCore/runtime/JSProxy.h
+++ b/Source/JavaScriptCore/runtime/JSProxy.h
@@ -34,16 +34,16 @@
public:
typedef JSDestructibleObject Base;
- static JSProxy* create(JSGlobalData& globalData, Structure* structure, JSObject* target)
+ static JSProxy* create(VM& vm, Structure* structure, JSObject* target)
{
- JSProxy* proxy = new (NotNull, allocateCell<JSProxy>(globalData.heap)) JSProxy(globalData, structure);
- proxy->finishCreation(globalData, target);
+ JSProxy* proxy = new (NotNull, allocateCell<JSProxy>(vm.heap)) JSProxy(vm, structure);
+ proxy->finishCreation(vm, target);
return proxy;
}
- static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype)
+ static Structure* createStructure(VM& vm, JSGlobalObject* globalObject, JSValue prototype)
{
- return Structure::create(globalData, globalObject, prototype, TypeInfo(ProxyType, StructureFlags), &s_info);
+ return Structure::create(vm, globalObject, prototype, TypeInfo(ProxyType, StructureFlags), &s_info);
}
static JS_EXPORTDATA const ClassInfo s_info;
@@ -51,27 +51,27 @@
JSObject* target() const { return m_target.get(); }
protected:
- JSProxy(JSGlobalData& globalData, Structure* structure)
- : JSDestructibleObject(globalData, structure)
+ JSProxy(VM& vm, Structure* structure)
+ : JSDestructibleObject(vm, structure)
{
}
- void finishCreation(JSGlobalData& globalData)
+ void finishCreation(VM& vm)
{
- Base::finishCreation(globalData);
+ Base::finishCreation(vm);
}
- void finishCreation(JSGlobalData& globalData, JSObject* target)
+ void finishCreation(VM& vm, JSObject* target)
{
- Base::finishCreation(globalData);
- m_target.set(globalData, this, target);
+ Base::finishCreation(vm);
+ m_target.set(vm, this, target);
}
static const unsigned StructureFlags = OverridesVisitChildren | OverridesGetOwnPropertySlot | OverridesGetPropertyNames | InterceptsGetOwnPropertySlotByIndexEvenWhenLengthIsNotZero | Base::StructureFlags;
JS_EXPORT_PRIVATE static void visitChildren(JSCell*, SlotVisitor&);
- JS_EXPORT_PRIVATE void setTarget(JSGlobalData&, JSGlobalObject*);
+ JS_EXPORT_PRIVATE void setTarget(VM&, JSGlobalObject*);
JS_EXPORT_PRIVATE static String className(const JSObject*);
JS_EXPORT_PRIVATE static bool getOwnPropertySlot(JSCell*, ExecState*, PropertyName, PropertySlot&);
diff --git a/Source/JavaScriptCore/runtime/JSScope.cpp b/Source/JavaScriptCore/runtime/JSScope.cpp
index d9cc2887..69ff1e4 100644
--- a/Source/JavaScriptCore/runtime/JSScope.cpp
+++ b/Source/JavaScriptCore/runtime/JSScope.cpp
@@ -187,7 +187,7 @@
return true;
}
- pc->m_structure.set(callFrame->globalData(), callFrame->codeBlock()->ownerExecutable(), structure);
+ pc->m_structure.set(callFrame->vm(), callFrame->codeBlock()->ownerExecutable(), structure);
pc->m_offset = slot.cachedOffset();
result.setValue(value);
return true;
@@ -303,7 +303,7 @@
if (putToBaseOperation) {
putToBaseOperation->m_isDynamic = requiresDynamicChecks;
putToBaseOperation->m_kind = PutToBaseOperation::GlobalPropertyPut;
- putToBaseOperation->m_structure.set(callFrame->globalData(), callFrame->codeBlock()->ownerExecutable(), globalObject->structure());
+ putToBaseOperation->m_structure.set(callFrame->vm(), callFrame->codeBlock()->ownerExecutable(), globalObject->structure());
setPutPropertyAccessOffset(putToBaseOperation, slot.cachedOffset());
}
switch (returnValues) {
@@ -346,7 +346,7 @@
if (putToBaseOperation) {
putToBaseOperation->m_kind = entry.isReadOnly() ? PutToBaseOperation::Readonly : PutToBaseOperation::VariablePut;
- putToBaseOperation->m_structure.set(callFrame->globalData(), callFrame->codeBlock()->ownerExecutable(), callFrame->lexicalGlobalObject()->activationStructure());
+ putToBaseOperation->m_structure.set(callFrame->vm(), callFrame->codeBlock()->ownerExecutable(), callFrame->lexicalGlobalObject()->activationStructure());
putToBaseOperation->m_offset = entry.getIndex();
putToBaseOperation->m_scopeDepth = (skipTopScopeNode ? 1 : 0) + scopeCount;
}
@@ -499,7 +499,7 @@
if (JSObject* propertyBase = JSScope::resolveContainingScope<ReturnBaseAndValue>(callFrame, identifier, slot, operations, putToBaseOperations, false)) {
ASSERT(operations->size());
JSValue value = slot.getValue(callFrame, identifier);
- if (callFrame->globalData().exception)
+ if (callFrame->vm().exception)
return JSValue();
*base = propertyBase;
@@ -529,7 +529,7 @@
if (JSObject* propertyBase = JSScope::resolveContainingScope<ReturnThisAndValue>(callFrame, identifier, slot, operations, 0, false)) {
ASSERT(operations->size());
JSValue value = slot.getValue(callFrame, identifier);
- if (callFrame->globalData().exception)
+ if (callFrame->vm().exception)
return JSValue();
ASSERT(value);
*base = propertyBase->structure()->typeInfo().isEnvironmentRecord() ? jsUndefined() : JSValue(propertyBase);
@@ -564,7 +564,7 @@
goto genericHandler;
}
}
- operation->m_registerAddress->set(callFrame->globalData(), base.asCell(), value);
+ operation->m_registerAddress->set(callFrame->vm(), base.asCell(), value);
return;
case PutToBaseOperation::VariablePut: {
@@ -574,7 +574,7 @@
goto genericHandler;
}
JSVariableObject* variableObject = jsCast<JSVariableObject*>(base);
- variableObject->registerAt(operation->m_offset).set(callFrame->globalData(), variableObject, value);
+ variableObject->registerAt(operation->m_offset).set(callFrame->vm(), variableObject, value);
return;
}
@@ -582,7 +582,7 @@
JSObject* object = jsCast<JSObject*>(base);
if (operation->m_structure.get() != object->structure())
break;
- object->putDirect(callFrame->globalData(), operation->m_offset, value);
+ object->putDirect(callFrame->vm(), operation->m_offset, value);
return;
}
@@ -607,7 +607,7 @@
if (slot.base() != baseObject)
return;
ASSERT(!baseObject->hasInlineStorage());
- operation->m_structure.set(callFrame->globalData(), callFrame->codeBlock()->ownerExecutable(), baseObject->structure());
+ operation->m_structure.set(callFrame->vm(), callFrame->codeBlock()->ownerExecutable(), baseObject->structure());
setPutPropertyAccessOffset(operation, slot.cachedOffset());
return;
}
diff --git a/Source/JavaScriptCore/runtime/JSScope.h b/Source/JavaScriptCore/runtime/JSScope.h
index a9a9dd8..95db8ad 100644
--- a/Source/JavaScriptCore/runtime/JSScope.h
+++ b/Source/JavaScriptCore/runtime/JSScope.h
@@ -59,11 +59,11 @@
int localDepth();
JSGlobalObject* globalObject();
- JSGlobalData* globalData();
+ VM* vm();
JSObject* globalThis();
protected:
- JSScope(JSGlobalData&, Structure*, JSScope* next);
+ JSScope(VM&, Structure*, JSScope* next);
static const unsigned StructureFlags = OverridesVisitChildren | Base::StructureFlags;
private:
@@ -80,9 +80,9 @@
template <ReturnValues> static JSObject* resolveContainingScope(CallFrame*, const Identifier&, PropertySlot&, ResolveOperations*, PutToBaseOperation*, bool isStrict);
};
-inline JSScope::JSScope(JSGlobalData& globalData, Structure* structure, JSScope* next)
- : Base(globalData, structure)
- , m_next(globalData, this, next, WriteBarrier<JSScope>::MayBeNull)
+inline JSScope::JSScope(VM& vm, Structure* structure, JSScope* next)
+ : Base(vm, structure)
+ , m_next(vm, this, next, WriteBarrier<JSScope>::MayBeNull)
{
}
@@ -127,9 +127,9 @@
return structure()->globalObject();
}
-inline JSGlobalData* JSScope::globalData()
+inline VM* JSScope::vm()
{
- return Heap::heap(this)->globalData();
+ return Heap::heap(this)->vm();
}
inline Register& Register::operator=(JSScope* scope)
@@ -143,10 +143,10 @@
return jsCast<JSScope*>(jsValue());
}
-inline JSGlobalData& ExecState::globalData() const
+inline VM& ExecState::vm() const
{
- ASSERT(scope()->globalData());
- return *scope()->globalData();
+ ASSERT(scope()->vm());
+ return *scope()->vm();
}
inline JSGlobalObject* ExecState::lexicalGlobalObject() const
diff --git a/Source/JavaScriptCore/runtime/JSSegmentedVariableObject.h b/Source/JavaScriptCore/runtime/JSSegmentedVariableObject.h
index 1fd96c1..93d5eba 100644
--- a/Source/JavaScriptCore/runtime/JSSegmentedVariableObject.h
+++ b/Source/JavaScriptCore/runtime/JSSegmentedVariableObject.h
@@ -82,14 +82,14 @@
protected:
static const unsigned StructureFlags = OverridesVisitChildren | JSSymbolTableObject::StructureFlags;
- JSSegmentedVariableObject(JSGlobalData& globalData, Structure* structure, JSScope* scope)
- : JSSymbolTableObject(globalData, structure, scope)
+ JSSegmentedVariableObject(VM& vm, Structure* structure, JSScope* scope)
+ : JSSymbolTableObject(vm, structure, scope)
{
}
- void finishCreation(JSGlobalData& globalData)
+ void finishCreation(VM& vm)
{
- Base::finishCreation(globalData);
+ Base::finishCreation(vm);
}
SegmentedVector<WriteBarrier<Unknown>, 16> m_registers;
diff --git a/Source/JavaScriptCore/runtime/JSString.cpp b/Source/JavaScriptCore/runtime/JSString.cpp
index e18d8ba..86704d7 100644
--- a/Source/JavaScriptCore/runtime/JSString.cpp
+++ b/Source/JavaScriptCore/runtime/JSString.cpp
@@ -40,7 +40,7 @@
{
ASSERT(m_index == JSRopeString::s_maxInternalRopeLength);
JSString* jsString = m_jsString;
- m_jsString = jsStringBuilder(&m_globalData);
+ m_jsString = jsStringBuilder(&m_vm);
m_index = 0;
append(jsString);
}
@@ -261,8 +261,8 @@
inline StringObject* StringObject::create(ExecState* exec, JSGlobalObject* globalObject, JSString* string)
{
- StringObject* object = new (NotNull, allocateCell<StringObject>(*exec->heap())) StringObject(exec->globalData(), globalObject->stringObjectStructure());
- object->finishCreation(exec->globalData(), string);
+ StringObject* object = new (NotNull, allocateCell<StringObject>(*exec->heap())) StringObject(exec->vm(), globalObject->stringObjectStructure());
+ object->finishCreation(exec->vm(), string);
return object;
}
diff --git a/Source/JavaScriptCore/runtime/JSString.h b/Source/JavaScriptCore/runtime/JSString.h
index c6aa54a..855de97 100644
--- a/Source/JavaScriptCore/runtime/JSString.h
+++ b/Source/JavaScriptCore/runtime/JSString.h
@@ -35,34 +35,34 @@
class JSRopeString;
class LLIntOffsetsExtractor;
-JSString* jsEmptyString(JSGlobalData*);
+JSString* jsEmptyString(VM*);
JSString* jsEmptyString(ExecState*);
-JSString* jsString(JSGlobalData*, const String&); // returns empty string if passed null string
+JSString* jsString(VM*, const String&); // returns empty string if passed null string
JSString* jsString(ExecState*, const String&); // returns empty string if passed null string
-JSString* jsSingleCharacterString(JSGlobalData*, UChar);
+JSString* jsSingleCharacterString(VM*, UChar);
JSString* jsSingleCharacterString(ExecState*, UChar);
JSString* jsSingleCharacterSubstring(ExecState*, const String&, unsigned offset);
-JSString* jsSubstring(JSGlobalData*, const String&, unsigned offset, unsigned length);
+JSString* jsSubstring(VM*, const String&, unsigned offset, unsigned length);
JSString* jsSubstring(ExecState*, const String&, unsigned offset, unsigned length);
// Non-trivial strings are two or more characters long.
// These functions are faster than just calling jsString.
-JSString* jsNontrivialString(JSGlobalData*, const String&);
+JSString* jsNontrivialString(VM*, const String&);
JSString* jsNontrivialString(ExecState*, const String&);
// Should be used for strings that are owned by an object that will
// likely outlive the JSValue this makes, such as the parse tree or a
// DOM object that contains a String
-JSString* jsOwnedString(JSGlobalData*, const String&);
+JSString* jsOwnedString(VM*, const String&);
JSString* jsOwnedString(ExecState*, const String&);
-JSRopeString* jsStringBuilder(JSGlobalData*);
+JSRopeString* jsStringBuilder(VM*);
class JSString : public JSCell {
public:
friend class JIT;
- friend class JSGlobalData;
+ friend class VM;
friend class SpecializedThunkJIT;
friend class JSRopeString;
friend class MarkStack;
@@ -76,63 +76,63 @@
static void destroy(JSCell*);
private:
- JSString(JSGlobalData& globalData, PassRefPtr<StringImpl> value)
- : JSCell(globalData, globalData.stringStructure.get())
+ JSString(VM& vm, PassRefPtr<StringImpl> value)
+ : JSCell(vm, vm.stringStructure.get())
, m_flags(0)
, m_value(value)
{
}
- JSString(JSGlobalData& globalData)
- : JSCell(globalData, globalData.stringStructure.get())
+ JSString(VM& vm)
+ : JSCell(vm, vm.stringStructure.get())
, m_flags(0)
{
}
- void finishCreation(JSGlobalData& globalData, size_t length)
+ void finishCreation(VM& vm, size_t length)
{
ASSERT(!m_value.isNull());
- Base::finishCreation(globalData);
+ Base::finishCreation(vm);
m_length = length;
setIs8Bit(m_value.impl()->is8Bit());
- globalData.m_newStringsSinceLastHashCons++;
+ vm.m_newStringsSinceLastHashCons++;
}
- void finishCreation(JSGlobalData& globalData, size_t length, size_t cost)
+ void finishCreation(VM& vm, size_t length, size_t cost)
{
ASSERT(!m_value.isNull());
- Base::finishCreation(globalData);
+ Base::finishCreation(vm);
m_length = length;
setIs8Bit(m_value.impl()->is8Bit());
Heap::heap(this)->reportExtraMemoryCost(cost);
- globalData.m_newStringsSinceLastHashCons++;
+ vm.m_newStringsSinceLastHashCons++;
}
protected:
- void finishCreation(JSGlobalData& globalData)
+ void finishCreation(VM& vm)
{
- Base::finishCreation(globalData);
+ Base::finishCreation(vm);
m_length = 0;
setIs8Bit(true);
- globalData.m_newStringsSinceLastHashCons++;
+ vm.m_newStringsSinceLastHashCons++;
}
public:
- static JSString* create(JSGlobalData& globalData, PassRefPtr<StringImpl> value)
+ static JSString* create(VM& vm, PassRefPtr<StringImpl> value)
{
ASSERT(value);
size_t length = value->length();
size_t cost = value->cost();
- JSString* newString = new (NotNull, allocateCell<JSString>(globalData.heap)) JSString(globalData, value);
- newString->finishCreation(globalData, length, cost);
+ JSString* newString = new (NotNull, allocateCell<JSString>(vm.heap)) JSString(vm, value);
+ newString->finishCreation(vm, length, cost);
return newString;
}
- static JSString* createHasOtherOwner(JSGlobalData& globalData, PassRefPtr<StringImpl> value)
+ static JSString* createHasOtherOwner(VM& vm, PassRefPtr<StringImpl> value)
{
ASSERT(value);
size_t length = value->length();
- JSString* newString = new (NotNull, allocateCell<JSString>(globalData.heap)) JSString(globalData, value);
- newString->finishCreation(globalData, length);
+ JSString* newString = new (NotNull, allocateCell<JSString>(vm.heap)) JSString(vm, value);
+ newString->finishCreation(vm, length);
return newString;
}
@@ -153,9 +153,9 @@
bool canGetIndex(unsigned i) { return i < m_length; }
JSString* getIndex(ExecState*, unsigned);
- static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue proto)
+ static Structure* createStructure(VM& vm, JSGlobalObject* globalObject, JSValue proto)
{
- return Structure::create(globalData, globalObject, proto, TypeInfo(StringType, OverridesGetOwnPropertySlot | InterceptsGetOwnPropertySlotByIndexEvenWhenLengthIsNotZero), &s_info);
+ return Structure::create(vm, globalObject, proto, TypeInfo(StringType, OverridesGetOwnPropertySlot | InterceptsGetOwnPropertySlotByIndexEvenWhenLengthIsNotZero), &s_info);
}
static size_t offsetOfLength() { return OBJECT_OFFSETOF(JSString, m_length); }
@@ -215,13 +215,13 @@
class JSRopeString : public JSString {
friend class JSString;
- friend JSRopeString* jsStringBuilder(JSGlobalData*);
+ friend JSRopeString* jsStringBuilder(VM*);
class RopeBuilder {
public:
- RopeBuilder(JSGlobalData& globalData)
- : m_globalData(globalData)
- , m_jsString(jsStringBuilder(&globalData))
+ RopeBuilder(VM& vm)
+ : m_vm(vm)
+ , m_jsString(jsStringBuilder(&vm))
, m_index(0)
{
}
@@ -230,7 +230,7 @@
{
if (m_index == JSRopeString::s_maxInternalRopeLength)
expand();
- m_jsString->append(m_globalData, m_index++, jsString);
+ m_jsString->append(m_vm, m_index++, jsString);
}
JSRopeString* release()
@@ -245,66 +245,66 @@
private:
void expand();
- JSGlobalData& m_globalData;
+ VM& m_vm;
JSRopeString* m_jsString;
size_t m_index;
};
private:
- JSRopeString(JSGlobalData& globalData)
- : JSString(globalData)
+ JSRopeString(VM& vm)
+ : JSString(vm)
{
}
- void finishCreation(JSGlobalData& globalData, JSString* s1, JSString* s2)
+ void finishCreation(VM& vm, JSString* s1, JSString* s2)
{
- Base::finishCreation(globalData);
+ Base::finishCreation(vm);
m_length = s1->length() + s2->length();
setIs8Bit(s1->is8Bit() && s2->is8Bit());
- m_fibers[0].set(globalData, this, s1);
- m_fibers[1].set(globalData, this, s2);
+ m_fibers[0].set(vm, this, s1);
+ m_fibers[1].set(vm, this, s2);
}
- void finishCreation(JSGlobalData& globalData, JSString* s1, JSString* s2, JSString* s3)
+ void finishCreation(VM& vm, JSString* s1, JSString* s2, JSString* s3)
{
- Base::finishCreation(globalData);
+ Base::finishCreation(vm);
m_length = s1->length() + s2->length() + s3->length();
setIs8Bit(s1->is8Bit() && s2->is8Bit() && s3->is8Bit());
- m_fibers[0].set(globalData, this, s1);
- m_fibers[1].set(globalData, this, s2);
- m_fibers[2].set(globalData, this, s3);
+ m_fibers[0].set(vm, this, s1);
+ m_fibers[1].set(vm, this, s2);
+ m_fibers[2].set(vm, this, s3);
}
- void finishCreation(JSGlobalData& globalData)
+ void finishCreation(VM& vm)
{
- JSString::finishCreation(globalData);
+ JSString::finishCreation(vm);
}
- void append(JSGlobalData& globalData, size_t index, JSString* jsString)
+ void append(VM& vm, size_t index, JSString* jsString)
{
- m_fibers[index].set(globalData, this, jsString);
+ m_fibers[index].set(vm, this, jsString);
m_length += jsString->m_length;
setIs8Bit(is8Bit() && jsString->is8Bit());
}
- static JSRopeString* createNull(JSGlobalData& globalData)
+ static JSRopeString* createNull(VM& vm)
{
- JSRopeString* newString = new (NotNull, allocateCell<JSRopeString>(globalData.heap)) JSRopeString(globalData);
- newString->finishCreation(globalData);
+ JSRopeString* newString = new (NotNull, allocateCell<JSRopeString>(vm.heap)) JSRopeString(vm);
+ newString->finishCreation(vm);
return newString;
}
public:
- static JSString* create(JSGlobalData& globalData, JSString* s1, JSString* s2)
+ static JSString* create(VM& vm, JSString* s1, JSString* s2)
{
- JSRopeString* newString = new (NotNull, allocateCell<JSRopeString>(globalData.heap)) JSRopeString(globalData);
- newString->finishCreation(globalData, s1, s2);
+ JSRopeString* newString = new (NotNull, allocateCell<JSRopeString>(vm.heap)) JSRopeString(vm);
+ newString->finishCreation(vm, s1, s2);
return newString;
}
- static JSString* create(JSGlobalData& globalData, JSString* s1, JSString* s2, JSString* s3)
+ static JSString* create(VM& vm, JSString* s1, JSString* s2, JSString* s3)
{
- JSRopeString* newString = new (NotNull, allocateCell<JSRopeString>(globalData.heap)) JSRopeString(globalData);
- newString->finishCreation(globalData, s1, s2, s3);
+ JSRopeString* newString = new (NotNull, allocateCell<JSRopeString>(vm.heap)) JSRopeString(vm);
+ newString->finishCreation(vm, s1, s2, s3);
return newString;
}
@@ -336,32 +336,32 @@
return jsCast<JSString*>(value.asCell());
}
-inline JSString* jsEmptyString(JSGlobalData* globalData)
+inline JSString* jsEmptyString(VM* vm)
{
- return globalData->smallStrings.emptyString();
+ return vm->smallStrings.emptyString();
}
-ALWAYS_INLINE JSString* jsSingleCharacterString(JSGlobalData* globalData, UChar c)
+ALWAYS_INLINE JSString* jsSingleCharacterString(VM* vm, UChar c)
{
if (c <= maxSingleCharacterString)
- return globalData->smallStrings.singleCharacterString(globalData, c);
- return JSString::create(*globalData, String(&c, 1).impl());
+ return vm->smallStrings.singleCharacterString(vm, c);
+ return JSString::create(*vm, String(&c, 1).impl());
}
ALWAYS_INLINE JSString* jsSingleCharacterSubstring(ExecState* exec, const String& s, unsigned offset)
{
- JSGlobalData* globalData = &exec->globalData();
+ VM* vm = &exec->vm();
ASSERT(offset < static_cast<unsigned>(s.length()));
UChar c = s.characterAt(offset);
if (c <= maxSingleCharacterString)
- return globalData->smallStrings.singleCharacterString(globalData, c);
- return JSString::create(*globalData, StringImpl::create(s.impl(), offset, 1));
+ return vm->smallStrings.singleCharacterString(vm, c);
+ return JSString::create(*vm, StringImpl::create(s.impl(), offset, 1));
}
-inline JSString* jsNontrivialString(JSGlobalData* globalData, const String& s)
+inline JSString* jsNontrivialString(VM* vm, const String& s)
{
ASSERT(s.length() > 1);
- return JSString::create(*globalData, s.impl());
+ return JSString::create(*vm, s.impl());
}
inline const String& JSString::value(ExecState* exec) const
@@ -387,17 +387,17 @@
return jsSingleCharacterSubstring(exec, m_value, i);
}
-inline JSString* jsString(JSGlobalData* globalData, const String& s)
+inline JSString* jsString(VM* vm, const String& s)
{
int size = s.length();
if (!size)
- return globalData->smallStrings.emptyString();
+ return vm->smallStrings.emptyString();
if (size == 1) {
UChar c = s.characterAt(0);
if (c <= maxSingleCharacterString)
- return globalData->smallStrings.singleCharacterString(globalData, c);
+ return vm->smallStrings.singleCharacterString(vm, c);
}
- return JSString::create(*globalData, s.impl());
+ return JSString::create(*vm, s.impl());
}
inline JSString* jsSubstring(ExecState* exec, JSString* s, unsigned offset, unsigned length)
@@ -405,67 +405,67 @@
ASSERT(offset <= static_cast<unsigned>(s->length()));
ASSERT(length <= static_cast<unsigned>(s->length()));
ASSERT(offset + length <= static_cast<unsigned>(s->length()));
- JSGlobalData* globalData = &exec->globalData();
+ VM* vm = &exec->vm();
if (!length)
- return globalData->smallStrings.emptyString();
- return jsSubstring(globalData, s->value(exec), offset, length);
+ return vm->smallStrings.emptyString();
+ return jsSubstring(vm, s->value(exec), offset, length);
}
-inline JSString* jsSubstring8(JSGlobalData* globalData, const String& s, unsigned offset, unsigned length)
+inline JSString* jsSubstring8(VM* vm, const String& s, unsigned offset, unsigned length)
{
ASSERT(offset <= static_cast<unsigned>(s.length()));
ASSERT(length <= static_cast<unsigned>(s.length()));
ASSERT(offset + length <= static_cast<unsigned>(s.length()));
if (!length)
- return globalData->smallStrings.emptyString();
+ return vm->smallStrings.emptyString();
if (length == 1) {
UChar c = s.characterAt(offset);
if (c <= maxSingleCharacterString)
- return globalData->smallStrings.singleCharacterString(globalData, c);
+ return vm->smallStrings.singleCharacterString(vm, c);
}
- return JSString::createHasOtherOwner(*globalData, StringImpl::create8(s.impl(), offset, length));
+ return JSString::createHasOtherOwner(*vm, StringImpl::create8(s.impl(), offset, length));
}
-inline JSString* jsSubstring(JSGlobalData* globalData, const String& s, unsigned offset, unsigned length)
+inline JSString* jsSubstring(VM* vm, const String& s, unsigned offset, unsigned length)
{
ASSERT(offset <= static_cast<unsigned>(s.length()));
ASSERT(length <= static_cast<unsigned>(s.length()));
ASSERT(offset + length <= static_cast<unsigned>(s.length()));
if (!length)
- return globalData->smallStrings.emptyString();
+ return vm->smallStrings.emptyString();
if (length == 1) {
UChar c = s.characterAt(offset);
if (c <= maxSingleCharacterString)
- return globalData->smallStrings.singleCharacterString(globalData, c);
+ return vm->smallStrings.singleCharacterString(vm, c);
}
- return JSString::createHasOtherOwner(*globalData, StringImpl::create(s.impl(), offset, length));
+ return JSString::createHasOtherOwner(*vm, StringImpl::create(s.impl(), offset, length));
}
-inline JSString* jsOwnedString(JSGlobalData* globalData, const String& s)
+inline JSString* jsOwnedString(VM* vm, const String& s)
{
int size = s.length();
if (!size)
- return globalData->smallStrings.emptyString();
+ return vm->smallStrings.emptyString();
if (size == 1) {
UChar c = s.characterAt(0);
if (c <= maxSingleCharacterString)
- return globalData->smallStrings.singleCharacterString(globalData, c);
+ return vm->smallStrings.singleCharacterString(vm, c);
}
- return JSString::createHasOtherOwner(*globalData, s.impl());
+ return JSString::createHasOtherOwner(*vm, s.impl());
}
-inline JSRopeString* jsStringBuilder(JSGlobalData* globalData)
+inline JSRopeString* jsStringBuilder(VM* vm)
{
- return JSRopeString::createNull(*globalData);
+ return JSRopeString::createNull(*vm);
}
-inline JSString* jsEmptyString(ExecState* exec) { return jsEmptyString(&exec->globalData()); }
-inline JSString* jsString(ExecState* exec, const String& s) { return jsString(&exec->globalData(), s); }
-inline JSString* jsSingleCharacterString(ExecState* exec, UChar c) { return jsSingleCharacterString(&exec->globalData(), c); }
-inline JSString* jsSubstring8(ExecState* exec, const String& s, unsigned offset, unsigned length) { return jsSubstring8(&exec->globalData(), s, offset, length); }
-inline JSString* jsSubstring(ExecState* exec, const String& s, unsigned offset, unsigned length) { return jsSubstring(&exec->globalData(), s, offset, length); }
-inline JSString* jsNontrivialString(ExecState* exec, const String& s) { return jsNontrivialString(&exec->globalData(), s); }
-inline JSString* jsOwnedString(ExecState* exec, const String& s) { return jsOwnedString(&exec->globalData(), s); }
+inline JSString* jsEmptyString(ExecState* exec) { return jsEmptyString(&exec->vm()); }
+inline JSString* jsString(ExecState* exec, const String& s) { return jsString(&exec->vm(), s); }
+inline JSString* jsSingleCharacterString(ExecState* exec, UChar c) { return jsSingleCharacterString(&exec->vm(), c); }
+inline JSString* jsSubstring8(ExecState* exec, const String& s, unsigned offset, unsigned length) { return jsSubstring8(&exec->vm(), s, offset, length); }
+inline JSString* jsSubstring(ExecState* exec, const String& s, unsigned offset, unsigned length) { return jsSubstring(&exec->vm(), s, offset, length); }
+inline JSString* jsNontrivialString(ExecState* exec, const String& s) { return jsNontrivialString(&exec->vm(), s); }
+inline JSString* jsOwnedString(ExecState* exec, const String& s) { return jsOwnedString(&exec->vm(), s); }
ALWAYS_INLINE bool JSString::getStringPropertySlot(ExecState* exec, PropertyName propertyName, PropertySlot& slot)
{
@@ -525,19 +525,19 @@
ALWAYS_INLINE String inlineJSValueNotStringtoString(const JSValue& value, ExecState* exec)
{
- JSGlobalData& globalData = exec->globalData();
+ VM& vm = exec->vm();
if (value.isInt32())
- return globalData.numericStrings.add(value.asInt32());
+ return vm.numericStrings.add(value.asInt32());
if (value.isDouble())
- return globalData.numericStrings.add(value.asDouble());
+ return vm.numericStrings.add(value.asDouble());
if (value.isTrue())
- return globalData.propertyNames->trueKeyword.string();
+ return vm.propertyNames->trueKeyword.string();
if (value.isFalse())
- return globalData.propertyNames->falseKeyword.string();
+ return vm.propertyNames->falseKeyword.string();
if (value.isNull())
- return globalData.propertyNames->nullKeyword.string();
+ return vm.propertyNames->nullKeyword.string();
if (value.isUndefined())
- return globalData.propertyNames->undefinedKeyword.string();
+ return vm.propertyNames->undefinedKeyword.string();
return value.toString(exec)->value(exec);
}
diff --git a/Source/JavaScriptCore/runtime/JSStringJoiner.cpp b/Source/JavaScriptCore/runtime/JSStringJoiner.cpp
index a23fa02..8b4c55f 100644
--- a/Source/JavaScriptCore/runtime/JSStringJoiner.cpp
+++ b/Source/JavaScriptCore/runtime/JSStringJoiner.cpp
@@ -124,7 +124,7 @@
if (!outputStringImpl)
return throwOutOfMemoryError(exec);
- return JSString::create(exec->globalData(), outputStringImpl.release());
+ return JSString::create(exec->vm(), outputStringImpl.release());
}
}
diff --git a/Source/JavaScriptCore/runtime/JSSymbolTableObject.h b/Source/JavaScriptCore/runtime/JSSymbolTableObject.h
index 190be26..6db2b88 100644
--- a/Source/JavaScriptCore/runtime/JSSymbolTableObject.h
+++ b/Source/JavaScriptCore/runtime/JSSymbolTableObject.h
@@ -49,18 +49,18 @@
protected:
static const unsigned StructureFlags = IsEnvironmentRecord | OverridesVisitChildren | OverridesGetPropertyNames | Base::StructureFlags;
- JSSymbolTableObject(JSGlobalData& globalData, Structure* structure, JSScope* scope, SharedSymbolTable* symbolTable = 0)
- : Base(globalData, structure, scope)
+ JSSymbolTableObject(VM& vm, Structure* structure, JSScope* scope, SharedSymbolTable* symbolTable = 0)
+ : Base(vm, structure, scope)
{
if (symbolTable)
- m_symbolTable.set(globalData, this, symbolTable);
+ m_symbolTable.set(vm, this, symbolTable);
}
- void finishCreation(JSGlobalData& globalData)
+ void finishCreation(VM& vm)
{
- Base::finishCreation(globalData);
+ Base::finishCreation(vm);
if (!m_symbolTable)
- m_symbolTable.set(globalData, this, SharedSymbolTable::create(globalData));
+ m_symbolTable.set(vm, this, SharedSymbolTable::create(vm));
}
static void visitChildren(JSCell*, SlotVisitor&);
@@ -118,7 +118,7 @@
SymbolTableObjectType* object, ExecState* exec, PropertyName propertyName, JSValue value,
bool shouldThrow)
{
- JSGlobalData& globalData = exec->globalData();
+ VM& vm = exec->vm();
ASSERT(!Heap::heap(value) || Heap::heap(value) == Heap::heap(object));
SymbolTable& symbolTable = *object->symbolTable();
@@ -135,13 +135,13 @@
}
if (UNLIKELY(wasFat))
iter->value.notifyWrite();
- object->registerAt(fastEntry.getIndex()).set(globalData, object, value);
+ object->registerAt(fastEntry.getIndex()).set(vm, object, value);
return true;
}
template<typename SymbolTableObjectType>
inline bool symbolTablePutWithAttributes(
- SymbolTableObjectType* object, JSGlobalData& globalData, PropertyName propertyName,
+ SymbolTableObjectType* object, VM& vm, PropertyName propertyName,
JSValue value, unsigned attributes)
{
ASSERT(!Heap::heap(value) || Heap::heap(value) == Heap::heap(object));
@@ -153,7 +153,7 @@
ASSERT(!entry.isNull());
entry.notifyWrite();
entry.setAttributes(attributes);
- object->registerAt(entry.getIndex()).set(globalData, object, value);
+ object->registerAt(entry.getIndex()).set(vm, object, value);
return true;
}
diff --git a/Source/JavaScriptCore/runtime/JSVariableObject.h b/Source/JavaScriptCore/runtime/JSVariableObject.h
index 3ff7aa8..4dcaef3 100644
--- a/Source/JavaScriptCore/runtime/JSVariableObject.h
+++ b/Source/JavaScriptCore/runtime/JSVariableObject.h
@@ -59,13 +59,13 @@
static const unsigned StructureFlags = Base::StructureFlags;
JSVariableObject(
- JSGlobalData& globalData,
+ VM& vm,
Structure* structure,
Register* registers,
JSScope* scope,
SharedSymbolTable* symbolTable = 0
)
- : Base(globalData, structure, scope, symbolTable)
+ : Base(vm, structure, scope, symbolTable)
, m_registers(reinterpret_cast<WriteBarrierBase<Unknown>*>(registers))
{
}
diff --git a/Source/JavaScriptCore/runtime/JSWithScope.h b/Source/JavaScriptCore/runtime/JSWithScope.h
index ba2b793..ea879cb 100644
--- a/Source/JavaScriptCore/runtime/JSWithScope.h
+++ b/Source/JavaScriptCore/runtime/JSWithScope.h
@@ -37,14 +37,14 @@
static JSWithScope* create(ExecState* exec, JSObject* object)
{
JSWithScope* withScope = new (NotNull, allocateCell<JSWithScope>(*exec->heap())) JSWithScope(exec, object);
- withScope->finishCreation(exec->globalData());
+ withScope->finishCreation(exec->vm());
return withScope;
}
static JSWithScope* create(ExecState* exec, JSObject* object, JSScope* next)
{
JSWithScope* withScope = new (NotNull, allocateCell<JSWithScope>(*exec->heap())) JSWithScope(exec, object, next);
- withScope->finishCreation(exec->globalData());
+ withScope->finishCreation(exec->vm());
return withScope;
}
@@ -52,9 +52,9 @@
static void visitChildren(JSCell*, SlotVisitor&);
- static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue proto)
+ static Structure* createStructure(VM& vm, JSGlobalObject* globalObject, JSValue proto)
{
- return Structure::create(globalData, globalObject, proto, TypeInfo(WithScopeType, StructureFlags), &s_info);
+ return Structure::create(vm, globalObject, proto, TypeInfo(WithScopeType, StructureFlags), &s_info);
}
static JS_EXPORTDATA const ClassInfo s_info;
@@ -65,21 +65,21 @@
private:
JSWithScope(ExecState* exec, JSObject* object)
: Base(
- exec->globalData(),
+ exec->vm(),
exec->lexicalGlobalObject()->withScopeStructure(),
exec->scope()
)
- , m_object(exec->globalData(), this, object)
+ , m_object(exec->vm(), this, object)
{
}
JSWithScope(ExecState* exec, JSObject* object, JSScope* next)
: Base(
- exec->globalData(),
+ exec->vm(),
exec->lexicalGlobalObject()->withScopeStructure(),
next
)
- , m_object(exec->globalData(), this, object)
+ , m_object(exec->vm(), this, object)
{
}
diff --git a/Source/JavaScriptCore/runtime/JSWrapperObject.h b/Source/JavaScriptCore/runtime/JSWrapperObject.h
index f108c9e..f1b6d32 100644
--- a/Source/JavaScriptCore/runtime/JSWrapperObject.h
+++ b/Source/JavaScriptCore/runtime/JSWrapperObject.h
@@ -39,11 +39,11 @@
}
JSValue internalValue() const;
- void setInternalValue(JSGlobalData&, JSValue);
+ void setInternalValue(VM&, JSValue);
- static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype)
+ static Structure* createStructure(VM& vm, JSGlobalObject* globalObject, JSValue prototype)
{
- return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), &s_info);
+ return Structure::create(vm, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), &s_info);
}
static ptrdiff_t internalValueOffset() { return OBJECT_OFFSETOF(JSWrapperObject, m_internalValue); }
@@ -57,7 +57,7 @@
}
protected:
- explicit JSWrapperObject(JSGlobalData&, Structure*);
+ explicit JSWrapperObject(VM&, Structure*);
static const unsigned StructureFlags = OverridesVisitChildren | Base::StructureFlags;
static void visitChildren(JSCell*, SlotVisitor&);
@@ -66,8 +66,8 @@
WriteBarrier<Unknown> m_internalValue;
};
- inline JSWrapperObject::JSWrapperObject(JSGlobalData& globalData, Structure* structure)
- : JSDestructibleObject(globalData, structure)
+ inline JSWrapperObject::JSWrapperObject(VM& vm, Structure* structure)
+ : JSDestructibleObject(vm, structure)
{
}
@@ -76,11 +76,11 @@
return m_internalValue.get();
}
- inline void JSWrapperObject::setInternalValue(JSGlobalData& globalData, JSValue value)
+ inline void JSWrapperObject::setInternalValue(VM& vm, JSValue value)
{
ASSERT(value);
ASSERT(!value.isObject());
- m_internalValue.set(globalData, this, value);
+ m_internalValue.set(vm, this, value);
}
} // namespace JSC
diff --git a/Source/JavaScriptCore/runtime/LiteralParser.cpp b/Source/JavaScriptCore/runtime/LiteralParser.cpp
index 47f8020..f594518 100644
--- a/Source/JavaScriptCore/runtime/LiteralParser.cpp
+++ b/Source/JavaScriptCore/runtime/LiteralParser.cpp
@@ -57,20 +57,20 @@
do {
Vector<JSONPPathEntry> path;
// Unguarded next to start off the lexer
- Identifier name = Identifier(&m_exec->globalData(), m_lexer.currentToken().start, m_lexer.currentToken().end - m_lexer.currentToken().start);
+ Identifier name = Identifier(&m_exec->vm(), m_lexer.currentToken().start, m_lexer.currentToken().end - m_lexer.currentToken().start);
JSONPPathEntry entry;
- if (name == m_exec->globalData().propertyNames->varKeyword) {
+ if (name == m_exec->vm().propertyNames->varKeyword) {
if (m_lexer.next() != TokIdentifier)
return false;
entry.m_type = JSONPPathEntryTypeDeclare;
- entry.m_pathEntryName = Identifier(&m_exec->globalData(), m_lexer.currentToken().start, m_lexer.currentToken().end - m_lexer.currentToken().start);
+ entry.m_pathEntryName = Identifier(&m_exec->vm(), m_lexer.currentToken().start, m_lexer.currentToken().end - m_lexer.currentToken().start);
path.append(entry);
} else {
entry.m_type = JSONPPathEntryTypeDot;
- entry.m_pathEntryName = Identifier(&m_exec->globalData(), m_lexer.currentToken().start, m_lexer.currentToken().end - m_lexer.currentToken().start);
+ entry.m_pathEntryName = Identifier(&m_exec->vm(), m_lexer.currentToken().start, m_lexer.currentToken().end - m_lexer.currentToken().start);
path.append(entry);
}
- if (m_exec->globalData().keywords->isKeyword(entry.m_pathEntryName))
+ if (m_exec->vm().keywords->isKeyword(entry.m_pathEntryName))
return false;
TokenType tokenType = m_lexer.next();
if (entry.m_type == JSONPPathEntryTypeDeclare && tokenType != TokAssign)
@@ -94,7 +94,7 @@
entry.m_type = JSONPPathEntryTypeDot;
if (m_lexer.next() != TokIdentifier)
return false;
- entry.m_pathEntryName = Identifier(&m_exec->globalData(), m_lexer.currentToken().start, m_lexer.currentToken().end - m_lexer.currentToken().start);
+ entry.m_pathEntryName = Identifier(&m_exec->vm(), m_lexer.currentToken().start, m_lexer.currentToken().end - m_lexer.currentToken().start);
break;
}
case TokLParen: {
@@ -113,7 +113,7 @@
startJSON:
m_lexer.next();
results.append(JSONPData());
- results.last().m_value.set(m_exec->globalData(), parse(StartParseExpression));
+ results.last().m_value.set(m_exec->vm(), parse(StartParseExpression));
if (!results.last().m_value)
return false;
results.last().m_path.swap(path);
@@ -133,19 +133,19 @@
ALWAYS_INLINE const Identifier LiteralParser<CharType>::makeIdentifier(const LChar* characters, size_t length)
{
if (!length)
- return m_exec->globalData().propertyNames->emptyIdentifier;
+ return m_exec->vm().propertyNames->emptyIdentifier;
if (characters[0] >= MaximumCachableCharacter)
- return Identifier(&m_exec->globalData(), characters, length);
+ return Identifier(&m_exec->vm(), characters, length);
if (length == 1) {
if (!m_shortIdentifiers[characters[0]].isNull())
return m_shortIdentifiers[characters[0]];
- m_shortIdentifiers[characters[0]] = Identifier(&m_exec->globalData(), characters, length);
+ m_shortIdentifiers[characters[0]] = Identifier(&m_exec->vm(), characters, length);
return m_shortIdentifiers[characters[0]];
}
if (!m_recentIdentifiers[characters[0]].isNull() && Identifier::equal(m_recentIdentifiers[characters[0]].impl(), characters, length))
return m_recentIdentifiers[characters[0]];
- m_recentIdentifiers[characters[0]] = Identifier(&m_exec->globalData(), characters, length);
+ m_recentIdentifiers[characters[0]] = Identifier(&m_exec->vm(), characters, length);
return m_recentIdentifiers[characters[0]];
}
@@ -153,19 +153,19 @@
ALWAYS_INLINE const Identifier LiteralParser<CharType>::makeIdentifier(const UChar* characters, size_t length)
{
if (!length)
- return m_exec->globalData().propertyNames->emptyIdentifier;
+ return m_exec->vm().propertyNames->emptyIdentifier;
if (characters[0] >= MaximumCachableCharacter)
- return Identifier(&m_exec->globalData(), characters, length);
+ return Identifier(&m_exec->vm(), characters, length);
if (length == 1) {
if (!m_shortIdentifiers[characters[0]].isNull())
return m_shortIdentifiers[characters[0]];
- m_shortIdentifiers[characters[0]] = Identifier(&m_exec->globalData(), characters, length);
+ m_shortIdentifiers[characters[0]] = Identifier(&m_exec->vm(), characters, length);
return m_shortIdentifiers[characters[0]];
}
if (!m_recentIdentifiers[characters[0]].isNull() && Identifier::equal(m_recentIdentifiers[characters[0]].impl(), characters, length))
return m_recentIdentifiers[characters[0]];
- m_recentIdentifiers[characters[0]] = Identifier(&m_exec->globalData(), characters, length);
+ m_recentIdentifiers[characters[0]] = Identifier(&m_exec->vm(), characters, length);
return m_recentIdentifiers[characters[0]];
}
@@ -653,7 +653,7 @@
if (i != PropertyName::NotAnIndex)
object->putDirectIndex(m_exec, i, lastValue);
else
- object->putDirect(m_exec->globalData(), ident, lastValue);
+ object->putDirect(m_exec->vm(), ident, lastValue);
identifierStack.removeLast();
if (m_lexer.currentToken().type == TokComma)
goto doParseObjectStartExpression;
diff --git a/Source/JavaScriptCore/runtime/Lookup.cpp b/Source/JavaScriptCore/runtime/Lookup.cpp
index 546668b..030aef5 100644
--- a/Source/JavaScriptCore/runtime/Lookup.cpp
+++ b/Source/JavaScriptCore/runtime/Lookup.cpp
@@ -26,7 +26,7 @@
namespace JSC {
-void HashTable::createTable(JSGlobalData* globalData) const
+void HashTable::createTable(VM* vm) const
{
ASSERT(!table);
int linkIndex = compactHashSizeMask + 1;
@@ -34,7 +34,7 @@
for (int i = 0; i < compactSize; ++i)
entries[i].setKey(0);
for (int i = 0; values[i].key; ++i) {
- StringImpl* identifier = Identifier::add(globalData, values[i].key).leakRef();
+ StringImpl* identifier = Identifier::add(vm, values[i].key).leakRef();
int hashIndex = identifier->existingHash() & compactHashSizeMask;
HashEntry* entry = &entries[hashIndex];
@@ -69,7 +69,7 @@
{
ASSERT(thisObj->globalObject());
ASSERT(entry->attributes() & Function);
- PropertyOffset offset = thisObj->getDirectOffset(exec->globalData(), propertyName);
+ PropertyOffset offset = thisObj->getDirectOffset(exec->vm(), propertyName);
if (!isValidOffset(offset)) {
// If a property is ever deleted from an object with a static table, then we reify
@@ -80,7 +80,7 @@
thisObj->putDirectNativeFunction(
exec, thisObj->globalObject(), propertyName, entry->functionLength(),
entry->function(), entry->intrinsic(), entry->attributes());
- offset = thisObj->getDirectOffset(exec->globalData(), propertyName);
+ offset = thisObj->getDirectOffset(exec->vm(), propertyName);
ASSERT(isValidOffset(offset));
}
diff --git a/Source/JavaScriptCore/runtime/Lookup.h b/Source/JavaScriptCore/runtime/Lookup.h
index c062e30..8d39b9f 100644
--- a/Source/JavaScriptCore/runtime/Lookup.h
+++ b/Source/JavaScriptCore/runtime/Lookup.h
@@ -121,24 +121,24 @@
return result;
}
- ALWAYS_INLINE void initializeIfNeeded(JSGlobalData* globalData) const
+ ALWAYS_INLINE void initializeIfNeeded(VM* vm) const
{
if (!table)
- createTable(globalData);
+ createTable(vm);
}
ALWAYS_INLINE void initializeIfNeeded(ExecState* exec) const
{
if (!table)
- createTable(&exec->globalData());
+ createTable(&exec->vm());
}
JS_EXPORT_PRIVATE void deleteTable() const;
// Find an entry in the table, and return the entry.
- ALWAYS_INLINE const HashEntry* entry(JSGlobalData* globalData, PropertyName identifier) const
+ ALWAYS_INLINE const HashEntry* entry(VM* vm, PropertyName identifier) const
{
- initializeIfNeeded(globalData);
+ initializeIfNeeded(vm);
return entry(identifier);
}
@@ -194,14 +194,14 @@
int m_position;
};
- ConstIterator begin(JSGlobalData& globalData) const
+ ConstIterator begin(VM& vm) const
{
- initializeIfNeeded(&globalData);
+ initializeIfNeeded(&vm);
return ConstIterator(this, 0);
}
- ConstIterator end(JSGlobalData& globalData) const
+ ConstIterator end(VM& vm) const
{
- initializeIfNeeded(&globalData);
+ initializeIfNeeded(&vm);
return ConstIterator(this, compactSize);
}
@@ -229,7 +229,7 @@
}
// Convert the hash table keys to identifiers.
- JS_EXPORT_PRIVATE void createTable(JSGlobalData*) const;
+ JS_EXPORT_PRIVATE void createTable(VM*) const;
};
JS_EXPORT_PRIVATE bool setUpStaticFunctionSlot(ExecState*, const HashEntry*, JSObject* thisObject, PropertyName, PropertySlot&);
@@ -368,7 +368,7 @@
// If this is a function put it as an override property.
if (entry->attributes() & Function)
- thisObj->putDirect(exec->globalData(), propertyName, value);
+ thisObj->putDirect(exec->vm(), propertyName, value);
else if (!(entry->attributes() & ReadOnly))
entry->propertyPutter()(exec, thisObj, value);
else if (shouldThrow)
diff --git a/Source/JavaScriptCore/runtime/MathObject.cpp b/Source/JavaScriptCore/runtime/MathObject.cpp
index bf0edff..6e467dc 100644
--- a/Source/JavaScriptCore/runtime/MathObject.cpp
+++ b/Source/JavaScriptCore/runtime/MathObject.cpp
@@ -85,23 +85,23 @@
*/
MathObject::MathObject(JSGlobalObject* globalObject, Structure* structure)
- : JSNonFinalObject(globalObject->globalData(), structure)
+ : JSNonFinalObject(globalObject->vm(), structure)
{
}
void MathObject::finishCreation(ExecState* exec, JSGlobalObject* globalObject)
{
- Base::finishCreation(globalObject->globalData());
+ Base::finishCreation(globalObject->vm());
ASSERT(inherits(&s_info));
- putDirectWithoutTransition(exec->globalData(), Identifier(exec, "E"), jsNumber(exp(1.0)), DontDelete | DontEnum | ReadOnly);
- putDirectWithoutTransition(exec->globalData(), Identifier(exec, "LN2"), jsNumber(log(2.0)), DontDelete | DontEnum | ReadOnly);
- putDirectWithoutTransition(exec->globalData(), Identifier(exec, "LN10"), jsNumber(log(10.0)), DontDelete | DontEnum | ReadOnly);
- putDirectWithoutTransition(exec->globalData(), Identifier(exec, "LOG2E"), jsNumber(1.0 / log(2.0)), DontDelete | DontEnum | ReadOnly);
- putDirectWithoutTransition(exec->globalData(), Identifier(exec, "LOG10E"), jsNumber(0.4342944819032518), DontDelete | DontEnum | ReadOnly); // See ECMA-262 15.8.1.5
- putDirectWithoutTransition(exec->globalData(), Identifier(exec, "PI"), jsNumber(piDouble), DontDelete | DontEnum | ReadOnly);
- putDirectWithoutTransition(exec->globalData(), Identifier(exec, "SQRT1_2"), jsNumber(sqrt(0.5)), DontDelete | DontEnum | ReadOnly);
- putDirectWithoutTransition(exec->globalData(), Identifier(exec, "SQRT2"), jsNumber(sqrt(2.0)), DontDelete | DontEnum | ReadOnly);
+ putDirectWithoutTransition(exec->vm(), Identifier(exec, "E"), jsNumber(exp(1.0)), DontDelete | DontEnum | ReadOnly);
+ putDirectWithoutTransition(exec->vm(), Identifier(exec, "LN2"), jsNumber(log(2.0)), DontDelete | DontEnum | ReadOnly);
+ putDirectWithoutTransition(exec->vm(), Identifier(exec, "LN10"), jsNumber(log(10.0)), DontDelete | DontEnum | ReadOnly);
+ putDirectWithoutTransition(exec->vm(), Identifier(exec, "LOG2E"), jsNumber(1.0 / log(2.0)), DontDelete | DontEnum | ReadOnly);
+ putDirectWithoutTransition(exec->vm(), Identifier(exec, "LOG10E"), jsNumber(0.4342944819032518), DontDelete | DontEnum | ReadOnly); // See ECMA-262 15.8.1.5
+ putDirectWithoutTransition(exec->vm(), Identifier(exec, "PI"), jsNumber(piDouble), DontDelete | DontEnum | ReadOnly);
+ putDirectWithoutTransition(exec->vm(), Identifier(exec, "SQRT1_2"), jsNumber(sqrt(0.5)), DontDelete | DontEnum | ReadOnly);
+ putDirectWithoutTransition(exec->vm(), Identifier(exec, "SQRT2"), jsNumber(sqrt(2.0)), DontDelete | DontEnum | ReadOnly);
}
bool MathObject::getOwnPropertySlot(JSCell* cell, ExecState* exec, PropertyName propertyName, PropertySlot &slot)
@@ -265,7 +265,7 @@
EncodedJSValue JSC_HOST_CALL mathProtoFuncSin(ExecState* exec)
{
- return JSValue::encode(exec->globalData().cachedSin(exec->argument(0).toNumber(exec)));
+ return JSValue::encode(exec->vm().cachedSin(exec->argument(0).toNumber(exec)));
}
EncodedJSValue JSC_HOST_CALL mathProtoFuncSqrt(ExecState* exec)
diff --git a/Source/JavaScriptCore/runtime/MathObject.h b/Source/JavaScriptCore/runtime/MathObject.h
index f4082f0..190614b 100644
--- a/Source/JavaScriptCore/runtime/MathObject.h
+++ b/Source/JavaScriptCore/runtime/MathObject.h
@@ -43,9 +43,9 @@
static const ClassInfo s_info;
- static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype)
+ static Structure* createStructure(VM& vm, JSGlobalObject* globalObject, JSValue prototype)
{
- return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), &s_info);
+ return Structure::create(vm, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), &s_info);
}
protected:
diff --git a/Source/JavaScriptCore/runtime/MemoryStatistics.cpp b/Source/JavaScriptCore/runtime/MemoryStatistics.cpp
index 0f8efc6..5459ff3 100644
--- a/Source/JavaScriptCore/runtime/MemoryStatistics.cpp
+++ b/Source/JavaScriptCore/runtime/MemoryStatistics.cpp
@@ -27,7 +27,7 @@
#include "MemoryStatistics.h"
#include "ExecutableAllocator.h"
-#include "JSGlobalData.h"
+#include "VM.h"
#include "JSStack.h"
namespace JSC {
diff --git a/Source/JavaScriptCore/runtime/MemoryStatistics.h b/Source/JavaScriptCore/runtime/MemoryStatistics.h
index 9a86df2..79cec9c 100644
--- a/Source/JavaScriptCore/runtime/MemoryStatistics.h
+++ b/Source/JavaScriptCore/runtime/MemoryStatistics.h
@@ -28,7 +28,7 @@
#include "Heap.h"
-class JSGlobalData;
+class VM;
namespace JSC {
diff --git a/Source/JavaScriptCore/runtime/NameConstructor.cpp b/Source/JavaScriptCore/runtime/NameConstructor.cpp
index 387fcc1..e6f8569 100644
--- a/Source/JavaScriptCore/runtime/NameConstructor.cpp
+++ b/Source/JavaScriptCore/runtime/NameConstructor.cpp
@@ -43,15 +43,15 @@
void NameConstructor::finishCreation(ExecState* exec, NamePrototype* prototype)
{
- Base::finishCreation(exec->globalData(), prototype->classInfo()->className);
- putDirectWithoutTransition(exec->globalData(), exec->propertyNames().prototype, prototype, DontEnum | DontDelete | ReadOnly);
- putDirectWithoutTransition(exec->globalData(), exec->propertyNames().length, jsNumber(1), DontDelete | ReadOnly | DontEnum);
+ Base::finishCreation(exec->vm(), prototype->classInfo()->className);
+ putDirectWithoutTransition(exec->vm(), exec->propertyNames().prototype, prototype, DontEnum | DontDelete | ReadOnly);
+ putDirectWithoutTransition(exec->vm(), exec->propertyNames().length, jsNumber(1), DontDelete | ReadOnly | DontEnum);
}
static EncodedJSValue JSC_HOST_CALL constructPrivateName(ExecState* exec)
{
JSValue publicName = exec->argumentCount() ? exec->argument(0) : jsUndefined();
- return JSValue::encode(NameInstance::create(exec->globalData(), exec->lexicalGlobalObject()->privateNameStructure(), publicName.toString(exec)));
+ return JSValue::encode(NameInstance::create(exec->vm(), exec->lexicalGlobalObject()->privateNameStructure(), publicName.toString(exec)));
}
ConstructType NameConstructor::getConstructData(JSCell*, ConstructData& constructData)
diff --git a/Source/JavaScriptCore/runtime/NameConstructor.h b/Source/JavaScriptCore/runtime/NameConstructor.h
index 16c5eef..b7a52e4 100644
--- a/Source/JavaScriptCore/runtime/NameConstructor.h
+++ b/Source/JavaScriptCore/runtime/NameConstructor.h
@@ -46,9 +46,9 @@
static const ClassInfo s_info;
- static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype)
+ static Structure* createStructure(VM& vm, JSGlobalObject* globalObject, JSValue prototype)
{
- return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), &s_info);
+ return Structure::create(vm, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), &s_info);
}
protected:
diff --git a/Source/JavaScriptCore/runtime/NameInstance.cpp b/Source/JavaScriptCore/runtime/NameInstance.cpp
index 9d79ac2..dbbf0e2 100644
--- a/Source/JavaScriptCore/runtime/NameInstance.cpp
+++ b/Source/JavaScriptCore/runtime/NameInstance.cpp
@@ -33,10 +33,10 @@
const ClassInfo NameInstance::s_info = { "Name", &Base::s_info, 0, 0, CREATE_METHOD_TABLE(NameInstance) };
-NameInstance::NameInstance(JSGlobalData& globalData, Structure* structure, JSString* nameString)
- : Base(globalData, structure)
+NameInstance::NameInstance(VM& vm, Structure* structure, JSString* nameString)
+ : Base(vm, structure)
{
- m_nameString.set(globalData, this, nameString);
+ m_nameString.set(vm, this, nameString);
}
void NameInstance::destroy(JSCell* cell)
diff --git a/Source/JavaScriptCore/runtime/NameInstance.h b/Source/JavaScriptCore/runtime/NameInstance.h
index 129e7c4..e5aa79d 100644
--- a/Source/JavaScriptCore/runtime/NameInstance.h
+++ b/Source/JavaScriptCore/runtime/NameInstance.h
@@ -37,15 +37,15 @@
static const ClassInfo s_info;
- static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype)
+ static Structure* createStructure(VM& vm, JSGlobalObject* globalObject, JSValue prototype)
{
- return Structure::create(globalData, globalObject, prototype, TypeInfo(NameInstanceType, StructureFlags), &s_info);
+ return Structure::create(vm, globalObject, prototype, TypeInfo(NameInstanceType, StructureFlags), &s_info);
}
- static NameInstance* create(JSGlobalData& globalData, Structure* structure, JSString* nameString)
+ static NameInstance* create(VM& vm, Structure* structure, JSString* nameString)
{
- NameInstance* name = new (NotNull, allocateCell<NameInstance>(globalData.heap)) NameInstance(globalData, structure, nameString);
- name->finishCreation(globalData);
+ NameInstance* name = new (NotNull, allocateCell<NameInstance>(vm.heap)) NameInstance(vm, structure, nameString);
+ name->finishCreation(vm);
return name;
}
@@ -55,11 +55,11 @@
protected:
static void destroy(JSCell*);
- NameInstance(JSGlobalData&, Structure*, JSString*);
+ NameInstance(VM&, Structure*, JSString*);
- void finishCreation(JSGlobalData& globalData)
+ void finishCreation(VM& vm)
{
- Base::finishCreation(globalData);
+ Base::finishCreation(vm);
ASSERT(inherits(&s_info));
}
diff --git a/Source/JavaScriptCore/runtime/NamePrototype.cpp b/Source/JavaScriptCore/runtime/NamePrototype.cpp
index 5ebfef1..a3b55fe 100644
--- a/Source/JavaScriptCore/runtime/NamePrototype.cpp
+++ b/Source/JavaScriptCore/runtime/NamePrototype.cpp
@@ -48,13 +48,13 @@
*/
NamePrototype::NamePrototype(ExecState* exec, Structure* structure)
- : Base(exec->globalData(), structure, jsEmptyString(exec))
+ : Base(exec->vm(), structure, jsEmptyString(exec))
{
}
void NamePrototype::finishCreation(ExecState* exec)
{
- Base::finishCreation(exec->globalData());
+ Base::finishCreation(exec->vm());
ASSERT(inherits(&s_info));
}
diff --git a/Source/JavaScriptCore/runtime/NamePrototype.h b/Source/JavaScriptCore/runtime/NamePrototype.h
index 5d86dec..a3abf33 100644
--- a/Source/JavaScriptCore/runtime/NamePrototype.h
+++ b/Source/JavaScriptCore/runtime/NamePrototype.h
@@ -43,9 +43,9 @@
static const ClassInfo s_info;
- static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype)
+ static Structure* createStructure(VM& vm, JSGlobalObject* globalObject, JSValue prototype)
{
- return Structure::create(globalData, globalObject, prototype, TypeInfo(NameInstanceType, StructureFlags), &s_info);
+ return Structure::create(vm, globalObject, prototype, TypeInfo(NameInstanceType, StructureFlags), &s_info);
}
protected:
diff --git a/Source/JavaScriptCore/runtime/NativeErrorConstructor.h b/Source/JavaScriptCore/runtime/NativeErrorConstructor.h
index 8db2370..0a6ef6e 100644
--- a/Source/JavaScriptCore/runtime/NativeErrorConstructor.h
+++ b/Source/JavaScriptCore/runtime/NativeErrorConstructor.h
@@ -43,9 +43,9 @@
static const ClassInfo s_info;
- static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype)
+ static Structure* createStructure(VM& vm, JSGlobalObject* globalObject, JSValue prototype)
{
- return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), &s_info);
+ return Structure::create(vm, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), &s_info);
}
Structure* errorStructure() { return m_errorStructure.get(); }
@@ -53,14 +53,14 @@
protected:
void finishCreation(ExecState* exec, JSGlobalObject* globalObject, Structure* prototypeStructure, const String& name)
{
- Base::finishCreation(exec->globalData(), name);
+ Base::finishCreation(exec->vm(), name);
ASSERT(inherits(&s_info));
NativeErrorPrototype* prototype = NativeErrorPrototype::create(exec, globalObject, prototypeStructure, name, this);
- putDirect(exec->globalData(), exec->propertyNames().length, jsNumber(1), DontDelete | ReadOnly | DontEnum); // ECMA 15.11.7.5
- putDirect(exec->globalData(), exec->propertyNames().prototype, prototype, DontDelete | ReadOnly | DontEnum);
- m_errorStructure.set(exec->globalData(), this, ErrorInstance::createStructure(exec->globalData(), globalObject, prototype));
+ putDirect(exec->vm(), exec->propertyNames().length, jsNumber(1), DontDelete | ReadOnly | DontEnum); // ECMA 15.11.7.5
+ putDirect(exec->vm(), exec->propertyNames().prototype, prototype, DontDelete | ReadOnly | DontEnum);
+ m_errorStructure.set(exec->vm(), this, ErrorInstance::createStructure(exec->vm(), globalObject, prototype));
ASSERT(m_errorStructure);
ASSERT(m_errorStructure->isObject());
}
diff --git a/Source/JavaScriptCore/runtime/NativeErrorPrototype.cpp b/Source/JavaScriptCore/runtime/NativeErrorPrototype.cpp
index 47eacf5..c33ac3d 100644
--- a/Source/JavaScriptCore/runtime/NativeErrorPrototype.cpp
+++ b/Source/JavaScriptCore/runtime/NativeErrorPrototype.cpp
@@ -36,9 +36,9 @@
void NativeErrorPrototype::finishCreation(ExecState* exec, JSGlobalObject* globalObject, const WTF::String& nameAndMessage, NativeErrorConstructor* constructor)
{
Base::finishCreation(exec, globalObject);
- putDirect(exec->globalData(), exec->propertyNames().name, jsString(exec, nameAndMessage), DontEnum);
- putDirect(exec->globalData(), exec->propertyNames().message, jsEmptyString(exec), DontEnum);
- putDirect(exec->globalData(), exec->propertyNames().constructor, constructor, DontEnum);
+ putDirect(exec->vm(), exec->propertyNames().name, jsString(exec, nameAndMessage), DontEnum);
+ putDirect(exec->vm(), exec->propertyNames().message, jsEmptyString(exec), DontEnum);
+ putDirect(exec->vm(), exec->propertyNames().constructor, constructor, DontEnum);
}
} // namespace JSC
diff --git a/Source/JavaScriptCore/runtime/NumberConstructor.cpp b/Source/JavaScriptCore/runtime/NumberConstructor.cpp
index 090a345..14e149d 100644
--- a/Source/JavaScriptCore/runtime/NumberConstructor.cpp
+++ b/Source/JavaScriptCore/runtime/NumberConstructor.cpp
@@ -62,14 +62,14 @@
void NumberConstructor::finishCreation(ExecState* exec, NumberPrototype* numberPrototype)
{
- Base::finishCreation(exec->globalData(), numberPrototype->s_info.className);
+ Base::finishCreation(exec->vm(), numberPrototype->s_info.className);
ASSERT(inherits(&s_info));
// Number.Prototype
- putDirectWithoutTransition(exec->globalData(), exec->propertyNames().prototype, numberPrototype, DontEnum | DontDelete | ReadOnly);
+ putDirectWithoutTransition(exec->vm(), exec->propertyNames().prototype, numberPrototype, DontEnum | DontDelete | ReadOnly);
// no. of arguments for constructor
- putDirectWithoutTransition(exec->globalData(), exec->propertyNames().length, jsNumber(1), ReadOnly | DontEnum | DontDelete);
+ putDirectWithoutTransition(exec->vm(), exec->propertyNames().length, jsNumber(1), ReadOnly | DontEnum | DontDelete);
}
bool NumberConstructor::getOwnPropertySlot(JSCell* cell, ExecState* exec, PropertyName propertyName, PropertySlot& slot)
@@ -115,9 +115,9 @@
// ECMA 15.7.1
static EncodedJSValue JSC_HOST_CALL constructWithNumberConstructor(ExecState* exec)
{
- NumberObject* object = NumberObject::create(exec->globalData(), asInternalFunction(exec->callee())->globalObject()->numberObjectStructure());
+ NumberObject* object = NumberObject::create(exec->vm(), asInternalFunction(exec->callee())->globalObject()->numberObjectStructure());
double n = exec->argumentCount() ? exec->argument(0).toNumber(exec) : 0;
- object->setInternalValue(exec->globalData(), jsNumber(n));
+ object->setInternalValue(exec->vm(), jsNumber(n));
return JSValue::encode(object);
}
diff --git a/Source/JavaScriptCore/runtime/NumberConstructor.h b/Source/JavaScriptCore/runtime/NumberConstructor.h
index 75f55f8..45883ed 100644
--- a/Source/JavaScriptCore/runtime/NumberConstructor.h
+++ b/Source/JavaScriptCore/runtime/NumberConstructor.h
@@ -46,9 +46,9 @@
static const ClassInfo s_info;
- static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue proto)
+ static Structure* createStructure(VM& vm, JSGlobalObject* globalObject, JSValue proto)
{
- return Structure::create(globalData, globalObject, proto, TypeInfo(ObjectType, StructureFlags), &s_info);
+ return Structure::create(vm, globalObject, proto, TypeInfo(ObjectType, StructureFlags), &s_info);
}
enum { NaNValue, NegInfinity, PosInfinity, MaxValue, MinValue };
diff --git a/Source/JavaScriptCore/runtime/NumberObject.cpp b/Source/JavaScriptCore/runtime/NumberObject.cpp
index 83bf16c..05349ef 100644
--- a/Source/JavaScriptCore/runtime/NumberObject.cpp
+++ b/Source/JavaScriptCore/runtime/NumberObject.cpp
@@ -32,21 +32,21 @@
const ClassInfo NumberObject::s_info = { "Number", &JSWrapperObject::s_info, 0, 0, CREATE_METHOD_TABLE(NumberObject) };
-NumberObject::NumberObject(JSGlobalData& globalData, Structure* structure)
- : JSWrapperObject(globalData, structure)
+NumberObject::NumberObject(VM& vm, Structure* structure)
+ : JSWrapperObject(vm, structure)
{
}
-void NumberObject::finishCreation(JSGlobalData& globalData)
+void NumberObject::finishCreation(VM& vm)
{
- Base::finishCreation(globalData);
+ Base::finishCreation(vm);
ASSERT(inherits(&s_info));
}
NumberObject* constructNumber(ExecState* exec, JSGlobalObject* globalObject, JSValue number)
{
- NumberObject* object = NumberObject::create(exec->globalData(), globalObject->numberObjectStructure());
- object->setInternalValue(exec->globalData(), number);
+ NumberObject* object = NumberObject::create(exec->vm(), globalObject->numberObjectStructure());
+ object->setInternalValue(exec->vm(), number);
return object;
}
diff --git a/Source/JavaScriptCore/runtime/NumberObject.h b/Source/JavaScriptCore/runtime/NumberObject.h
index ed84207..1c7c898 100644
--- a/Source/JavaScriptCore/runtime/NumberObject.h
+++ b/Source/JavaScriptCore/runtime/NumberObject.h
@@ -27,24 +27,24 @@
class NumberObject : public JSWrapperObject {
protected:
- NumberObject(JSGlobalData&, Structure*);
- void finishCreation(JSGlobalData&);
+ NumberObject(VM&, Structure*);
+ void finishCreation(VM&);
public:
typedef JSWrapperObject Base;
- static NumberObject* create(JSGlobalData& globalData, Structure* structure)
+ static NumberObject* create(VM& vm, Structure* structure)
{
- NumberObject* number = new (NotNull, allocateCell<NumberObject>(globalData.heap)) NumberObject(globalData, structure);
- number->finishCreation(globalData);
+ NumberObject* number = new (NotNull, allocateCell<NumberObject>(vm.heap)) NumberObject(vm, structure);
+ number->finishCreation(vm);
return number;
}
static JS_EXPORTDATA const ClassInfo s_info;
- static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype)
+ static Structure* createStructure(VM& vm, JSGlobalObject* globalObject, JSValue prototype)
{
- return Structure::create(globalData, globalObject, prototype, TypeInfo(NumberObjectType, StructureFlags), &s_info);
+ return Structure::create(vm, globalObject, prototype, TypeInfo(NumberObjectType, StructureFlags), &s_info);
}
};
diff --git a/Source/JavaScriptCore/runtime/NumberPrototype.cpp b/Source/JavaScriptCore/runtime/NumberPrototype.cpp
index 1f02270..54a9473 100644
--- a/Source/JavaScriptCore/runtime/NumberPrototype.cpp
+++ b/Source/JavaScriptCore/runtime/NumberPrototype.cpp
@@ -71,14 +71,14 @@
ASSERT_HAS_TRIVIAL_DESTRUCTOR(NumberPrototype);
NumberPrototype::NumberPrototype(ExecState* exec, Structure* structure)
- : NumberObject(exec->globalData(), structure)
+ : NumberObject(exec->vm(), structure)
{
}
void NumberPrototype::finishCreation(ExecState* exec, JSGlobalObject*)
{
- Base::finishCreation(exec->globalData());
- setInternalValue(exec->globalData(), jsNumber(0));
+ Base::finishCreation(exec->vm());
+ setInternalValue(exec->vm(), jsNumber(0));
ASSERT(inherits(&s_info));
}
@@ -475,13 +475,13 @@
if (static_cast<unsigned>(value) < static_cast<unsigned>(radix)) {
ASSERT(value <= 36);
ASSERT(value >= 0);
- JSGlobalData* globalData = &exec->globalData();
- return JSValue::encode(globalData->smallStrings.singleCharacterString(globalData, radixDigits[value]));
+ VM* vm = &exec->vm();
+ return JSValue::encode(vm->smallStrings.singleCharacterString(vm, radixDigits[value]));
}
if (radix == 10) {
- JSGlobalData* globalData = &exec->globalData();
- return JSValue::encode(jsString(globalData, globalData->numericStrings.add(value)));
+ VM* vm = &exec->vm();
+ return JSValue::encode(jsString(vm, vm->numericStrings.add(value)));
}
return JSValue::encode(jsString(exec, toStringWithRadix(value, radix)));
@@ -503,8 +503,8 @@
return integerValueToString(exec, radix, integerValue);
if (radix == 10) {
- JSGlobalData* globalData = &exec->globalData();
- return JSValue::encode(jsString(globalData, globalData->numericStrings.add(doubleValue)));
+ VM* vm = &exec->vm();
+ return JSValue::encode(jsString(vm, vm->numericStrings.add(doubleValue)));
}
if (!std::isfinite(doubleValue))
diff --git a/Source/JavaScriptCore/runtime/NumberPrototype.h b/Source/JavaScriptCore/runtime/NumberPrototype.h
index d7caecf..b51251c 100644
--- a/Source/JavaScriptCore/runtime/NumberPrototype.h
+++ b/Source/JavaScriptCore/runtime/NumberPrototype.h
@@ -38,9 +38,9 @@
static const ClassInfo s_info;
- static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype)
+ static Structure* createStructure(VM& vm, JSGlobalObject* globalObject, JSValue prototype)
{
- return Structure::create(globalData, globalObject, prototype, TypeInfo(NumberObjectType, StructureFlags), &s_info);
+ return Structure::create(vm, globalObject, prototype, TypeInfo(NumberObjectType, StructureFlags), &s_info);
}
protected:
diff --git a/Source/JavaScriptCore/runtime/ObjectConstructor.cpp b/Source/JavaScriptCore/runtime/ObjectConstructor.cpp
index 8bd1e50..d72cbe8 100644
--- a/Source/JavaScriptCore/runtime/ObjectConstructor.cpp
+++ b/Source/JavaScriptCore/runtime/ObjectConstructor.cpp
@@ -85,11 +85,11 @@
void ObjectConstructor::finishCreation(ExecState* exec, ObjectPrototype* objectPrototype)
{
- Base::finishCreation(exec->globalData(), Identifier(exec, "Object").string());
+ Base::finishCreation(exec->vm(), Identifier(exec, "Object").string());
// ECMA 15.2.3.1
- putDirectWithoutTransition(exec->globalData(), exec->propertyNames().prototype, objectPrototype, DontEnum | DontDelete | ReadOnly);
+ putDirectWithoutTransition(exec->vm(), exec->propertyNames().prototype, objectPrototype, DontEnum | DontDelete | ReadOnly);
// no. of arguments for constructor
- putDirectWithoutTransition(exec->globalData(), exec->propertyNames().length, jsNumber(1), ReadOnly | DontEnum | DontDelete);
+ putDirectWithoutTransition(exec->vm(), exec->propertyNames().length, jsNumber(1), ReadOnly | DontEnum | DontDelete);
}
bool ObjectConstructor::getOwnPropertySlot(JSCell* cell, ExecState* exec, PropertyName propertyName, PropertySlot &slot)
@@ -160,17 +160,17 @@
JSObject* description = constructEmptyObject(exec);
if (!descriptor.isAccessorDescriptor()) {
- description->putDirect(exec->globalData(), exec->propertyNames().value, descriptor.value() ? descriptor.value() : jsUndefined(), 0);
- description->putDirect(exec->globalData(), exec->propertyNames().writable, jsBoolean(descriptor.writable()), 0);
+ description->putDirect(exec->vm(), exec->propertyNames().value, descriptor.value() ? descriptor.value() : jsUndefined(), 0);
+ description->putDirect(exec->vm(), exec->propertyNames().writable, jsBoolean(descriptor.writable()), 0);
} else {
ASSERT(descriptor.getter());
ASSERT(descriptor.setter());
- description->putDirect(exec->globalData(), exec->propertyNames().get, descriptor.getter(), 0);
- description->putDirect(exec->globalData(), exec->propertyNames().set, descriptor.setter(), 0);
+ description->putDirect(exec->vm(), exec->propertyNames().get, descriptor.getter(), 0);
+ description->putDirect(exec->vm(), exec->propertyNames().set, descriptor.setter(), 0);
}
- description->putDirect(exec->globalData(), exec->propertyNames().enumerable, jsBoolean(descriptor.enumerable()), 0);
- description->putDirect(exec->globalData(), exec->propertyNames().configurable, jsBoolean(descriptor.configurable()), 0);
+ description->putDirect(exec->vm(), exec->propertyNames().enumerable, jsBoolean(descriptor.enumerable()), 0);
+ description->putDirect(exec->vm(), exec->propertyNames().configurable, jsBoolean(descriptor.configurable()), 0);
return JSValue::encode(description);
}
@@ -368,7 +368,7 @@
JSObject* object = asObject(obj);
if (isJSFinalObject(object)) {
- object->seal(exec->globalData());
+ object->seal(exec->vm());
return JSValue::encode(obj);
}
@@ -390,7 +390,7 @@
}
// 3. Set the [[Extensible]] internal property of O to false.
- object->preventExtensions(exec->globalData());
+ object->preventExtensions(exec->vm());
// 4. Return O.
return JSValue::encode(obj);
@@ -405,7 +405,7 @@
JSObject* object = asObject(obj);
if (isJSFinalObject(object) && !hasIndexedProperties(object->structure()->indexingType())) {
- object->freeze(exec->globalData());
+ object->freeze(exec->vm());
return JSValue::encode(obj);
}
@@ -431,7 +431,7 @@
}
// 3. Set the [[Extensible]] internal property of O to false.
- object->preventExtensions(exec->globalData());
+ object->preventExtensions(exec->vm());
// 4. Return O.
return JSValue::encode(obj);
@@ -442,7 +442,7 @@
JSValue obj = exec->argument(0);
if (!obj.isObject())
return throwVMError(exec, createTypeError(exec, ASCIILiteral("Object.preventExtensions can only be called on Objects.")));
- asObject(obj)->preventExtensions(exec->globalData());
+ asObject(obj)->preventExtensions(exec->vm());
return JSValue::encode(obj);
}
@@ -455,7 +455,7 @@
JSObject* object = asObject(obj);
if (isJSFinalObject(object))
- return JSValue::encode(jsBoolean(object->isSealed(exec->globalData())));
+ return JSValue::encode(jsBoolean(object->isSealed(exec->vm())));
// 2. For each named own property name P of O,
PropertyNameArray properties(exec);
@@ -485,7 +485,7 @@
JSObject* object = asObject(obj);
if (isJSFinalObject(object))
- return JSValue::encode(jsBoolean(object->isFrozen(exec->globalData())));
+ return JSValue::encode(jsBoolean(object->isFrozen(exec->vm())));
// 2. For each named own property name P of O,
PropertyNameArray properties(exec);
diff --git a/Source/JavaScriptCore/runtime/ObjectConstructor.h b/Source/JavaScriptCore/runtime/ObjectConstructor.h
index e8a6d14..72c895f 100644
--- a/Source/JavaScriptCore/runtime/ObjectConstructor.h
+++ b/Source/JavaScriptCore/runtime/ObjectConstructor.h
@@ -45,9 +45,9 @@
static const ClassInfo s_info;
- static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype)
+ static Structure* createStructure(VM& vm, JSGlobalObject* globalObject, JSValue prototype)
{
- return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), &s_info);
+ return Structure::create(vm, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), &s_info);
}
protected:
@@ -68,7 +68,7 @@
inline JSObject* constructEmptyObject(ExecState* exec, JSObject* prototype, unsigned inlineCapacity)
{
JSGlobalObject* globalObject = exec->lexicalGlobalObject();
- PrototypeMap& prototypeMap = globalObject->globalData().prototypeMap;
+ PrototypeMap& prototypeMap = globalObject->vm().prototypeMap;
Structure* structure = prototypeMap.emptyObjectStructureForPrototype(
prototype, inlineCapacity);
return constructEmptyObject(exec, structure);
diff --git a/Source/JavaScriptCore/runtime/ObjectPrototype.cpp b/Source/JavaScriptCore/runtime/ObjectPrototype.cpp
index ba76af8..9285d8d 100644
--- a/Source/JavaScriptCore/runtime/ObjectPrototype.cpp
+++ b/Source/JavaScriptCore/runtime/ObjectPrototype.cpp
@@ -45,17 +45,17 @@
const ClassInfo ObjectPrototype::s_info = { "Object", &JSNonFinalObject::s_info, 0, 0, CREATE_METHOD_TABLE(ObjectPrototype) };
ObjectPrototype::ObjectPrototype(ExecState* exec, Structure* stucture)
- : JSNonFinalObject(exec->globalData(), stucture)
+ : JSNonFinalObject(exec->vm(), stucture)
{
}
void ObjectPrototype::finishCreation(ExecState* exec, JSGlobalObject* globalObject)
{
- JSGlobalData& globalData = exec->globalData();
+ VM& vm = exec->vm();
- Base::finishCreation(globalData);
+ Base::finishCreation(vm);
ASSERT(inherits(&s_info));
- globalData.prototypeMap.addPrototype(this);
+ vm.prototypeMap.addPrototype(this);
JSC_NATIVE_FUNCTION("toString", objectProtoFuncToString, DontEnum, 0);
JSC_NATIVE_FUNCTION("toLocaleString", objectProtoFuncToLocaleString, DontEnum, 0);
@@ -218,7 +218,7 @@
return JSValue::encode(throwOutOfMemoryError(exec));
result = jsNontrivialString(exec, newString.release());
- thisObject->structure()->setObjectToStringValue(exec->globalData(), thisObject, result);
+ thisObject->structure()->setObjectToStringValue(exec->vm(), thisObject, result);
}
return JSValue::encode(result);
}
diff --git a/Source/JavaScriptCore/runtime/ObjectPrototype.h b/Source/JavaScriptCore/runtime/ObjectPrototype.h
index dc287ea..cf0143e 100644
--- a/Source/JavaScriptCore/runtime/ObjectPrototype.h
+++ b/Source/JavaScriptCore/runtime/ObjectPrototype.h
@@ -33,9 +33,9 @@
static const ClassInfo s_info;
- static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype)
+ static Structure* createStructure(VM& vm, JSGlobalObject* globalObject, JSValue prototype)
{
- return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), &s_info);
+ return Structure::create(vm, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), &s_info);
}
protected:
diff --git a/Source/JavaScriptCore/runtime/Operations.cpp b/Source/JavaScriptCore/runtime/Operations.cpp
index 3dccb2a..4e40f56 100644
--- a/Source/JavaScriptCore/runtime/Operations.cpp
+++ b/Source/JavaScriptCore/runtime/Operations.cpp
@@ -56,32 +56,32 @@
return jsNumber(p1.toNumber(callFrame) + p2.toNumber(callFrame));
}
-JSValue jsTypeStringForValue(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue v)
+JSValue jsTypeStringForValue(VM& vm, JSGlobalObject* globalObject, JSValue v)
{
if (v.isUndefined())
- return globalData.smallStrings.undefinedString();
+ return vm.smallStrings.undefinedString();
if (v.isBoolean())
- return globalData.smallStrings.booleanString();
+ return vm.smallStrings.booleanString();
if (v.isNumber())
- return globalData.smallStrings.numberString();
+ return vm.smallStrings.numberString();
if (v.isString())
- return globalData.smallStrings.stringString();
+ return vm.smallStrings.stringString();
if (v.isObject()) {
// Return "undefined" for objects that should be treated
// as null when doing comparisons.
if (asObject(v)->structure()->masqueradesAsUndefined(globalObject))
- return globalData.smallStrings.undefinedString();
+ return vm.smallStrings.undefinedString();
CallData callData;
JSObject* object = asObject(v);
if (object->methodTable()->getCallData(object, callData) != CallTypeNone)
- return globalData.smallStrings.functionString();
+ return vm.smallStrings.functionString();
}
- return globalData.smallStrings.objectString();
+ return vm.smallStrings.objectString();
}
JSValue jsTypeStringForValue(CallFrame* callFrame, JSValue v)
{
- return jsTypeStringForValue(callFrame->globalData(), callFrame->lexicalGlobalObject(), v);
+ return jsTypeStringForValue(callFrame->vm(), callFrame->lexicalGlobalObject(), v);
}
bool jsIsObjectType(CallFrame* callFrame, JSValue v)
diff --git a/Source/JavaScriptCore/runtime/Operations.h b/Source/JavaScriptCore/runtime/Operations.h
index f328217..14557c7 100644
--- a/Source/JavaScriptCore/runtime/Operations.h
+++ b/Source/JavaScriptCore/runtime/Operations.h
@@ -33,13 +33,13 @@
NEVER_INLINE JSValue jsAddSlowCase(CallFrame*, JSValue, JSValue);
JSValue jsTypeStringForValue(CallFrame*, JSValue);
-JSValue jsTypeStringForValue(JSGlobalData&, JSGlobalObject*, JSValue);
+JSValue jsTypeStringForValue(VM&, JSGlobalObject*, JSValue);
bool jsIsObjectType(CallFrame*, JSValue);
bool jsIsFunctionType(JSValue);
ALWAYS_INLINE JSValue jsString(ExecState* exec, JSString* s1, JSString* s2)
{
- JSGlobalData& globalData = exec->globalData();
+ VM& vm = exec->vm();
unsigned length1 = s1->length();
if (!length1)
@@ -50,35 +50,35 @@
if ((length1 + length2) < length1)
return throwOutOfMemoryError(exec);
- return JSRopeString::create(globalData, s1, s2);
+ return JSRopeString::create(vm, s1, s2);
}
ALWAYS_INLINE JSValue jsString(ExecState* exec, const String& u1, const String& u2, const String& u3)
{
- JSGlobalData* globalData = &exec->globalData();
+ VM* vm = &exec->vm();
unsigned length1 = u1.length();
unsigned length2 = u2.length();
unsigned length3 = u3.length();
if (!length1)
- return jsString(exec, jsString(globalData, u2), jsString(globalData, u3));
+ return jsString(exec, jsString(vm, u2), jsString(vm, u3));
if (!length2)
- return jsString(exec, jsString(globalData, u1), jsString(globalData, u3));
+ return jsString(exec, jsString(vm, u1), jsString(vm, u3));
if (!length3)
- return jsString(exec, jsString(globalData, u1), jsString(globalData, u2));
+ return jsString(exec, jsString(vm, u1), jsString(vm, u2));
if ((length1 + length2) < length1)
return throwOutOfMemoryError(exec);
if ((length1 + length2 + length3) < length3)
return throwOutOfMemoryError(exec);
- return JSRopeString::create(exec->globalData(), jsString(globalData, u1), jsString(globalData, u2), jsString(globalData, u3));
+ return JSRopeString::create(exec->vm(), jsString(vm, u1), jsString(vm, u2), jsString(vm, u3));
}
ALWAYS_INLINE JSValue jsString(ExecState* exec, Register* strings, unsigned count)
{
- JSGlobalData* globalData = &exec->globalData();
- JSRopeString::RopeBuilder ropeBuilder(*globalData);
+ VM* vm = &exec->vm();
+ JSRopeString::RopeBuilder ropeBuilder(*vm);
unsigned oldLength = 0;
@@ -96,8 +96,8 @@
ALWAYS_INLINE JSValue jsStringFromArguments(ExecState* exec, JSValue thisValue)
{
- JSGlobalData* globalData = &exec->globalData();
- JSRopeString::RopeBuilder ropeBuilder(*globalData);
+ VM* vm = &exec->vm();
+ JSRopeString::RopeBuilder ropeBuilder(*vm);
ropeBuilder.append(thisValue.toString(exec));
unsigned oldLength = 0;
@@ -230,9 +230,9 @@
// Since we're accessing a prototype in a loop, it's a good bet that it
// should not be treated as a dictionary.
if (cell->structure()->isDictionary()) {
- asObject(cell)->flattenDictionaryObject(callFrame->globalData());
+ asObject(cell)->flattenDictionaryObject(callFrame->vm());
if (slotBase == cell)
- slotOffset = cell->structure()->get(callFrame->globalData(), propertyName);
+ slotOffset = cell->structure()->get(callFrame->vm(), propertyName);
}
++count;
@@ -258,7 +258,7 @@
// Since we're accessing a prototype in a loop, it's a good bet that it
// should not be treated as a dictionary.
if (base->structure()->isDictionary())
- asObject(base)->flattenDictionaryObject(callFrame->globalData());
+ asObject(base)->flattenDictionaryObject(callFrame->vm());
++count;
}
diff --git a/Source/JavaScriptCore/runtime/PropertyMapHashTable.h b/Source/JavaScriptCore/runtime/PropertyMapHashTable.h
index 54e2973..9ddb699 100644
--- a/Source/JavaScriptCore/runtime/PropertyMapHashTable.h
+++ b/Source/JavaScriptCore/runtime/PropertyMapHashTable.h
@@ -77,11 +77,11 @@
unsigned attributes;
WriteBarrier<JSCell> specificValue;
- PropertyMapEntry(JSGlobalData& globalData, JSCell* owner, StringImpl* key, PropertyOffset offset, unsigned attributes, JSCell* specificValue)
+ PropertyMapEntry(VM& vm, JSCell* owner, StringImpl* key, PropertyOffset offset, unsigned attributes, JSCell* specificValue)
: key(key)
, offset(offset)
, attributes(attributes)
- , specificValue(globalData, owner, specificValue, WriteBarrier<JSCell>::MayBeNull)
+ , specificValue(vm, owner, specificValue, WriteBarrier<JSCell>::MayBeNull)
{
}
};
@@ -135,9 +135,9 @@
static JS_EXPORTDATA const ClassInfo s_info;
- static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype)
+ static Structure* createStructure(VM& vm, JSGlobalObject* globalObject, JSValue prototype)
{
- return Structure::create(globalData, globalObject, prototype, TypeInfo(CompoundType, OverridesVisitChildren), &s_info);
+ return Structure::create(vm, globalObject, prototype, TypeInfo(CompoundType, OverridesVisitChildren), &s_info);
}
static void visitChildren(JSCell*, SlotVisitor&);
@@ -155,9 +155,9 @@
typedef std::pair<ValueType*, unsigned> find_iterator;
// Constructor is passed an initial capacity, a PropertyTable to copy, or both.
- static PropertyTable* create(JSGlobalData&, unsigned initialCapacity);
- static PropertyTable* clone(JSGlobalData&, JSCell* owner, const PropertyTable&);
- static PropertyTable* clone(JSGlobalData&, JSCell* owner, unsigned initialCapacity, const PropertyTable&);
+ static PropertyTable* create(VM&, unsigned initialCapacity);
+ static PropertyTable* clone(VM&, JSCell* owner, const PropertyTable&);
+ static PropertyTable* clone(VM&, JSCell* owner, unsigned initialCapacity, const PropertyTable&);
~PropertyTable();
// Ordered iteration methods.
@@ -194,7 +194,7 @@
PropertyOffset nextOffset(PropertyOffset inlineCapacity);
// Copy this PropertyTable, ensuring the copy has at least the capacity provided.
- PropertyTable* copy(JSGlobalData&, JSCell* owner, unsigned newCapacity);
+ PropertyTable* copy(VM&, JSCell* owner, unsigned newCapacity);
#ifndef NDEBUG
size_t sizeInMemory();
@@ -202,9 +202,9 @@
#endif
private:
- PropertyTable(JSGlobalData&, unsigned initialCapacity);
- PropertyTable(JSGlobalData&, JSCell*, const PropertyTable&);
- PropertyTable(JSGlobalData&, JSCell*, unsigned initialCapacity, const PropertyTable&);
+ PropertyTable(VM&, unsigned initialCapacity);
+ PropertyTable(VM&, JSCell*, const PropertyTable&);
+ PropertyTable(VM&, JSCell*, unsigned initialCapacity, const PropertyTable&);
PropertyTable(const PropertyTable&);
// Used to insert a value known not to be in the table, and where we know capacity to be available.
@@ -453,15 +453,15 @@
return offsetForPropertyNumber(size(), inlineCapacity);
}
-inline PropertyTable* PropertyTable::copy(JSGlobalData& globalData, JSCell* owner, unsigned newCapacity)
+inline PropertyTable* PropertyTable::copy(VM& vm, JSCell* owner, unsigned newCapacity)
{
ASSERT(newCapacity >= m_keyCount);
// Fast case; if the new table will be the same m_indexSize as this one, we can memcpy it,
// save rehashing all keys.
if (sizeForCapacity(newCapacity) == m_indexSize)
- return PropertyTable::clone(globalData, owner, *this);
- return PropertyTable::clone(globalData, owner, newCapacity, *this);
+ return PropertyTable::clone(vm, owner, *this);
+ return PropertyTable::clone(vm, owner, newCapacity, *this);
}
#ifndef NDEBUG
diff --git a/Source/JavaScriptCore/runtime/PropertyNameArray.h b/Source/JavaScriptCore/runtime/PropertyNameArray.h
index 1cdac00..96f1d0a 100644
--- a/Source/JavaScriptCore/runtime/PropertyNameArray.h
+++ b/Source/JavaScriptCore/runtime/PropertyNameArray.h
@@ -52,9 +52,9 @@
// FIXME: Rename to PropertyNameArrayBuilder.
class PropertyNameArray {
public:
- PropertyNameArray(JSGlobalData* globalData)
+ PropertyNameArray(VM* vm)
: m_data(PropertyNameArrayData::create())
- , m_globalData(globalData)
+ , m_vm(vm)
, m_numCacheableSlots(0)
, m_baseObject(0)
{
@@ -62,17 +62,17 @@
PropertyNameArray(ExecState* exec)
: m_data(PropertyNameArrayData::create())
- , m_globalData(&exec->globalData())
+ , m_vm(&exec->vm())
, m_numCacheableSlots(0)
, m_baseObject(0)
{
}
- JSGlobalData* globalData() { return m_globalData; }
+ VM* vm() { return m_vm; }
void add(const Identifier& identifier) { add(identifier.impl()); }
JS_EXPORT_PRIVATE void add(StringImpl*);
- void addKnownUnique(StringImpl* identifier) { m_data->propertyNameVector().append(Identifier(m_globalData, identifier)); }
+ void addKnownUnique(StringImpl* identifier) { m_data->propertyNameVector().append(Identifier(m_vm, identifier)); }
Identifier& operator[](unsigned i) { return m_data->propertyNameVector()[i]; }
const Identifier& operator[](unsigned i) const { return m_data->propertyNameVector()[i]; }
@@ -106,7 +106,7 @@
RefPtr<PropertyNameArrayData> m_data;
IdentifierSet m_set;
- JSGlobalData* m_globalData;
+ VM* m_vm;
size_t m_numCacheableSlots;
JSObject* m_baseObject;
};
diff --git a/Source/JavaScriptCore/runtime/PropertyTable.cpp b/Source/JavaScriptCore/runtime/PropertyTable.cpp
index 99d2676..bb5ecce 100644
--- a/Source/JavaScriptCore/runtime/PropertyTable.cpp
+++ b/Source/JavaScriptCore/runtime/PropertyTable.cpp
@@ -35,29 +35,29 @@
const ClassInfo PropertyTable::s_info = { "PropertyTable", 0, 0, 0, CREATE_METHOD_TABLE(PropertyTable) };
-PropertyTable* PropertyTable::create(JSGlobalData& globalData, unsigned initialCapacity)
+PropertyTable* PropertyTable::create(VM& vm, unsigned initialCapacity)
{
- PropertyTable* table = new (NotNull, allocateCell<PropertyTable>(globalData.heap)) PropertyTable(globalData, initialCapacity);
- table->finishCreation(globalData);
+ PropertyTable* table = new (NotNull, allocateCell<PropertyTable>(vm.heap)) PropertyTable(vm, initialCapacity);
+ table->finishCreation(vm);
return table;
}
-PropertyTable* PropertyTable::clone(JSGlobalData& globalData, JSCell* owner, const PropertyTable& other)
+PropertyTable* PropertyTable::clone(VM& vm, JSCell* owner, const PropertyTable& other)
{
- PropertyTable* table = new (NotNull, allocateCell<PropertyTable>(globalData.heap)) PropertyTable(globalData, owner, other);
- table->finishCreation(globalData);
+ PropertyTable* table = new (NotNull, allocateCell<PropertyTable>(vm.heap)) PropertyTable(vm, owner, other);
+ table->finishCreation(vm);
return table;
}
-PropertyTable* PropertyTable::clone(JSGlobalData& globalData, JSCell* owner, unsigned initialCapacity, const PropertyTable& other)
+PropertyTable* PropertyTable::clone(VM& vm, JSCell* owner, unsigned initialCapacity, const PropertyTable& other)
{
- PropertyTable* table = new (NotNull, allocateCell<PropertyTable>(globalData.heap)) PropertyTable(globalData, owner, initialCapacity, other);
- table->finishCreation(globalData);
+ PropertyTable* table = new (NotNull, allocateCell<PropertyTable>(vm.heap)) PropertyTable(vm, owner, initialCapacity, other);
+ table->finishCreation(vm);
return table;
}
-PropertyTable::PropertyTable(JSGlobalData& globalData, unsigned initialCapacity)
- : JSCell(globalData, globalData.propertyTableStructure.get())
+PropertyTable::PropertyTable(VM& vm, unsigned initialCapacity)
+ : JSCell(vm, vm.propertyTableStructure.get())
, m_indexSize(sizeForCapacity(initialCapacity))
, m_indexMask(m_indexSize - 1)
, m_index(static_cast<unsigned*>(fastZeroedMalloc(dataSize())))
@@ -67,8 +67,8 @@
ASSERT(isPowerOf2(m_indexSize));
}
-PropertyTable::PropertyTable(JSGlobalData& globalData, JSCell* owner, const PropertyTable& other)
- : JSCell(globalData, globalData.propertyTableStructure.get())
+PropertyTable::PropertyTable(VM& vm, JSCell* owner, const PropertyTable& other)
+ : JSCell(vm, vm.propertyTableStructure.get())
, m_indexSize(other.m_indexSize)
, m_indexMask(other.m_indexMask)
, m_index(static_cast<unsigned*>(fastMalloc(dataSize())))
@@ -91,8 +91,8 @@
m_deletedOffsets = adoptPtr(new Vector<PropertyOffset>(*otherDeletedOffsets));
}
-PropertyTable::PropertyTable(JSGlobalData& globalData, JSCell* owner, unsigned initialCapacity, const PropertyTable& other)
- : JSCell(globalData, globalData.propertyTableStructure.get())
+PropertyTable::PropertyTable(VM& vm, JSCell* owner, unsigned initialCapacity, const PropertyTable& other)
+ : JSCell(vm, vm.propertyTableStructure.get())
, m_indexSize(sizeForCapacity(initialCapacity))
, m_indexMask(m_indexSize - 1)
, m_index(static_cast<unsigned*>(fastZeroedMalloc(dataSize())))
diff --git a/Source/JavaScriptCore/runtime/PrototypeMap.cpp b/Source/JavaScriptCore/runtime/PrototypeMap.cpp
index ecb3f76..29de45b 100644
--- a/Source/JavaScriptCore/runtime/PrototypeMap.cpp
+++ b/Source/JavaScriptCore/runtime/PrototypeMap.cpp
@@ -62,7 +62,7 @@
addPrototype(prototype);
Structure* structure = JSFinalObject::createStructure(
- prototype->globalObject()->globalData(), prototype->globalObject(), prototype, inlineCapacity);
+ prototype->globalObject()->vm(), prototype->globalObject(), prototype, inlineCapacity);
addResult.iterator->value = structure;
return structure;
}
diff --git a/Source/JavaScriptCore/runtime/RegExp.cpp b/Source/JavaScriptCore/runtime/RegExp.cpp
index 768693a..d27bc1e 100644
--- a/Source/JavaScriptCore/runtime/RegExp.cpp
+++ b/Source/JavaScriptCore/runtime/RegExp.cpp
@@ -217,8 +217,8 @@
}
#endif
-RegExp::RegExp(JSGlobalData& globalData, const String& patternString, RegExpFlags flags)
- : JSCell(globalData, globalData.regExpStructure.get())
+RegExp::RegExp(VM& vm, const String& patternString, RegExpFlags flags)
+ : JSCell(vm, vm.regExpStructure.get())
, m_state(NotCompiled)
, m_patternString(patternString)
, m_flags(flags)
@@ -231,9 +231,9 @@
{
}
-void RegExp::finishCreation(JSGlobalData& globalData)
+void RegExp::finishCreation(VM& vm)
{
- Base::finishCreation(globalData);
+ Base::finishCreation(vm);
Yarr::YarrPattern pattern(m_patternString, ignoreCase(), multiline(), &m_constructionError);
if (m_constructionError)
m_state = ParseError;
@@ -250,19 +250,19 @@
thisObject->RegExp::~RegExp();
}
-RegExp* RegExp::createWithoutCaching(JSGlobalData& globalData, const String& patternString, RegExpFlags flags)
+RegExp* RegExp::createWithoutCaching(VM& vm, const String& patternString, RegExpFlags flags)
{
- RegExp* regExp = new (NotNull, allocateCell<RegExp>(globalData.heap)) RegExp(globalData, patternString, flags);
- regExp->finishCreation(globalData);
+ RegExp* regExp = new (NotNull, allocateCell<RegExp>(vm.heap)) RegExp(vm, patternString, flags);
+ regExp->finishCreation(vm);
return regExp;
}
-RegExp* RegExp::create(JSGlobalData& globalData, const String& patternString, RegExpFlags flags)
+RegExp* RegExp::create(VM& vm, const String& patternString, RegExpFlags flags)
{
- return globalData.regExpCache()->lookupOrCreate(patternString, flags);
+ return vm.regExpCache()->lookupOrCreate(patternString, flags);
}
-void RegExp::compile(JSGlobalData* globalData, Yarr::YarrCharSize charSize)
+void RegExp::compile(VM* vm, Yarr::YarrCharSize charSize)
{
Yarr::YarrPattern pattern(m_patternString, ignoreCase(), multiline(), &m_constructionError);
if (m_constructionError) {
@@ -274,13 +274,13 @@
if (!hasCode()) {
ASSERT(m_state == NotCompiled);
- globalData->regExpCache()->addToStrongCache(this);
+ vm->regExpCache()->addToStrongCache(this);
m_state = ByteCode;
}
#if ENABLE(YARR_JIT)
- if (!pattern.m_containsBackreferences && globalData->canUseRegExpJIT()) {
- Yarr::jitCompile(pattern, charSize, globalData, m_regExpJITCode);
+ if (!pattern.m_containsBackreferences && vm->canUseRegExpJIT()) {
+ Yarr::jitCompile(pattern, charSize, vm, m_regExpJITCode);
#if ENABLE(YARR_JIT_DEBUG)
if (!m_regExpJITCode.isFallBack())
m_state = JITCode;
@@ -297,10 +297,10 @@
UNUSED_PARAM(charSize);
#endif
- m_regExpBytecode = Yarr::byteCompile(pattern, &globalData->m_regExpAllocator);
+ m_regExpBytecode = Yarr::byteCompile(pattern, &vm->m_regExpAllocator);
}
-void RegExp::compileIfNecessary(JSGlobalData& globalData, Yarr::YarrCharSize charSize)
+void RegExp::compileIfNecessary(VM& vm, Yarr::YarrCharSize charSize)
{
if (hasCode()) {
#if ENABLE(YARR_JIT)
@@ -315,17 +315,17 @@
#endif
}
- compile(&globalData, charSize);
+ compile(&vm, charSize);
}
-int RegExp::match(JSGlobalData& globalData, const String& s, unsigned startOffset, Vector<int, 32>& ovector)
+int RegExp::match(VM& vm, const String& s, unsigned startOffset, Vector<int, 32>& ovector)
{
#if ENABLE(REGEXP_TRACING)
m_rtMatchCallCount++;
#endif
ASSERT(m_state != ParseError);
- compileIfNecessary(globalData, s.is8Bit() ? Yarr::Char8 : Yarr::Char16);
+ compileIfNecessary(vm, s.is8Bit() ? Yarr::Char8 : Yarr::Char16);
int offsetVectorSize = (m_numSubpatterns + 1) * 2;
ovector.resize(offsetVectorSize);
@@ -384,7 +384,7 @@
return result;
}
-void RegExp::compileMatchOnly(JSGlobalData* globalData, Yarr::YarrCharSize charSize)
+void RegExp::compileMatchOnly(VM* vm, Yarr::YarrCharSize charSize)
{
Yarr::YarrPattern pattern(m_patternString, ignoreCase(), multiline(), &m_constructionError);
if (m_constructionError) {
@@ -396,13 +396,13 @@
if (!hasCode()) {
ASSERT(m_state == NotCompiled);
- globalData->regExpCache()->addToStrongCache(this);
+ vm->regExpCache()->addToStrongCache(this);
m_state = ByteCode;
}
#if ENABLE(YARR_JIT)
- if (!pattern.m_containsBackreferences && globalData->canUseRegExpJIT()) {
- Yarr::jitCompile(pattern, charSize, globalData, m_regExpJITCode, Yarr::MatchOnly);
+ if (!pattern.m_containsBackreferences && vm->canUseRegExpJIT()) {
+ Yarr::jitCompile(pattern, charSize, vm, m_regExpJITCode, Yarr::MatchOnly);
#if ENABLE(YARR_JIT_DEBUG)
if (!m_regExpJITCode.isFallBack())
m_state = JITCode;
@@ -419,10 +419,10 @@
UNUSED_PARAM(charSize);
#endif
- m_regExpBytecode = Yarr::byteCompile(pattern, &globalData->m_regExpAllocator);
+ m_regExpBytecode = Yarr::byteCompile(pattern, &vm->m_regExpAllocator);
}
-void RegExp::compileIfNecessaryMatchOnly(JSGlobalData& globalData, Yarr::YarrCharSize charSize)
+void RegExp::compileIfNecessaryMatchOnly(VM& vm, Yarr::YarrCharSize charSize)
{
if (hasCode()) {
#if ENABLE(YARR_JIT)
@@ -437,17 +437,17 @@
#endif
}
- compileMatchOnly(&globalData, charSize);
+ compileMatchOnly(&vm, charSize);
}
-MatchResult RegExp::match(JSGlobalData& globalData, const String& s, unsigned startOffset)
+MatchResult RegExp::match(VM& vm, const String& s, unsigned startOffset)
{
#if ENABLE(REGEXP_TRACING)
m_rtMatchCallCount++;
#endif
ASSERT(m_state != ParseError);
- compileIfNecessaryMatchOnly(globalData, s.is8Bit() ? Yarr::Char8 : Yarr::Char16);
+ compileIfNecessaryMatchOnly(vm, s.is8Bit() ? Yarr::Char8 : Yarr::Char16);
#if ENABLE(YARR_JIT)
if (m_state == JITCode) {
diff --git a/Source/JavaScriptCore/runtime/RegExp.h b/Source/JavaScriptCore/runtime/RegExp.h
index b2b65d9..94ea316 100644
--- a/Source/JavaScriptCore/runtime/RegExp.h
+++ b/Source/JavaScriptCore/runtime/RegExp.h
@@ -38,7 +38,7 @@
namespace JSC {
struct RegExpRepresentation;
- class JSGlobalData;
+ class VM;
JS_EXPORT_PRIVATE RegExpFlags regExpFlags(const String&);
@@ -46,7 +46,7 @@
public:
typedef JSCell Base;
- JS_EXPORT_PRIVATE static RegExp* create(JSGlobalData&, const String& pattern, RegExpFlags);
+ JS_EXPORT_PRIVATE static RegExp* create(VM&, const String& pattern, RegExpFlags);
static const bool needsDestruction = true;
static const bool hasImmortalStructure = true;
static void destroy(JSCell*);
@@ -60,8 +60,8 @@
bool isValid() const { return !m_constructionError && m_flags != InvalidFlags; }
const char* errorMessage() const { return m_constructionError; }
- JS_EXPORT_PRIVATE int match(JSGlobalData&, const String&, unsigned startOffset, Vector<int, 32>& ovector);
- MatchResult match(JSGlobalData&, const String&, unsigned startOffset);
+ JS_EXPORT_PRIVATE int match(VM&, const String&, unsigned startOffset, Vector<int, 32>& ovector);
+ MatchResult match(VM&, const String&, unsigned startOffset);
unsigned numSubpatterns() const { return m_numSubpatterns; }
bool hasCode()
@@ -75,9 +75,9 @@
void printTraceData();
#endif
- static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype)
+ static Structure* createStructure(VM& vm, JSGlobalObject* globalObject, JSValue prototype)
{
- return Structure::create(globalData, globalObject, prototype, TypeInfo(LeafType, 0), &s_info);
+ return Structure::create(vm, globalObject, prototype, TypeInfo(LeafType, 0), &s_info);
}
static const ClassInfo s_info;
@@ -85,13 +85,13 @@
RegExpKey key() { return RegExpKey(m_flags, m_patternString); }
protected:
- void finishCreation(JSGlobalData&);
+ void finishCreation(VM&);
private:
friend class RegExpCache;
- RegExp(JSGlobalData&, const String&, RegExpFlags);
+ RegExp(VM&, const String&, RegExpFlags);
- static RegExp* createWithoutCaching(JSGlobalData&, const String&, RegExpFlags);
+ static RegExp* createWithoutCaching(VM&, const String&, RegExpFlags);
enum RegExpState {
ParseError,
@@ -100,11 +100,11 @@
NotCompiled
} m_state;
- void compile(JSGlobalData*, Yarr::YarrCharSize);
- void compileIfNecessary(JSGlobalData&, Yarr::YarrCharSize);
+ void compile(VM*, Yarr::YarrCharSize);
+ void compileIfNecessary(VM&, Yarr::YarrCharSize);
- void compileMatchOnly(JSGlobalData*, Yarr::YarrCharSize);
- void compileIfNecessaryMatchOnly(JSGlobalData&, Yarr::YarrCharSize);
+ void compileMatchOnly(VM*, Yarr::YarrCharSize);
+ void compileIfNecessaryMatchOnly(VM&, Yarr::YarrCharSize);
#if ENABLE(YARR_JIT_DEBUG)
void matchCompareWithInterpreter(const String&, int startOffset, int* offsetVector, int jitResult);
diff --git a/Source/JavaScriptCore/runtime/RegExpCache.cpp b/Source/JavaScriptCore/runtime/RegExpCache.cpp
index 14ce7ec..1ab3f5f 100644
--- a/Source/JavaScriptCore/runtime/RegExpCache.cpp
+++ b/Source/JavaScriptCore/runtime/RegExpCache.cpp
@@ -41,18 +41,18 @@
if (RegExp* regExp = m_weakCache.get(key))
return regExp;
- RegExp* regExp = RegExp::createWithoutCaching(*m_globalData, patternString, flags);
+ RegExp* regExp = RegExp::createWithoutCaching(*m_vm, patternString, flags);
#if ENABLE(REGEXP_TRACING)
- m_globalData->addRegExpToTrace(regExp);
+ m_vm->addRegExpToTrace(regExp);
#endif
weakAdd(m_weakCache, key, PassWeak<RegExp>(regExp, this));
return regExp;
}
-RegExpCache::RegExpCache(JSGlobalData* globalData)
+RegExpCache::RegExpCache(VM* vm)
: m_nextEntryInStrongCache(0)
- , m_globalData(globalData)
+ , m_vm(vm)
{
}
@@ -68,7 +68,7 @@
String pattern = regExp->pattern();
if (pattern.length() > maxStrongCacheablePatternLength)
return;
- m_strongCache[m_nextEntryInStrongCache].set(*m_globalData, regExp);
+ m_strongCache[m_nextEntryInStrongCache].set(*m_vm, regExp);
m_nextEntryInStrongCache++;
if (m_nextEntryInStrongCache == maxStrongCacheableEntries)
m_nextEntryInStrongCache = 0;
diff --git a/Source/JavaScriptCore/runtime/RegExpCache.h b/Source/JavaScriptCore/runtime/RegExpCache.h
index d69bfbe..4f854d1 100644
--- a/Source/JavaScriptCore/runtime/RegExpCache.h
+++ b/Source/JavaScriptCore/runtime/RegExpCache.h
@@ -43,7 +43,7 @@
typedef HashMap<RegExpKey, Weak<RegExp> > RegExpCacheMap;
public:
- RegExpCache(JSGlobalData* globalData);
+ RegExpCache(VM* vm);
void invalidateCode();
private:
@@ -59,7 +59,7 @@
RegExpCacheMap m_weakCache; // Holds all regular expressions currently live.
int m_nextEntryInStrongCache;
WTF::FixedArray<Strong<RegExp>, maxStrongCacheableEntries> m_strongCache; // Holds a select few regular expressions that have compiled and executed
- JSGlobalData* m_globalData;
+ VM* m_vm;
};
} // namespace JSC
diff --git a/Source/JavaScriptCore/runtime/RegExpCachedResult.cpp b/Source/JavaScriptCore/runtime/RegExpCachedResult.cpp
index 10abaae..c54b478 100644
--- a/Source/JavaScriptCore/runtime/RegExpCachedResult.cpp
+++ b/Source/JavaScriptCore/runtime/RegExpCachedResult.cpp
@@ -42,8 +42,8 @@
RegExpMatchesArray* RegExpCachedResult::lastResult(ExecState* exec, JSObject* owner)
{
if (m_result) {
- m_reifiedInput.set(exec->globalData(), owner, m_lastInput.get());
- m_reifiedResult.set(exec->globalData(), owner, RegExpMatchesArray::create(exec, m_lastInput.get(), m_lastRegExp.get(), m_result));
+ m_reifiedInput.set(exec->vm(), owner, m_lastInput.get());
+ m_reifiedResult.set(exec->vm(), owner, RegExpMatchesArray::create(exec, m_lastInput.get(), m_lastRegExp.get(), m_result));
m_result = MatchResult::failed();
}
return m_reifiedResult.get();
@@ -54,7 +54,7 @@
// Make sure we're reified, otherwise m_reifiedInput will be ignored.
lastResult(exec, owner);
ASSERT(!m_result);
- m_reifiedInput.set(exec->globalData(), owner, input);
+ m_reifiedInput.set(exec->vm(), owner, input);
}
} // namespace JSC
diff --git a/Source/JavaScriptCore/runtime/RegExpCachedResult.h b/Source/JavaScriptCore/runtime/RegExpCachedResult.h
index 812ff43..d2763bc 100644
--- a/Source/JavaScriptCore/runtime/RegExpCachedResult.h
+++ b/Source/JavaScriptCore/runtime/RegExpCachedResult.h
@@ -44,17 +44,17 @@
// m_reifiedResult and m_reifiedInput hold the cached results.
class RegExpCachedResult {
public:
- RegExpCachedResult(JSGlobalData& globalData, JSObject* owner, RegExp* emptyRegExp)
+ RegExpCachedResult(VM& vm, JSObject* owner, RegExp* emptyRegExp)
: m_result(0, 0)
{
- m_lastInput.set(globalData, owner, jsEmptyString(&globalData));
- m_lastRegExp.set(globalData, owner, emptyRegExp);
+ m_lastInput.set(vm, owner, jsEmptyString(&vm));
+ m_lastRegExp.set(vm, owner, emptyRegExp);
}
- ALWAYS_INLINE void record(JSGlobalData& globalData, JSObject* owner, RegExp* regExp, JSString* input, MatchResult result)
+ ALWAYS_INLINE void record(VM& vm, JSObject* owner, RegExp* regExp, JSString* input, MatchResult result)
{
- m_lastRegExp.set(globalData, owner, regExp);
- m_lastInput.set(globalData, owner, input);
+ m_lastRegExp.set(vm, owner, regExp);
+ m_lastInput.set(vm, owner, input);
m_result = result;
}
diff --git a/Source/JavaScriptCore/runtime/RegExpConstructor.cpp b/Source/JavaScriptCore/runtime/RegExpConstructor.cpp
index 73c2577..8b12a5a 100644
--- a/Source/JavaScriptCore/runtime/RegExpConstructor.cpp
+++ b/Source/JavaScriptCore/runtime/RegExpConstructor.cpp
@@ -84,21 +84,21 @@
RegExpConstructor::RegExpConstructor(JSGlobalObject* globalObject, Structure* structure, RegExpPrototype* regExpPrototype)
: InternalFunction(globalObject, structure)
- , m_cachedResult(globalObject->globalData(), this, regExpPrototype->regExp())
+ , m_cachedResult(globalObject->vm(), this, regExpPrototype->regExp())
, m_multiline(false)
{
}
void RegExpConstructor::finishCreation(ExecState* exec, RegExpPrototype* regExpPrototype)
{
- Base::finishCreation(exec->globalData(), Identifier(exec, "RegExp").string());
+ Base::finishCreation(exec->vm(), Identifier(exec, "RegExp").string());
ASSERT(inherits(&s_info));
// ECMA 15.10.5.1 RegExp.prototype
- putDirectWithoutTransition(exec->globalData(), exec->propertyNames().prototype, regExpPrototype, DontEnum | DontDelete | ReadOnly);
+ putDirectWithoutTransition(exec->vm(), exec->propertyNames().prototype, regExpPrototype, DontEnum | DontDelete | ReadOnly);
// no. of arguments for constructor
- putDirectWithoutTransition(exec->globalData(), exec->propertyNames().length, jsNumber(2), ReadOnly | DontDelete | DontEnum);
+ putDirectWithoutTransition(exec->vm(), exec->propertyNames().length, jsNumber(2), ReadOnly | DontDelete | DontEnum);
}
void RegExpConstructor::destroy(JSCell* cell)
@@ -283,7 +283,7 @@
return throwError(exec, createSyntaxError(exec, ASCIILiteral("Invalid flags supplied to RegExp constructor.")));
}
- RegExp* regExp = RegExp::create(exec->globalData(), pattern, flags);
+ RegExp* regExp = RegExp::create(exec->vm(), pattern, flags);
if (!regExp->isValid())
return throwError(exec, createSyntaxError(exec, regExp->errorMessage()));
return RegExpObject::create(exec, exec->lexicalGlobalObject(), globalObject->regExpStructure(), regExp);
diff --git a/Source/JavaScriptCore/runtime/RegExpConstructor.h b/Source/JavaScriptCore/runtime/RegExpConstructor.h
index 2cb1c12..0942070 100644
--- a/Source/JavaScriptCore/runtime/RegExpConstructor.h
+++ b/Source/JavaScriptCore/runtime/RegExpConstructor.h
@@ -43,9 +43,9 @@
return constructor;
}
- static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype)
+ static Structure* createStructure(VM& vm, JSGlobalObject* globalObject, JSValue prototype)
{
- return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), &s_info);
+ return Structure::create(vm, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), &s_info);
}
static void put(JSCell*, ExecState*, PropertyName, JSValue, PutPropertySlot&);
@@ -55,8 +55,8 @@
static const ClassInfo s_info;
- MatchResult performMatch(JSGlobalData&, RegExp*, JSString*, const String&, int startOffset, int** ovector);
- MatchResult performMatch(JSGlobalData&, RegExp*, JSString*, const String&, int startOffset);
+ MatchResult performMatch(VM&, RegExp*, JSString*, const String&, int startOffset, int** ovector);
+ MatchResult performMatch(VM&, RegExp*, JSString*, const String&, int startOffset);
void setMultiline(bool multiline) { m_multiline = multiline; }
bool multiline() const { return m_multiline; }
@@ -101,9 +101,9 @@
expression matching through the performMatch function. We use cached results to calculate,
e.g., RegExp.lastMatch and RegExp.leftParen.
*/
- ALWAYS_INLINE MatchResult RegExpConstructor::performMatch(JSGlobalData& globalData, RegExp* regExp, JSString* string, const String& input, int startOffset, int** ovector)
+ ALWAYS_INLINE MatchResult RegExpConstructor::performMatch(VM& vm, RegExp* regExp, JSString* string, const String& input, int startOffset, int** ovector)
{
- int position = regExp->match(globalData, input, startOffset, m_ovector);
+ int position = regExp->match(vm, input, startOffset, m_ovector);
if (ovector)
*ovector = m_ovector.data();
@@ -116,15 +116,15 @@
ASSERT(m_ovector[1] >= position);
size_t end = m_ovector[1];
- m_cachedResult.record(globalData, this, regExp, string, MatchResult(position, end));
+ m_cachedResult.record(vm, this, regExp, string, MatchResult(position, end));
return MatchResult(position, end);
}
- ALWAYS_INLINE MatchResult RegExpConstructor::performMatch(JSGlobalData& globalData, RegExp* regExp, JSString* string, const String& input, int startOffset)
+ ALWAYS_INLINE MatchResult RegExpConstructor::performMatch(VM& vm, RegExp* regExp, JSString* string, const String& input, int startOffset)
{
- MatchResult result = regExp->match(globalData, input, startOffset);
+ MatchResult result = regExp->match(vm, input, startOffset);
if (result)
- m_cachedResult.record(globalData, this, regExp, string, result);
+ m_cachedResult.record(vm, this, regExp, string, result);
return result;
}
diff --git a/Source/JavaScriptCore/runtime/RegExpMatchesArray.cpp b/Source/JavaScriptCore/runtime/RegExpMatchesArray.cpp
index 568b440..062650a 100644
--- a/Source/JavaScriptCore/runtime/RegExpMatchesArray.cpp
+++ b/Source/JavaScriptCore/runtime/RegExpMatchesArray.cpp
@@ -33,28 +33,28 @@
const ClassInfo RegExpMatchesArray::s_info = {"Array", &JSArray::s_info, 0, 0, CREATE_METHOD_TABLE(RegExpMatchesArray)};
-RegExpMatchesArray::RegExpMatchesArray(JSGlobalData& globalData, Butterfly* butterfly, JSGlobalObject* globalObject, JSString* input, RegExp* regExp, MatchResult result)
- : JSArray(globalData, globalObject->regExpMatchesArrayStructure(), butterfly)
+RegExpMatchesArray::RegExpMatchesArray(VM& vm, Butterfly* butterfly, JSGlobalObject* globalObject, JSString* input, RegExp* regExp, MatchResult result)
+ : JSArray(vm, globalObject->regExpMatchesArrayStructure(), butterfly)
, m_result(result)
, m_state(ReifiedNone)
{
- m_input.set(globalData, this, input);
- m_regExp.set(globalData, this, regExp);
+ m_input.set(vm, this, input);
+ m_regExp.set(vm, this, regExp);
}
RegExpMatchesArray* RegExpMatchesArray::create(ExecState* exec, JSString* input, RegExp* regExp, MatchResult result)
{
ASSERT(result);
- JSGlobalData& globalData = exec->globalData();
- Butterfly* butterfly = createArrayButterfly(globalData, regExp->numSubpatterns() + 1);
- RegExpMatchesArray* array = new (NotNull, allocateCell<RegExpMatchesArray>(globalData.heap)) RegExpMatchesArray(globalData, butterfly, exec->lexicalGlobalObject(), input, regExp, result);
- array->finishCreation(globalData);
+ VM& vm = exec->vm();
+ Butterfly* butterfly = createArrayButterfly(vm, regExp->numSubpatterns() + 1);
+ RegExpMatchesArray* array = new (NotNull, allocateCell<RegExpMatchesArray>(vm.heap)) RegExpMatchesArray(vm, butterfly, exec->lexicalGlobalObject(), input, regExp, result);
+ array->finishCreation(vm);
return array;
}
-void RegExpMatchesArray::finishCreation(JSGlobalData& globalData)
+void RegExpMatchesArray::finishCreation(VM& vm)
{
- Base::finishCreation(globalData);
+ Base::finishCreation(vm);
}
void RegExpMatchesArray::visitChildren(JSCell* cell, SlotVisitor& visitor)
@@ -78,7 +78,7 @@
if (unsigned numSubpatterns = m_regExp->numSubpatterns()) {
Vector<int, 32> subpatternResults;
- int position = m_regExp->match(exec->globalData(), m_input->value(exec), m_result.start, subpatternResults);
+ int position = m_regExp->match(exec->vm(), m_input->value(exec), m_result.start, subpatternResults);
ASSERT_UNUSED(position, position >= 0 && static_cast<size_t>(position) == m_result.start);
ASSERT(m_result.start == static_cast<size_t>(subpatternResults[0]));
ASSERT(m_result.end == static_cast<size_t>(subpatternResults[1]));
diff --git a/Source/JavaScriptCore/runtime/RegExpMatchesArray.h b/Source/JavaScriptCore/runtime/RegExpMatchesArray.h
index a5b860b..af747b6 100644
--- a/Source/JavaScriptCore/runtime/RegExpMatchesArray.h
+++ b/Source/JavaScriptCore/runtime/RegExpMatchesArray.h
@@ -28,7 +28,7 @@
class RegExpMatchesArray : public JSArray {
private:
- RegExpMatchesArray(JSGlobalData&, Butterfly*, JSGlobalObject*, JSString*, RegExp*, MatchResult);
+ RegExpMatchesArray(VM&, Butterfly*, JSGlobalObject*, JSString*, RegExp*, MatchResult);
enum ReifiedState { ReifiedNone, ReifiedMatch, ReifiedAll };
@@ -42,15 +42,15 @@
static const ClassInfo s_info;
- static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype)
+ static Structure* createStructure(VM& vm, JSGlobalObject* globalObject, JSValue prototype)
{
- return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), &s_info, ArrayWithArrayStorage);
+ return Structure::create(vm, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), &s_info, ArrayWithArrayStorage);
}
static void visitChildren(JSCell*, SlotVisitor&);
protected:
- void finishCreation(JSGlobalData&);
+ void finishCreation(VM&);
static const unsigned StructureFlags = OverridesGetOwnPropertySlot | OverridesVisitChildren | OverridesGetPropertyNames | Base::StructureFlags;
diff --git a/Source/JavaScriptCore/runtime/RegExpObject.cpp b/Source/JavaScriptCore/runtime/RegExpObject.cpp
index 31e4c54..8b2d03c 100644
--- a/Source/JavaScriptCore/runtime/RegExpObject.cpp
+++ b/Source/JavaScriptCore/runtime/RegExpObject.cpp
@@ -64,8 +64,8 @@
*/
RegExpObject::RegExpObject(JSGlobalObject* globalObject, Structure* structure, RegExp* regExp)
- : JSNonFinalObject(globalObject->globalData(), structure)
- , m_regExp(globalObject->globalData(), this, regExp)
+ : JSNonFinalObject(globalObject->vm(), structure)
+ , m_regExp(globalObject->vm(), this, regExp)
, m_lastIndexIsWritable(true)
{
m_lastIndex.setWithoutWriteBarrier(jsNumber(0));
@@ -73,7 +73,7 @@
void RegExpObject::finishCreation(JSGlobalObject* globalObject)
{
- Base::finishCreation(globalObject->globalData());
+ Base::finishCreation(globalObject->vm());
ASSERT(inherits(&s_info));
}
@@ -315,9 +315,9 @@
RegExp* regExp = this->regExp();
RegExpConstructor* regExpConstructor = exec->lexicalGlobalObject()->regExpConstructor();
String input = string->value(exec);
- JSGlobalData& globalData = exec->globalData();
+ VM& vm = exec->vm();
if (!regExp->global())
- return regExpConstructor->performMatch(globalData, regExp, string, input, 0);
+ return regExpConstructor->performMatch(vm, regExp, string, input, 0);
JSValue jsLastIndex = getLastIndex();
unsigned lastIndex;
@@ -336,7 +336,7 @@
lastIndex = static_cast<unsigned>(doubleLastIndex);
}
- MatchResult result = regExpConstructor->performMatch(globalData, regExp, string, input, lastIndex);
+ MatchResult result = regExpConstructor->performMatch(vm, regExp, string, input, lastIndex);
setLastIndex(exec, result.end);
return result;
}
diff --git a/Source/JavaScriptCore/runtime/RegExpObject.h b/Source/JavaScriptCore/runtime/RegExpObject.h
index f43d6bc7..7ed3dea 100644
--- a/Source/JavaScriptCore/runtime/RegExpObject.h
+++ b/Source/JavaScriptCore/runtime/RegExpObject.h
@@ -37,14 +37,14 @@
return object;
}
- static RegExpObject* create(JSGlobalData& globalData, JSGlobalObject* globalObject, Structure* structure, RegExp* regExp)
+ static RegExpObject* create(VM& vm, JSGlobalObject* globalObject, Structure* structure, RegExp* regExp)
{
- RegExpObject* object = new (NotNull, allocateCell<RegExpObject>(globalData.heap)) RegExpObject(globalObject, structure, regExp);
+ RegExpObject* object = new (NotNull, allocateCell<RegExpObject>(vm.heap)) RegExpObject(globalObject, structure, regExp);
object->finishCreation(globalObject);
return object;
}
- void setRegExp(JSGlobalData& globalData, RegExp* r) { m_regExp.set(globalData, this, r); }
+ void setRegExp(VM& vm, RegExp* r) { m_regExp.set(vm, this, r); }
RegExp* regExp() const { return m_regExp.get(); }
void setLastIndex(ExecState* exec, size_t lastIndex)
@@ -58,7 +58,7 @@
void setLastIndex(ExecState* exec, JSValue lastIndex, bool shouldThrow)
{
if (LIKELY(m_lastIndexIsWritable))
- m_lastIndex.set(exec->globalData(), this, lastIndex);
+ m_lastIndex.set(exec->vm(), this, lastIndex);
else if (shouldThrow)
throwTypeError(exec, StrictModeReadonlyPropertyWriteError);
}
@@ -76,9 +76,9 @@
static JS_EXPORTDATA const ClassInfo s_info;
- static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype)
+ static Structure* createStructure(VM& vm, JSGlobalObject* globalObject, JSValue prototype)
{
- return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), &s_info);
+ return Structure::create(vm, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), &s_info);
}
protected:
diff --git a/Source/JavaScriptCore/runtime/RegExpPrototype.cpp b/Source/JavaScriptCore/runtime/RegExpPrototype.cpp
index d980171..daebcbc 100644
--- a/Source/JavaScriptCore/runtime/RegExpPrototype.cpp
+++ b/Source/JavaScriptCore/runtime/RegExpPrototype.cpp
@@ -120,13 +120,13 @@
if (flags == InvalidFlags)
return throwVMError(exec, createSyntaxError(exec, ASCIILiteral("Invalid flags supplied to RegExp constructor.")));
}
- regExp = RegExp::create(exec->globalData(), pattern, flags);
+ regExp = RegExp::create(exec->vm(), pattern, flags);
}
if (!regExp->isValid())
return throwVMError(exec, createSyntaxError(exec, regExp->errorMessage()));
- asRegExpObject(thisValue)->setRegExp(exec->globalData(), regExp);
+ asRegExpObject(thisValue)->setRegExp(exec->vm(), regExp);
asRegExpObject(thisValue)->setLastIndex(exec, 0);
return JSValue::encode(jsUndefined());
}
diff --git a/Source/JavaScriptCore/runtime/RegExpPrototype.h b/Source/JavaScriptCore/runtime/RegExpPrototype.h
index 78c6ae1..703306b 100644
--- a/Source/JavaScriptCore/runtime/RegExpPrototype.h
+++ b/Source/JavaScriptCore/runtime/RegExpPrototype.h
@@ -39,9 +39,9 @@
static const ClassInfo s_info;
- static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype)
+ static Structure* createStructure(VM& vm, JSGlobalObject* globalObject, JSValue prototype)
{
- return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), &s_info);
+ return Structure::create(vm, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), &s_info);
}
protected:
diff --git a/Source/JavaScriptCore/runtime/SmallStrings.cpp b/Source/JavaScriptCore/runtime/SmallStrings.cpp
index 56a23b4..5f35cca 100644
--- a/Source/JavaScriptCore/runtime/SmallStrings.cpp
+++ b/Source/JavaScriptCore/runtime/SmallStrings.cpp
@@ -81,10 +81,10 @@
m_singleCharacterStrings[i] = 0;
}
-void SmallStrings::initializeCommonStrings(JSGlobalData& globalData)
+void SmallStrings::initializeCommonStrings(VM& vm)
{
- createEmptyString(&globalData);
-#define JSC_COMMON_STRINGS_ATTRIBUTE_INITIALIZE(name) initialize(&globalData, m_##name, #name);
+ createEmptyString(&vm);
+#define JSC_COMMON_STRINGS_ATTRIBUTE_INITIALIZE(name) initialize(&vm, m_##name, #name);
JSC_COMMON_STRINGS_EACH_NAME(JSC_COMMON_STRINGS_ATTRIBUTE_INITIALIZE)
#undef JSC_COMMON_STRINGS_ATTRIBUTE_INITIALIZE
}
@@ -108,18 +108,18 @@
finalize(m_singleCharacterStrings[i]);
}
-void SmallStrings::createEmptyString(JSGlobalData* globalData)
+void SmallStrings::createEmptyString(VM* vm)
{
ASSERT(!m_emptyString);
- m_emptyString = JSString::createHasOtherOwner(*globalData, StringImpl::empty());
+ m_emptyString = JSString::createHasOtherOwner(*vm, StringImpl::empty());
}
-void SmallStrings::createSingleCharacterString(JSGlobalData* globalData, unsigned char character)
+void SmallStrings::createSingleCharacterString(VM* vm, unsigned char character)
{
if (!m_storage)
m_storage = adoptPtr(new SmallStringsStorage);
ASSERT(!m_singleCharacterStrings[character]);
- m_singleCharacterStrings[character] = JSString::createHasOtherOwner(*globalData, PassRefPtr<StringImpl>(m_storage->rep(character)));
+ m_singleCharacterStrings[character] = JSString::createHasOtherOwner(*vm, PassRefPtr<StringImpl>(m_storage->rep(character)));
}
StringImpl* SmallStrings::singleCharacterStringRep(unsigned char character)
@@ -129,9 +129,9 @@
return m_storage->rep(character);
}
-void SmallStrings::initialize(JSGlobalData* globalData, JSString*& string, const char* value) const
+void SmallStrings::initialize(VM* vm, JSString*& string, const char* value) const
{
- string = JSString::create(*globalData, StringImpl::create(value));
+ string = JSString::create(*vm, StringImpl::create(value));
}
} // namespace JSC
diff --git a/Source/JavaScriptCore/runtime/SmallStrings.h b/Source/JavaScriptCore/runtime/SmallStrings.h
index 3fc9b3c..f000430 100644
--- a/Source/JavaScriptCore/runtime/SmallStrings.h
+++ b/Source/JavaScriptCore/runtime/SmallStrings.h
@@ -50,7 +50,7 @@
namespace JSC {
class HeapRootVisitor;
- class JSGlobalData;
+ class VM;
class JSString;
class SmallStringsStorage;
class SlotVisitor;
@@ -68,10 +68,10 @@
return m_emptyString;
}
- JSString* singleCharacterString(JSGlobalData* globalData, unsigned char character)
+ JSString* singleCharacterString(VM* vm, unsigned char character)
{
if (!m_singleCharacterStrings[character])
- createSingleCharacterString(globalData, character);
+ createSingleCharacterString(vm, character);
return m_singleCharacterStrings[character];
}
@@ -81,7 +81,7 @@
JSString** singleCharacterStrings() { return &m_singleCharacterStrings[0]; }
- void initializeCommonStrings(JSGlobalData&);
+ void initializeCommonStrings(VM&);
void visitStrongReferences(SlotVisitor&);
#define JSC_COMMON_STRINGS_ACCESSOR_DEFINITION(name) \
@@ -95,10 +95,10 @@
private:
static const unsigned singleCharacterStringCount = maxSingleCharacterString + 1;
- JS_EXPORT_PRIVATE void createEmptyString(JSGlobalData*);
- JS_EXPORT_PRIVATE void createSingleCharacterString(JSGlobalData*, unsigned char);
+ JS_EXPORT_PRIVATE void createEmptyString(VM*);
+ JS_EXPORT_PRIVATE void createSingleCharacterString(VM*, unsigned char);
- void initialize(JSGlobalData* globalData, JSString*& string, const char* value) const;
+ void initialize(VM* vm, JSString*& string, const char* value) const;
JSString* m_emptyString;
#define JSC_COMMON_STRINGS_ATTRIBUTE_DECLARATION(name) JSString* m_##name;
diff --git a/Source/JavaScriptCore/runtime/SparseArrayValueMap.cpp b/Source/JavaScriptCore/runtime/SparseArrayValueMap.cpp
index 94e407f..1997c5b 100644
--- a/Source/JavaScriptCore/runtime/SparseArrayValueMap.cpp
+++ b/Source/JavaScriptCore/runtime/SparseArrayValueMap.cpp
@@ -39,8 +39,8 @@
const ClassInfo SparseArrayValueMap::s_info = { "SparseArrayValueMap", 0, 0, 0, CREATE_METHOD_TABLE(SparseArrayValueMap) };
-SparseArrayValueMap::SparseArrayValueMap(JSGlobalData& globalData)
- : Base(globalData, globalData.sparseArrayValueMapStructure.get())
+SparseArrayValueMap::SparseArrayValueMap(VM& vm)
+ : Base(vm, vm.sparseArrayValueMapStructure.get())
, m_flags(Normal)
, m_reportedCapacity(0)
{
@@ -50,15 +50,15 @@
{
}
-void SparseArrayValueMap::finishCreation(JSGlobalData& globalData)
+void SparseArrayValueMap::finishCreation(VM& vm)
{
- Base::finishCreation(globalData);
+ Base::finishCreation(vm);
}
-SparseArrayValueMap* SparseArrayValueMap::create(JSGlobalData& globalData)
+SparseArrayValueMap* SparseArrayValueMap::create(VM& vm)
{
- SparseArrayValueMap* result = new (NotNull, allocateCell<SparseArrayValueMap>(globalData.heap)) SparseArrayValueMap(globalData);
- result->finishCreation(globalData);
+ SparseArrayValueMap* result = new (NotNull, allocateCell<SparseArrayValueMap>(vm.heap)) SparseArrayValueMap(vm);
+ result->finishCreation(vm);
return result;
}
@@ -67,9 +67,9 @@
static_cast<SparseArrayValueMap*>(cell)->SparseArrayValueMap::~SparseArrayValueMap();
}
-Structure* SparseArrayValueMap::createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype)
+Structure* SparseArrayValueMap::createStructure(VM& vm, JSGlobalObject* globalObject, JSValue prototype)
{
- return Structure::create(globalData, globalObject, prototype, TypeInfo(CompoundType, StructureFlags), &s_info);
+ return Structure::create(vm, globalObject, prototype, TypeInfo(CompoundType, StructureFlags), &s_info);
}
SparseArrayValueMap::AddResult SparseArrayValueMap::add(JSObject* array, unsigned i)
@@ -118,7 +118,7 @@
}
entry.attributes = attributes;
- entry.set(exec->globalData(), this, value);
+ entry.set(exec->vm(), this, value);
return true;
}
@@ -172,7 +172,7 @@
return;
}
- set(exec->globalData(), map, value);
+ set(exec->vm(), map, value);
return;
}
diff --git a/Source/JavaScriptCore/runtime/SparseArrayValueMap.h b/Source/JavaScriptCore/runtime/SparseArrayValueMap.h
index 366a7b8..31b279f 100644
--- a/Source/JavaScriptCore/runtime/SparseArrayValueMap.h
+++ b/Source/JavaScriptCore/runtime/SparseArrayValueMap.h
@@ -65,10 +65,10 @@
LengthIsReadOnly = 2,
};
- SparseArrayValueMap(JSGlobalData&);
+ SparseArrayValueMap(VM&);
~SparseArrayValueMap();
- void finishCreation(JSGlobalData&);
+ void finishCreation(VM&);
static const unsigned StructureFlags = OverridesVisitChildren | JSCell::StructureFlags;
@@ -79,13 +79,13 @@
typedef Map::const_iterator const_iterator;
typedef Map::AddResult AddResult;
- static SparseArrayValueMap* create(JSGlobalData&);
+ static SparseArrayValueMap* create(VM&);
static const bool needsDestruction = true;
static const bool hasImmortalStructure = true;
static void destroy(JSCell*);
- static Structure* createStructure(JSGlobalData&, JSGlobalObject*, JSValue prototype);
+ static Structure* createStructure(VM&, JSGlobalObject*, JSValue prototype);
static void visitChildren(JSCell*, SlotVisitor&);
diff --git a/Source/JavaScriptCore/runtime/StrictEvalActivation.cpp b/Source/JavaScriptCore/runtime/StrictEvalActivation.cpp
index 88da424..eaef939 100644
--- a/Source/JavaScriptCore/runtime/StrictEvalActivation.cpp
+++ b/Source/JavaScriptCore/runtime/StrictEvalActivation.cpp
@@ -37,7 +37,7 @@
StrictEvalActivation::StrictEvalActivation(ExecState* exec)
: Base(
- exec->globalData(),
+ exec->vm(),
exec->lexicalGlobalObject()->strictEvalActivationStructure(),
exec->scope()
)
diff --git a/Source/JavaScriptCore/runtime/StrictEvalActivation.h b/Source/JavaScriptCore/runtime/StrictEvalActivation.h
index 9f64feb..df490d5 100644
--- a/Source/JavaScriptCore/runtime/StrictEvalActivation.h
+++ b/Source/JavaScriptCore/runtime/StrictEvalActivation.h
@@ -37,16 +37,16 @@
static StrictEvalActivation* create(ExecState* exec)
{
StrictEvalActivation* activation = new (NotNull, allocateCell<StrictEvalActivation>(*exec->heap())) StrictEvalActivation(exec);
- activation->finishCreation(exec->globalData());
+ activation->finishCreation(exec->vm());
return activation;
}
static bool deleteProperty(JSCell*, ExecState*, PropertyName);
static JSObject* toThisObject(JSCell*, ExecState*);
- static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype)
+ static Structure* createStructure(VM& vm, JSGlobalObject* globalObject, JSValue prototype)
{
- return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), &s_info);
+ return Structure::create(vm, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), &s_info);
}
static const ClassInfo s_info;
diff --git a/Source/JavaScriptCore/runtime/StringConstructor.cpp b/Source/JavaScriptCore/runtime/StringConstructor.cpp
index c35477b..df507ce 100644
--- a/Source/JavaScriptCore/runtime/StringConstructor.cpp
+++ b/Source/JavaScriptCore/runtime/StringConstructor.cpp
@@ -55,9 +55,9 @@
void StringConstructor::finishCreation(ExecState* exec, StringPrototype* stringPrototype)
{
- Base::finishCreation(exec->globalData(), stringPrototype->classInfo()->className);
- putDirectWithoutTransition(exec->globalData(), exec->propertyNames().prototype, stringPrototype, ReadOnly | DontEnum | DontDelete);
- putDirectWithoutTransition(exec->globalData(), exec->propertyNames().length, jsNumber(1), ReadOnly | DontEnum | DontDelete);
+ Base::finishCreation(exec->vm(), stringPrototype->classInfo()->className);
+ putDirectWithoutTransition(exec->vm(), exec->propertyNames().prototype, stringPrototype, ReadOnly | DontEnum | DontDelete);
+ putDirectWithoutTransition(exec->vm(), exec->propertyNames().length, jsNumber(1), ReadOnly | DontEnum | DontDelete);
}
bool StringConstructor::getOwnPropertySlot(JSCell* cell, ExecState* exec, PropertyName propertyName, PropertySlot &slot)
diff --git a/Source/JavaScriptCore/runtime/StringConstructor.h b/Source/JavaScriptCore/runtime/StringConstructor.h
index 3115b64..40e574c 100644
--- a/Source/JavaScriptCore/runtime/StringConstructor.h
+++ b/Source/JavaScriptCore/runtime/StringConstructor.h
@@ -40,9 +40,9 @@
static const ClassInfo s_info;
- static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype)
+ static Structure* createStructure(VM& vm, JSGlobalObject* globalObject, JSValue prototype)
{
- return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), &s_info);
+ return Structure::create(vm, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), &s_info);
}
protected:
diff --git a/Source/JavaScriptCore/runtime/StringObject.cpp b/Source/JavaScriptCore/runtime/StringObject.cpp
index f41ac24..bdbe27f 100644
--- a/Source/JavaScriptCore/runtime/StringObject.cpp
+++ b/Source/JavaScriptCore/runtime/StringObject.cpp
@@ -32,16 +32,16 @@
const ClassInfo StringObject::s_info = { "String", &JSWrapperObject::s_info, 0, 0, CREATE_METHOD_TABLE(StringObject) };
-StringObject::StringObject(JSGlobalData& globalData, Structure* structure)
- : JSWrapperObject(globalData, structure)
+StringObject::StringObject(VM& vm, Structure* structure)
+ : JSWrapperObject(vm, structure)
{
}
-void StringObject::finishCreation(JSGlobalData& globalData, JSString* string)
+void StringObject::finishCreation(VM& vm, JSString* string)
{
- Base::finishCreation(globalData);
+ Base::finishCreation(vm);
ASSERT(inherits(&s_info));
- setInternalValue(globalData, string);
+ setInternalValue(vm, string);
}
bool StringObject::getOwnPropertySlot(JSCell* cell, ExecState* exec, PropertyName propertyName, PropertySlot& slot)
@@ -166,7 +166,7 @@
StringObject* constructString(ExecState* exec, JSGlobalObject* globalObject, JSValue string)
{
StringObject* object = StringObject::create(exec, globalObject->stringObjectStructure());
- object->setInternalValue(exec->globalData(), string);
+ object->setInternalValue(exec->vm(), string);
return object;
}
diff --git a/Source/JavaScriptCore/runtime/StringObject.h b/Source/JavaScriptCore/runtime/StringObject.h
index 4369eac..6a92541 100644
--- a/Source/JavaScriptCore/runtime/StringObject.h
+++ b/Source/JavaScriptCore/runtime/StringObject.h
@@ -33,14 +33,14 @@
static StringObject* create(ExecState* exec, Structure* structure)
{
JSString* string = jsEmptyString(exec);
- StringObject* object = new (NotNull, allocateCell<StringObject>(*exec->heap())) StringObject(exec->globalData(), structure);
- object->finishCreation(exec->globalData(), string);
+ StringObject* object = new (NotNull, allocateCell<StringObject>(*exec->heap())) StringObject(exec->vm(), structure);
+ object->finishCreation(exec->vm(), string);
return object;
}
static StringObject* create(ExecState* exec, Structure* structure, JSString* string)
{
- StringObject* object = new (NotNull, allocateCell<StringObject>(*exec->heap())) StringObject(exec->globalData(), structure);
- object->finishCreation(exec->globalData(), string);
+ StringObject* object = new (NotNull, allocateCell<StringObject>(*exec->heap())) StringObject(exec->vm(), structure);
+ object->finishCreation(exec->vm(), string);
return object;
}
static StringObject* create(ExecState*, JSGlobalObject*, JSString*);
@@ -61,15 +61,15 @@
JSString* internalValue() const { return asString(JSWrapperObject::internalValue());}
- static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype)
+ static Structure* createStructure(VM& vm, JSGlobalObject* globalObject, JSValue prototype)
{
- return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), &s_info);
+ return Structure::create(vm, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), &s_info);
}
protected:
- JS_EXPORT_PRIVATE void finishCreation(JSGlobalData&, JSString*);
+ JS_EXPORT_PRIVATE void finishCreation(VM&, JSString*);
static const unsigned StructureFlags = OverridesGetOwnPropertySlot | InterceptsGetOwnPropertySlotByIndexEvenWhenLengthIsNotZero | OverridesGetPropertyNames | JSWrapperObject::StructureFlags;
- JS_EXPORT_PRIVATE StringObject(JSGlobalData&, Structure*);
+ JS_EXPORT_PRIVATE StringObject(VM&, Structure*);
};
StringObject* asStringObject(JSValue);
diff --git a/Source/JavaScriptCore/runtime/StringPrototype.cpp b/Source/JavaScriptCore/runtime/StringPrototype.cpp
index 1bac08f..b42fe08 100644
--- a/Source/JavaScriptCore/runtime/StringPrototype.cpp
+++ b/Source/JavaScriptCore/runtime/StringPrototype.cpp
@@ -86,15 +86,15 @@
// ECMA 15.5.4
StringPrototype::StringPrototype(ExecState* exec, Structure* structure)
- : StringObject(exec->globalData(), structure)
+ : StringObject(exec->vm(), structure)
{
}
void StringPrototype::finishCreation(ExecState* exec, JSGlobalObject* globalObject, JSString* nameAndMessage)
{
- JSGlobalData& globalData = exec->globalData();
+ VM& vm = exec->vm();
- Base::finishCreation(globalData, nameAndMessage);
+ Base::finishCreation(vm, nameAndMessage);
ASSERT(inherits(&s_info));
JSC_NATIVE_INTRINSIC_FUNCTION("toString", stringProtoFuncToString, DontEnum, 0, StringPrototypeValueOfIntrinsic);
@@ -134,7 +134,7 @@
JSC_NATIVE_FUNCTION("trimRight", stringProtoFuncTrimRight, DontEnum, 0);
// The constructor will be added later, after StringConstructor has been built
- putDirectWithoutTransition(exec->globalData(), exec->propertyNames().length, jsNumber(0), DontDelete | ReadOnly | DontEnum);
+ putDirectWithoutTransition(exec->vm(), exec->propertyNames().length, jsNumber(0), DontDelete | ReadOnly | DontEnum);
}
StringPrototype* StringPrototype::create(ExecState* exec, JSGlobalObject* globalObject, Structure* structure)
@@ -405,12 +405,12 @@
unsigned startPosition = 0;
Vector<StringRange, 16> sourceRanges;
- JSGlobalData* globalData = &exec->globalData();
+ VM* vm = &exec->vm();
RegExpConstructor* regExpConstructor = exec->lexicalGlobalObject()->regExpConstructor();
unsigned sourceLen = source.length();
while (true) {
- MatchResult result = regExpConstructor->performMatch(*globalData, regExp, string, source, startPosition);
+ MatchResult result = regExpConstructor->performMatch(*vm, regExp, string, source, startPosition);
if (!result)
break;
@@ -480,11 +480,11 @@
CachedCall cachedCall(exec, func, argCount);
if (exec->hadException())
return JSValue::encode(jsNull());
- JSGlobalData* globalData = &exec->globalData();
+ VM* vm = &exec->vm();
if (source.is8Bit()) {
while (true) {
int* ovector;
- MatchResult result = regExpConstructor->performMatch(*globalData, regExp, string, source, startPosition, &ovector);
+ MatchResult result = regExpConstructor->performMatch(*vm, regExp, string, source, startPosition, &ovector);
if (!result)
break;
@@ -498,7 +498,7 @@
if (matchStart < 0)
cachedCall.setArgument(i, jsUndefined());
else
- cachedCall.setArgument(i, jsSubstring8(globalData, source, matchStart, matchLen));
+ cachedCall.setArgument(i, jsSubstring8(vm, source, matchStart, matchLen));
}
cachedCall.setArgument(i++, jsNumber(result.start));
@@ -523,7 +523,7 @@
} else {
while (true) {
int* ovector;
- MatchResult result = regExpConstructor->performMatch(*globalData, regExp, string, source, startPosition, &ovector);
+ MatchResult result = regExpConstructor->performMatch(*vm, regExp, string, source, startPosition, &ovector);
if (!result)
break;
@@ -537,7 +537,7 @@
if (matchStart < 0)
cachedCall.setArgument(i, jsUndefined());
else
- cachedCall.setArgument(i, jsSubstring(globalData, source, matchStart, matchLen));
+ cachedCall.setArgument(i, jsSubstring(vm, source, matchStart, matchLen));
}
cachedCall.setArgument(i++, jsNumber(result.start));
@@ -561,10 +561,10 @@
}
}
} else {
- JSGlobalData* globalData = &exec->globalData();
+ VM* vm = &exec->vm();
do {
int* ovector;
- MatchResult result = regExpConstructor->performMatch(*globalData, regExp, string, source, startPosition, &ovector);
+ MatchResult result = regExpConstructor->performMatch(*vm, regExp, string, source, startPosition, &ovector);
if (!result)
break;
@@ -810,7 +810,7 @@
return throwVMTypeError(exec);
JSString* string = thisValue.toString(exec);
String s = string->value(exec);
- JSGlobalData* globalData = &exec->globalData();
+ VM* vm = &exec->vm();
JSValue a0 = exec->argument(0);
@@ -832,12 +832,12 @@
* replaced with the result of the expression new RegExp(regexp).
* Per ECMA 15.10.4.1, if a0 is undefined substitute the empty string.
*/
- regExp = RegExp::create(exec->globalData(), a0.isUndefined() ? String("") : a0.toString(exec)->value(exec), NoFlags);
+ regExp = RegExp::create(exec->vm(), a0.isUndefined() ? String("") : a0.toString(exec)->value(exec), NoFlags);
if (!regExp->isValid())
return throwVMError(exec, createSyntaxError(exec, regExp->errorMessage()));
}
RegExpConstructor* regExpConstructor = exec->lexicalGlobalObject()->regExpConstructor();
- MatchResult result = regExpConstructor->performMatch(*globalData, regExp, string, s, 0);
+ MatchResult result = regExpConstructor->performMatch(*vm, regExp, string, s, 0);
// case without 'g' flag is handled like RegExp.prototype.exec
if (!global)
return JSValue::encode(result ? RegExpMatchesArray::create(exec, string, regExp, result) : jsNull());
@@ -850,7 +850,7 @@
list.append(jsSubstring(exec, s, result.start, length));
if (!length)
++end;
- result = regExpConstructor->performMatch(*globalData, regExp, string, s, end);
+ result = regExpConstructor->performMatch(*vm, regExp, string, s, end);
}
if (list.isEmpty()) {
// if there are no matches at all, it's important to return
@@ -869,7 +869,7 @@
return throwVMTypeError(exec);
JSString* string = thisValue.toString(exec);
String s = string->value(exec);
- JSGlobalData* globalData = &exec->globalData();
+ VM* vm = &exec->vm();
JSValue a0 = exec->argument(0);
@@ -883,12 +883,12 @@
* replaced with the result of the expression new RegExp(regexp).
* Per ECMA 15.10.4.1, if a0 is undefined substitute the empty string.
*/
- reg = RegExp::create(exec->globalData(), a0.isUndefined() ? String("") : a0.toString(exec)->value(exec), NoFlags);
+ reg = RegExp::create(exec->vm(), a0.isUndefined() ? String("") : a0.toString(exec)->value(exec), NoFlags);
if (!reg->isValid())
return throwVMError(exec, createSyntaxError(exec, reg->errorMessage()));
}
RegExpConstructor* regExpConstructor = exec->lexicalGlobalObject()->regExpConstructor();
- MatchResult result = regExpConstructor->performMatch(*globalData, reg, string, s, 0);
+ MatchResult result = regExpConstructor->performMatch(*vm, reg, string, s, 0);
return JSValue::encode(result ? jsNumber(result.start) : jsNumber(-1));
}
@@ -978,7 +978,7 @@
// otherwise let R = ToString(separator).
JSValue separatorValue = exec->argument(0);
if (separatorValue.inherits(&RegExpObject::s_info)) {
- JSGlobalData* globalData = &exec->globalData();
+ VM* vm = &exec->vm();
RegExp* reg = asRegExpObject(separatorValue)->regExp();
// 9. If lim == 0, return A.
@@ -1001,7 +1001,7 @@
// c. Call the [[DefineOwnProperty]] internal method of A with arguments "0",
// Property Descriptor {[[Value]]: S, [[Writable]]: true, [[Enumerable]]: true, [[Configurable]]: true}, and false.
// d. Return A.
- if (!reg->match(*globalData, input, 0))
+ if (!reg->match(*vm, input, 0))
result->putDirectIndex(exec, 0, jsStringWithReuse(exec, thisValue, input));
return JSValue::encode(result);
}
@@ -1012,7 +1012,7 @@
while (matchPosition < input.length()) {
// a. Call SplitMatch(S, q, R) and let z be its MatchResult result.
Vector<int, 32> ovector;
- int mpos = reg->match(*globalData, input, matchPosition, ovector);
+ int mpos = reg->match(*vm, input, matchPosition, ovector);
// b. If z is failure, then let q = q + 1.
if (mpos < 0)
break;
diff --git a/Source/JavaScriptCore/runtime/StringPrototype.h b/Source/JavaScriptCore/runtime/StringPrototype.h
index 6d36804..a7aca4c 100644
--- a/Source/JavaScriptCore/runtime/StringPrototype.h
+++ b/Source/JavaScriptCore/runtime/StringPrototype.h
@@ -36,9 +36,9 @@
static StringPrototype* create(ExecState*, JSGlobalObject*, Structure*);
- static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype)
+ static Structure* createStructure(VM& vm, JSGlobalObject* globalObject, JSValue prototype)
{
- return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), &s_info);
+ return Structure::create(vm, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), &s_info);
}
static const ClassInfo s_info;
diff --git a/Source/JavaScriptCore/runtime/StringRecursionChecker.h b/Source/JavaScriptCore/runtime/StringRecursionChecker.h
index a1b4a51..07dc25a 100644
--- a/Source/JavaScriptCore/runtime/StringRecursionChecker.h
+++ b/Source/JavaScriptCore/runtime/StringRecursionChecker.h
@@ -52,7 +52,7 @@
const StackBounds& nativeStack = wtfThreadData().stack();
if (!nativeStack.isSafeToRecurse())
return throwStackOverflowError();
- bool alreadyVisited = !m_exec->globalData().stringRecursionCheckVisitedObjects.add(m_thisObject).isNewEntry;
+ bool alreadyVisited = !m_exec->vm().stringRecursionCheckVisitedObjects.add(m_thisObject).isNewEntry;
if (alreadyVisited)
return emptyString(); // Return empty string to avoid infinite recursion.
return JSValue(); // Indicate success.
@@ -74,8 +74,8 @@
{
if (m_earlyReturnValue)
return;
- ASSERT(m_exec->globalData().stringRecursionCheckVisitedObjects.contains(m_thisObject));
- m_exec->globalData().stringRecursionCheckVisitedObjects.remove(m_thisObject);
+ ASSERT(m_exec->vm().stringRecursionCheckVisitedObjects.contains(m_thisObject));
+ m_exec->vm().stringRecursionCheckVisitedObjects.remove(m_thisObject);
}
}
diff --git a/Source/JavaScriptCore/runtime/Structure.cpp b/Source/JavaScriptCore/runtime/Structure.cpp
index ab98481..f551eae 100644
--- a/Source/JavaScriptCore/runtime/Structure.cpp
+++ b/Source/JavaScriptCore/runtime/Structure.cpp
@@ -81,21 +81,21 @@
return map()->get(make_pair(rep, attributes));
}
-inline void StructureTransitionTable::add(JSGlobalData& globalData, Structure* structure)
+inline void StructureTransitionTable::add(VM& vm, Structure* structure)
{
if (isUsingSingleSlot()) {
Structure* existingTransition = singleTransition();
// This handles the first transition being added.
if (!existingTransition) {
- setSingleTransition(globalData, structure);
+ setSingleTransition(vm, structure);
return;
}
// This handles the second transition being added
// (or the first transition being despecified!)
setMap(new TransitionMap());
- add(globalData, existingTransition);
+ add(vm, existingTransition);
}
// Add the structure to the map.
@@ -151,10 +151,10 @@
#endif
}
-Structure::Structure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype, const TypeInfo& typeInfo, const ClassInfo* classInfo, IndexingType indexingType, unsigned inlineCapacity)
- : JSCell(globalData, globalData.structureStructure.get())
- , m_globalObject(globalData, this, globalObject, WriteBarrier<JSGlobalObject>::MayBeNull)
- , m_prototype(globalData, this, prototype)
+Structure::Structure(VM& vm, JSGlobalObject* globalObject, JSValue prototype, const TypeInfo& typeInfo, const ClassInfo* classInfo, IndexingType indexingType, unsigned inlineCapacity)
+ : JSCell(vm, vm.structureStructure.get())
+ , m_globalObject(vm, this, globalObject, WriteBarrier<JSGlobalObject>::MayBeNull)
+ , m_prototype(vm, this, prototype)
, m_classInfo(classInfo)
, m_transitionWatchpointSet(InitializedWatching)
, m_offset(invalidOffset)
@@ -179,9 +179,9 @@
const ClassInfo Structure::s_info = { "Structure", 0, 0, 0, CREATE_METHOD_TABLE(Structure) };
-Structure::Structure(JSGlobalData& globalData)
+Structure::Structure(VM& vm)
: JSCell(CreatingEarlyCell)
- , m_prototype(globalData, this, jsNull())
+ , m_prototype(vm, this, jsNull())
, m_classInfo(&s_info)
, m_transitionWatchpointSet(InitializedWatching)
, m_offset(invalidOffset)
@@ -201,9 +201,9 @@
{
}
-Structure::Structure(JSGlobalData& globalData, const Structure* previous)
- : JSCell(globalData, globalData.structureStructure.get())
- , m_prototype(globalData, this, previous->storedPrototype())
+Structure::Structure(VM& vm, const Structure* previous)
+ : JSCell(vm, vm.structureStructure.get())
+ , m_prototype(vm, this, previous->storedPrototype())
, m_classInfo(previous->m_classInfo)
, m_transitionWatchpointSet(InitializedWatching)
, m_offset(invalidOffset)
@@ -222,13 +222,13 @@
, m_staticFunctionReified(previous->m_staticFunctionReified)
{
if (previous->typeInfo().structureHasRareData() && previous->rareData()->needsCloning())
- cloneRareDataFrom(globalData, previous);
+ cloneRareDataFrom(vm, previous);
else if (previous->previousID())
- m_previousOrRareData.set(globalData, this, previous->previousID());
+ m_previousOrRareData.set(vm, this, previous->previousID());
previous->notifyTransitionFromThisStructure();
if (previous->m_globalObject)
- m_globalObject.set(globalData, this, previous->m_globalObject.get());
+ m_globalObject.set(vm, this, previous->m_globalObject.get());
}
void Structure::destroy(JSCell* cell)
@@ -236,7 +236,7 @@
static_cast<Structure*>(cell)->Structure::~Structure();
}
-void Structure::materializePropertyMap(JSGlobalData& globalData)
+void Structure::materializePropertyMap(VM& vm)
{
ASSERT(structure()->classInfo() == &s_info);
ASSERT(!propertyTable());
@@ -252,7 +252,7 @@
ASSERT(structure->propertyTable());
ASSERT(!structure->previousID());
- propertyTable().set(globalData, this, structure->propertyTable()->copy(globalData, 0, numberOfSlotsForLastOffset(m_offset, m_inlineCapacity)));
+ propertyTable().set(vm, this, structure->propertyTable()->copy(vm, 0, numberOfSlotsForLastOffset(m_offset, m_inlineCapacity)));
break;
}
@@ -260,13 +260,13 @@
}
if (!propertyTable())
- createPropertyMap(globalData, numberOfSlotsForLastOffset(m_offset, m_inlineCapacity));
+ createPropertyMap(vm, numberOfSlotsForLastOffset(m_offset, m_inlineCapacity));
for (ptrdiff_t i = structures.size() - 1; i >= 0; --i) {
structure = structures[i];
if (!structure->m_nameInPrevious)
continue;
- PropertyMapEntry entry(globalData, this, structure->m_nameInPrevious.get(), structure->m_offset, structure->m_attributesInPrevious, structure->m_specificValueInPrevious.get());
+ PropertyMapEntry entry(vm, this, structure->m_nameInPrevious.get(), structure->m_offset, structure->m_attributesInPrevious, structure->m_specificValueInPrevious.get());
propertyTable()->add(entry, m_offset, PropertyTable::PropertyOffsetMustNotChange);
}
@@ -285,11 +285,11 @@
return nextOutOfLineStorageCapacity(outOfLineCapacity());
}
-void Structure::despecifyDictionaryFunction(JSGlobalData& globalData, PropertyName propertyName)
+void Structure::despecifyDictionaryFunction(VM& vm, PropertyName propertyName)
{
StringImpl* rep = propertyName.uid();
- materializePropertyMapIfNecessary(globalData);
+ materializePropertyMapIfNecessary(vm);
ASSERT(isDictionary());
ASSERT(propertyTable());
@@ -344,7 +344,7 @@
return AllocateArrayStorage;
}
-Structure* Structure::addPropertyTransition(JSGlobalData& globalData, Structure* structure, PropertyName propertyName, unsigned attributes, JSCell* specificValue, PropertyOffset& offset)
+Structure* Structure::addPropertyTransition(VM& vm, Structure* structure, PropertyName propertyName, unsigned attributes, JSCell* specificValue, PropertyOffset& offset)
{
// If we have a specific function, we may have got to this point if there is
// already a transition with the correct property name and attributes, but
@@ -364,36 +364,36 @@
specificValue = 0;
if (structure->transitionCount() > s_maxTransitionLength) {
- Structure* transition = toCacheableDictionaryTransition(globalData, structure);
+ Structure* transition = toCacheableDictionaryTransition(vm, structure);
ASSERT(structure != transition);
- offset = transition->putSpecificValue(globalData, propertyName, attributes, specificValue);
+ offset = transition->putSpecificValue(vm, propertyName, attributes, specificValue);
return transition;
}
- Structure* transition = create(globalData, structure);
+ Structure* transition = create(vm, structure);
- transition->m_cachedPrototypeChain.setMayBeNull(globalData, transition, structure->m_cachedPrototypeChain.get());
- transition->setPreviousID(globalData, transition, structure);
+ transition->m_cachedPrototypeChain.setMayBeNull(vm, transition, structure->m_cachedPrototypeChain.get());
+ transition->setPreviousID(vm, transition, structure);
transition->m_nameInPrevious = propertyName.uid();
transition->m_attributesInPrevious = attributes;
- transition->m_specificValueInPrevious.setMayBeNull(globalData, transition, specificValue);
- transition->propertyTable().set(globalData, transition, structure->takePropertyTableOrCloneIfPinned(globalData, transition));
+ transition->m_specificValueInPrevious.setMayBeNull(vm, transition, specificValue);
+ transition->propertyTable().set(vm, transition, structure->takePropertyTableOrCloneIfPinned(vm, transition));
transition->m_offset = structure->m_offset;
- offset = transition->putSpecificValue(globalData, propertyName, attributes, specificValue);
+ offset = transition->putSpecificValue(vm, propertyName, attributes, specificValue);
checkOffset(transition->m_offset, transition->inlineCapacity());
- structure->m_transitionTable.add(globalData, transition);
+ structure->m_transitionTable.add(vm, transition);
transition->checkOffsetConsistency();
structure->checkOffsetConsistency();
return transition;
}
-Structure* Structure::removePropertyTransition(JSGlobalData& globalData, Structure* structure, PropertyName propertyName, PropertyOffset& offset)
+Structure* Structure::removePropertyTransition(VM& vm, Structure* structure, PropertyName propertyName, PropertyOffset& offset)
{
ASSERT(!structure->isUncacheableDictionary());
- Structure* transition = toUncacheableDictionaryTransition(globalData, structure);
+ Structure* transition = toUncacheableDictionaryTransition(vm, structure);
offset = transition->remove(propertyName);
@@ -401,14 +401,14 @@
return transition;
}
-Structure* Structure::changePrototypeTransition(JSGlobalData& globalData, Structure* structure, JSValue prototype)
+Structure* Structure::changePrototypeTransition(VM& vm, Structure* structure, JSValue prototype)
{
- Structure* transition = create(globalData, structure);
+ Structure* transition = create(vm, structure);
- transition->m_prototype.set(globalData, transition, prototype);
+ transition->m_prototype.set(vm, transition, prototype);
- structure->materializePropertyMapIfNecessary(globalData);
- transition->propertyTable().set(globalData, transition, structure->copyPropertyTableForPinning(globalData, transition));
+ structure->materializePropertyMapIfNecessary(vm);
+ transition->propertyTable().set(vm, transition, structure->copyPropertyTableForPinning(vm, transition));
transition->m_offset = structure->m_offset;
transition->pin();
@@ -416,22 +416,22 @@
return transition;
}
-Structure* Structure::despecifyFunctionTransition(JSGlobalData& globalData, Structure* structure, PropertyName replaceFunction)
+Structure* Structure::despecifyFunctionTransition(VM& vm, Structure* structure, PropertyName replaceFunction)
{
ASSERT(structure->m_specificFunctionThrashCount < maxSpecificFunctionThrashCount);
- Structure* transition = create(globalData, structure);
+ Structure* transition = create(vm, structure);
++transition->m_specificFunctionThrashCount;
- structure->materializePropertyMapIfNecessary(globalData);
- transition->propertyTable().set(globalData, transition, structure->copyPropertyTableForPinning(globalData, transition));
+ structure->materializePropertyMapIfNecessary(vm);
+ transition->propertyTable().set(vm, transition, structure->copyPropertyTableForPinning(vm, transition));
transition->m_offset = structure->m_offset;
transition->pin();
if (transition->m_specificFunctionThrashCount == maxSpecificFunctionThrashCount)
- transition->despecifyAllFunctions(globalData);
+ transition->despecifyAllFunctions(vm);
else {
- bool removed = transition->despecifyFunction(globalData, replaceFunction);
+ bool removed = transition->despecifyFunction(vm, replaceFunction);
ASSERT_UNUSED(removed, removed);
}
@@ -439,13 +439,13 @@
return transition;
}
-Structure* Structure::attributeChangeTransition(JSGlobalData& globalData, Structure* structure, PropertyName propertyName, unsigned attributes)
+Structure* Structure::attributeChangeTransition(VM& vm, Structure* structure, PropertyName propertyName, unsigned attributes)
{
if (!structure->isUncacheableDictionary()) {
- Structure* transition = create(globalData, structure);
+ Structure* transition = create(vm, structure);
- structure->materializePropertyMapIfNecessary(globalData);
- transition->propertyTable().set(globalData, transition, structure->copyPropertyTableForPinning(globalData, transition));
+ structure->materializePropertyMapIfNecessary(vm);
+ transition->propertyTable().set(vm, transition, structure->copyPropertyTableForPinning(vm, transition));
transition->m_offset = structure->m_offset;
transition->pin();
@@ -461,14 +461,14 @@
return structure;
}
-Structure* Structure::toDictionaryTransition(JSGlobalData& globalData, Structure* structure, DictionaryKind kind)
+Structure* Structure::toDictionaryTransition(VM& vm, Structure* structure, DictionaryKind kind)
{
ASSERT(!structure->isUncacheableDictionary());
- Structure* transition = create(globalData, structure);
+ Structure* transition = create(vm, structure);
- structure->materializePropertyMapIfNecessary(globalData);
- transition->propertyTable().set(globalData, transition, structure->copyPropertyTableForPinning(globalData, transition));
+ structure->materializePropertyMapIfNecessary(vm);
+ transition->propertyTable().set(vm, transition, structure->copyPropertyTableForPinning(vm, transition));
transition->m_offset = structure->m_offset;
transition->m_dictionaryKind = kind;
transition->pin();
@@ -477,20 +477,20 @@
return transition;
}
-Structure* Structure::toCacheableDictionaryTransition(JSGlobalData& globalData, Structure* structure)
+Structure* Structure::toCacheableDictionaryTransition(VM& vm, Structure* structure)
{
- return toDictionaryTransition(globalData, structure, CachedDictionaryKind);
+ return toDictionaryTransition(vm, structure, CachedDictionaryKind);
}
-Structure* Structure::toUncacheableDictionaryTransition(JSGlobalData& globalData, Structure* structure)
+Structure* Structure::toUncacheableDictionaryTransition(VM& vm, Structure* structure)
{
- return toDictionaryTransition(globalData, structure, UncachedDictionaryKind);
+ return toDictionaryTransition(vm, structure, UncachedDictionaryKind);
}
// In future we may want to cache this transition.
-Structure* Structure::sealTransition(JSGlobalData& globalData, Structure* structure)
+Structure* Structure::sealTransition(VM& vm, Structure* structure)
{
- Structure* transition = preventExtensionsTransition(globalData, structure);
+ Structure* transition = preventExtensionsTransition(vm, structure);
if (transition->propertyTable()) {
PropertyTable::iterator end = transition->propertyTable()->end();
@@ -503,9 +503,9 @@
}
// In future we may want to cache this transition.
-Structure* Structure::freezeTransition(JSGlobalData& globalData, Structure* structure)
+Structure* Structure::freezeTransition(VM& vm, Structure* structure)
{
- Structure* transition = preventExtensionsTransition(globalData, structure);
+ Structure* transition = preventExtensionsTransition(vm, structure);
if (transition->propertyTable()) {
PropertyTable::iterator iter = transition->propertyTable()->begin();
@@ -521,14 +521,14 @@
}
// In future we may want to cache this transition.
-Structure* Structure::preventExtensionsTransition(JSGlobalData& globalData, Structure* structure)
+Structure* Structure::preventExtensionsTransition(VM& vm, Structure* structure)
{
- Structure* transition = create(globalData, structure);
+ Structure* transition = create(vm, structure);
// Don't set m_offset, as one can not transition to this.
- structure->materializePropertyMapIfNecessary(globalData);
- transition->propertyTable().set(globalData, transition, structure->copyPropertyTableForPinning(globalData, transition));
+ structure->materializePropertyMapIfNecessary(vm);
+ transition->propertyTable().set(vm, transition, structure->copyPropertyTableForPinning(vm, transition));
transition->m_offset = structure->m_offset;
transition->m_preventExtensions = true;
transition->pin();
@@ -537,17 +537,17 @@
return transition;
}
-PropertyTable* Structure::takePropertyTableOrCloneIfPinned(JSGlobalData& globalData, Structure* owner)
+PropertyTable* Structure::takePropertyTableOrCloneIfPinned(VM& vm, Structure* owner)
{
- materializePropertyMapIfNecessaryForPinning(globalData);
+ materializePropertyMapIfNecessaryForPinning(vm);
if (m_isPinnedPropertyTable)
- return propertyTable()->copy(globalData, owner, propertyTable()->size() + 1);
+ return propertyTable()->copy(vm, owner, propertyTable()->size() + 1);
PropertyTable* takenPropertyTable = propertyTable().get();
propertyTable().clear();
return takenPropertyTable;
}
-Structure* Structure::nonPropertyTransition(JSGlobalData& globalData, Structure* structure, NonPropertyTransition transitionKind)
+Structure* Structure::nonPropertyTransition(VM& vm, Structure* structure, NonPropertyTransition transitionKind)
{
unsigned attributes = toAttributes(transitionKind);
IndexingType indexingType = newIndexingType(structure->indexingTypeIncludingHistory(), transitionKind);
@@ -568,26 +568,26 @@
return existingTransition;
}
- Structure* transition = create(globalData, structure);
- transition->setPreviousID(globalData, transition, structure);
+ Structure* transition = create(vm, structure);
+ transition->setPreviousID(vm, transition, structure);
transition->m_attributesInPrevious = attributes;
transition->m_indexingType = indexingType;
- transition->propertyTable().set(globalData, transition, structure->takePropertyTableOrCloneIfPinned(globalData, transition));
+ transition->propertyTable().set(vm, transition, structure->takePropertyTableOrCloneIfPinned(vm, transition));
transition->m_offset = structure->m_offset;
checkOffset(transition->m_offset, transition->inlineCapacity());
- structure->m_transitionTable.add(globalData, transition);
+ structure->m_transitionTable.add(vm, transition);
transition->checkOffsetConsistency();
return transition;
}
// In future we may want to cache this property.
-bool Structure::isSealed(JSGlobalData& globalData)
+bool Structure::isSealed(VM& vm)
{
if (isExtensible())
return false;
- materializePropertyMapIfNecessary(globalData);
+ materializePropertyMapIfNecessary(vm);
if (!propertyTable())
return true;
@@ -600,12 +600,12 @@
}
// In future we may want to cache this property.
-bool Structure::isFrozen(JSGlobalData& globalData)
+bool Structure::isFrozen(VM& vm)
{
if (isExtensible())
return false;
- materializePropertyMapIfNecessary(globalData);
+ materializePropertyMapIfNecessary(vm);
if (!propertyTable())
return true;
@@ -619,7 +619,7 @@
return true;
}
-Structure* Structure::flattenDictionaryStructure(JSGlobalData& globalData, JSObject* object)
+Structure* Structure::flattenDictionaryStructure(VM& vm, JSObject* object)
{
checkOffsetConsistency();
ASSERT(isDictionary());
@@ -642,7 +642,7 @@
// Copies in our values to their compacted locations.
for (unsigned i = 0; i < propertyCount; i++)
- object->putDirect(globalData, offsetForPropertyNumber(i, m_inlineCapacity), values[i]);
+ object->putDirect(vm, offsetForPropertyNumber(i, m_inlineCapacity), values[i]);
propertyTable()->clearDeletedOffsets();
checkOffsetConsistency();
@@ -652,26 +652,26 @@
return this;
}
-PropertyOffset Structure::addPropertyWithoutTransition(JSGlobalData& globalData, PropertyName propertyName, unsigned attributes, JSCell* specificValue)
+PropertyOffset Structure::addPropertyWithoutTransition(VM& vm, PropertyName propertyName, unsigned attributes, JSCell* specificValue)
{
ASSERT(!enumerationCache());
if (m_specificFunctionThrashCount == maxSpecificFunctionThrashCount)
specificValue = 0;
- materializePropertyMapIfNecessaryForPinning(globalData);
+ materializePropertyMapIfNecessaryForPinning(vm);
pin();
- return putSpecificValue(globalData, propertyName, attributes, specificValue);
+ return putSpecificValue(vm, propertyName, attributes, specificValue);
}
-PropertyOffset Structure::removePropertyWithoutTransition(JSGlobalData& globalData, PropertyName propertyName)
+PropertyOffset Structure::removePropertyWithoutTransition(VM& vm, PropertyName propertyName)
{
ASSERT(isUncacheableDictionary());
ASSERT(!enumerationCache());
- materializePropertyMapIfNecessaryForPinning(globalData);
+ materializePropertyMapIfNecessaryForPinning(vm);
pin();
return remove(propertyName);
@@ -685,20 +685,20 @@
m_nameInPrevious.clear();
}
-void Structure::allocateRareData(JSGlobalData& globalData)
+void Structure::allocateRareData(VM& vm)
{
ASSERT(!typeInfo().structureHasRareData());
- StructureRareData* rareData = StructureRareData::create(globalData, previous());
+ StructureRareData* rareData = StructureRareData::create(vm, previous());
m_typeInfo = TypeInfo(typeInfo().type(), typeInfo().flags() | StructureHasRareData);
- m_previousOrRareData.set(globalData, this, rareData);
+ m_previousOrRareData.set(vm, this, rareData);
}
-void Structure::cloneRareDataFrom(JSGlobalData& globalData, const Structure* other)
+void Structure::cloneRareDataFrom(VM& vm, const Structure* other)
{
ASSERT(other->typeInfo().structureHasRareData());
- StructureRareData* newRareData = StructureRareData::clone(globalData, other->rareData());
+ StructureRareData* newRareData = StructureRareData::clone(vm, other->rareData());
m_typeInfo = TypeInfo(typeInfo().type(), typeInfo().flags() | StructureHasRareData);
- m_previousOrRareData.set(globalData, this, newRareData);
+ m_previousOrRareData.set(vm, this, newRareData);
}
#if DUMP_PROPERTYMAP_STATS
@@ -729,25 +729,25 @@
#endif
-PropertyTable* Structure::copyPropertyTable(JSGlobalData& globalData, Structure* owner)
+PropertyTable* Structure::copyPropertyTable(VM& vm, Structure* owner)
{
if (!propertyTable())
return 0;
- return PropertyTable::clone(globalData, owner, *propertyTable().get());
+ return PropertyTable::clone(vm, owner, *propertyTable().get());
}
-PropertyTable* Structure::copyPropertyTableForPinning(JSGlobalData& globalData, Structure* owner)
+PropertyTable* Structure::copyPropertyTableForPinning(VM& vm, Structure* owner)
{
if (propertyTable())
- return PropertyTable::clone(globalData, owner, *propertyTable().get());
- return PropertyTable::create(globalData, numberOfSlotsForLastOffset(m_offset, m_inlineCapacity));
+ return PropertyTable::clone(vm, owner, *propertyTable().get());
+ return PropertyTable::create(vm, numberOfSlotsForLastOffset(m_offset, m_inlineCapacity));
}
-PropertyOffset Structure::get(JSGlobalData& globalData, PropertyName propertyName, unsigned& attributes, JSCell*& specificValue)
+PropertyOffset Structure::get(VM& vm, PropertyName propertyName, unsigned& attributes, JSCell*& specificValue)
{
ASSERT(structure()->classInfo() == &s_info);
- materializePropertyMapIfNecessary(globalData);
+ materializePropertyMapIfNecessary(vm);
if (!propertyTable())
return invalidOffset;
@@ -760,9 +760,9 @@
return entry->offset;
}
-bool Structure::despecifyFunction(JSGlobalData& globalData, PropertyName propertyName)
+bool Structure::despecifyFunction(VM& vm, PropertyName propertyName)
{
- materializePropertyMapIfNecessary(globalData);
+ materializePropertyMapIfNecessary(vm);
if (!propertyTable())
return false;
@@ -775,9 +775,9 @@
return true;
}
-void Structure::despecifyAllFunctions(JSGlobalData& globalData)
+void Structure::despecifyAllFunctions(VM& vm)
{
- materializePropertyMapIfNecessary(globalData);
+ materializePropertyMapIfNecessary(vm);
if (!propertyTable())
return;
@@ -786,9 +786,9 @@
iter->specificValue.clear();
}
-PropertyOffset Structure::putSpecificValue(JSGlobalData& globalData, PropertyName propertyName, unsigned attributes, JSCell* specificValue)
+PropertyOffset Structure::putSpecificValue(VM& vm, PropertyName propertyName, unsigned attributes, JSCell* specificValue)
{
- ASSERT(!JSC::isValidOffset(get(globalData, propertyName)));
+ ASSERT(!JSC::isValidOffset(get(vm, propertyName)));
checkConsistency();
if (attributes & DontEnum)
@@ -797,11 +797,11 @@
StringImpl* rep = propertyName.uid();
if (!propertyTable())
- createPropertyMap(globalData);
+ createPropertyMap(vm);
PropertyOffset newOffset = propertyTable()->nextOffset(m_inlineCapacity);
- propertyTable()->add(PropertyMapEntry(globalData, this, rep, newOffset, attributes, specificValue), m_offset, PropertyTable::PropertyOffsetMayChange);
+ propertyTable()->add(PropertyMapEntry(vm, this, rep, newOffset, attributes, specificValue), m_offset, PropertyTable::PropertyOffsetMayChange);
checkConsistency();
return newOffset;
@@ -829,17 +829,17 @@
return offset;
}
-void Structure::createPropertyMap(JSGlobalData& globalData, unsigned capacity)
+void Structure::createPropertyMap(VM& vm, unsigned capacity)
{
ASSERT(!propertyTable());
checkConsistency();
- propertyTable().set(globalData, this, PropertyTable::create(globalData, capacity));
+ propertyTable().set(vm, this, PropertyTable::create(vm, capacity));
}
-void Structure::getPropertyNamesFromStructure(JSGlobalData& globalData, PropertyNameArray& propertyNames, EnumerationMode mode)
+void Structure::getPropertyNamesFromStructure(VM& vm, PropertyNameArray& propertyNames, EnumerationMode mode)
{
- materializePropertyMapIfNecessary(globalData);
+ materializePropertyMapIfNecessary(vm);
if (!propertyTable())
return;
@@ -886,7 +886,7 @@
thisObject->m_propertyTableUnsafe.clear();
}
-bool Structure::prototypeChainMayInterceptStoreTo(JSGlobalData& globalData, PropertyName propertyName)
+bool Structure::prototypeChainMayInterceptStoreTo(VM& vm, PropertyName propertyName)
{
unsigned i = propertyName.asIndex();
if (i != PropertyName::NotAnIndex)
@@ -901,7 +901,7 @@
unsigned attributes;
JSCell* specificValue;
- PropertyOffset offset = current->get(globalData, propertyName, attributes, specificValue);
+ PropertyOffset offset = current->get(vm, propertyName, attributes, specificValue);
if (!JSC::isValidOffset(offset))
continue;
diff --git a/Source/JavaScriptCore/runtime/Structure.h b/Source/JavaScriptCore/runtime/Structure.h
index 370f0df..45379ef 100644
--- a/Source/JavaScriptCore/runtime/Structure.h
+++ b/Source/JavaScriptCore/runtime/Structure.h
@@ -69,57 +69,57 @@
typedef JSCell Base;
- static Structure* create(JSGlobalData&, JSGlobalObject*, JSValue prototype, const TypeInfo&, const ClassInfo*, IndexingType = NonArray, unsigned inlineCapacity = 0);
+ static Structure* create(VM&, JSGlobalObject*, JSValue prototype, const TypeInfo&, const ClassInfo*, IndexingType = NonArray, unsigned inlineCapacity = 0);
protected:
- void finishCreation(JSGlobalData& globalData)
+ void finishCreation(VM& vm)
{
- Base::finishCreation(globalData);
+ Base::finishCreation(vm);
ASSERT(m_prototype);
ASSERT(m_prototype.isObject() || m_prototype.isNull());
}
- void finishCreation(JSGlobalData& globalData, CreatingEarlyCellTag)
+ void finishCreation(VM& vm, CreatingEarlyCellTag)
{
- Base::finishCreation(globalData, this, CreatingEarlyCell);
+ Base::finishCreation(vm, this, CreatingEarlyCell);
ASSERT(m_prototype);
ASSERT(m_prototype.isNull());
- ASSERT(!globalData.structureStructure);
+ ASSERT(!vm.structureStructure);
}
public:
static void dumpStatistics();
- JS_EXPORT_PRIVATE static Structure* addPropertyTransition(JSGlobalData&, Structure*, PropertyName, unsigned attributes, JSCell* specificValue, PropertyOffset&);
+ JS_EXPORT_PRIVATE static Structure* addPropertyTransition(VM&, Structure*, PropertyName, unsigned attributes, JSCell* specificValue, PropertyOffset&);
JS_EXPORT_PRIVATE static Structure* addPropertyTransitionToExistingStructure(Structure*, PropertyName, unsigned attributes, JSCell* specificValue, PropertyOffset&);
- static Structure* removePropertyTransition(JSGlobalData&, Structure*, PropertyName, PropertyOffset&);
- JS_EXPORT_PRIVATE static Structure* changePrototypeTransition(JSGlobalData&, Structure*, JSValue prototype);
- JS_EXPORT_PRIVATE static Structure* despecifyFunctionTransition(JSGlobalData&, Structure*, PropertyName);
- static Structure* attributeChangeTransition(JSGlobalData&, Structure*, PropertyName, unsigned attributes);
- static Structure* toCacheableDictionaryTransition(JSGlobalData&, Structure*);
- static Structure* toUncacheableDictionaryTransition(JSGlobalData&, Structure*);
- static Structure* sealTransition(JSGlobalData&, Structure*);
- static Structure* freezeTransition(JSGlobalData&, Structure*);
- static Structure* preventExtensionsTransition(JSGlobalData&, Structure*);
- static Structure* nonPropertyTransition(JSGlobalData&, Structure*, NonPropertyTransition);
+ static Structure* removePropertyTransition(VM&, Structure*, PropertyName, PropertyOffset&);
+ JS_EXPORT_PRIVATE static Structure* changePrototypeTransition(VM&, Structure*, JSValue prototype);
+ JS_EXPORT_PRIVATE static Structure* despecifyFunctionTransition(VM&, Structure*, PropertyName);
+ static Structure* attributeChangeTransition(VM&, Structure*, PropertyName, unsigned attributes);
+ static Structure* toCacheableDictionaryTransition(VM&, Structure*);
+ static Structure* toUncacheableDictionaryTransition(VM&, Structure*);
+ static Structure* sealTransition(VM&, Structure*);
+ static Structure* freezeTransition(VM&, Structure*);
+ static Structure* preventExtensionsTransition(VM&, Structure*);
+ static Structure* nonPropertyTransition(VM&, Structure*, NonPropertyTransition);
- bool isSealed(JSGlobalData&);
- bool isFrozen(JSGlobalData&);
+ bool isSealed(VM&);
+ bool isFrozen(VM&);
bool isExtensible() const { return !m_preventExtensions; }
bool didTransition() const { return m_didTransition; }
bool putWillGrowOutOfLineStorage();
JS_EXPORT_PRIVATE size_t suggestedNewOutOfLineStorageCapacity();
- Structure* flattenDictionaryStructure(JSGlobalData&, JSObject*);
+ Structure* flattenDictionaryStructure(VM&, JSObject*);
static const bool needsDestruction = true;
static const bool hasImmortalStructure = true;
static void destroy(JSCell*);
// These should be used with caution.
- JS_EXPORT_PRIVATE PropertyOffset addPropertyWithoutTransition(JSGlobalData&, PropertyName, unsigned attributes, JSCell* specificValue);
- PropertyOffset removePropertyWithoutTransition(JSGlobalData&, PropertyName);
- void setPrototypeWithoutTransition(JSGlobalData& globalData, JSValue prototype) { m_prototype.set(globalData, this, prototype); }
+ JS_EXPORT_PRIVATE PropertyOffset addPropertyWithoutTransition(VM&, PropertyName, unsigned attributes, JSCell* specificValue);
+ PropertyOffset removePropertyWithoutTransition(VM&, PropertyName);
+ void setPrototypeWithoutTransition(VM& vm, JSValue prototype) { m_prototype.set(vm, this, prototype); }
bool isDictionary() const { return m_dictionaryKind != NoneDictionaryKind; }
bool isUncacheableDictionary() const { return m_dictionaryKind == UncachedDictionaryKind; }
@@ -144,18 +144,18 @@
NonPropertyTransition suggestedArrayStorageTransition() const;
JSGlobalObject* globalObject() const { return m_globalObject.get(); }
- void setGlobalObject(JSGlobalData& globalData, JSGlobalObject* globalObject) { m_globalObject.set(globalData, this, globalObject); }
+ void setGlobalObject(VM& vm, JSGlobalObject* globalObject) { m_globalObject.set(vm, this, globalObject); }
JSValue storedPrototype() const { return m_prototype.get(); }
JSValue prototypeForLookup(ExecState*) const;
JSValue prototypeForLookup(JSGlobalObject*) const;
JSValue prototypeForLookup(CodeBlock*) const;
- StructureChain* prototypeChain(JSGlobalData&, JSGlobalObject*) const;
+ StructureChain* prototypeChain(VM&, JSGlobalObject*) const;
StructureChain* prototypeChain(ExecState*) const;
static void visitChildren(JSCell*, SlotVisitor&);
// Will just the prototype chain intercept this property access?
- bool prototypeChainMayInterceptStoreTo(JSGlobalData&, PropertyName);
+ bool prototypeChainMayInterceptStoreTo(VM&, PropertyName);
bool transitionDidInvolveSpecificValue() const { return !!m_specificValueInPrevious; }
@@ -231,9 +231,9 @@
bool masqueradesAsUndefined(JSGlobalObject* lexicalGlobalObject);
- PropertyOffset get(JSGlobalData&, PropertyName);
- PropertyOffset get(JSGlobalData&, const WTF::String& name);
- JS_EXPORT_PRIVATE PropertyOffset get(JSGlobalData&, PropertyName, unsigned& attributes, JSCell*& specificValue);
+ PropertyOffset get(VM&, PropertyName);
+ PropertyOffset get(VM&, const WTF::String& name);
+ JS_EXPORT_PRIVATE PropertyOffset get(VM&, PropertyName, unsigned& attributes, JSCell*& specificValue);
bool hasGetterSetterProperties() const { return m_hasGetterSetterProperties; }
bool hasReadOnlyOrGetterSetterPropertiesExcludingProto() const { return m_hasReadOnlyOrGetterSetterPropertiesExcludingProto; }
@@ -256,12 +256,12 @@
return !JSC::isValidOffset(m_offset);
}
- JS_EXPORT_PRIVATE void despecifyDictionaryFunction(JSGlobalData&, PropertyName);
+ JS_EXPORT_PRIVATE void despecifyDictionaryFunction(VM&, PropertyName);
void disableSpecificFunctionTracking() { m_specificFunctionThrashCount = maxSpecificFunctionThrashCount; }
- void setEnumerationCache(JSGlobalData&, JSPropertyNameIterator* enumerationCache); // Defined in JSPropertyNameIterator.h.
+ void setEnumerationCache(VM&, JSPropertyNameIterator* enumerationCache); // Defined in JSPropertyNameIterator.h.
JSPropertyNameIterator* enumerationCache(); // Defined in JSPropertyNameIterator.h.
- void getPropertyNamesFromStructure(JSGlobalData&, PropertyNameArray&, EnumerationMode);
+ void getPropertyNamesFromStructure(VM&, PropertyNameArray&, EnumerationMode);
JSString* objectToStringValue()
{
@@ -270,11 +270,11 @@
return rareData()->objectToStringValue();
}
- void setObjectToStringValue(JSGlobalData& globalData, const JSCell* owner, JSString* value)
+ void setObjectToStringValue(VM& vm, const JSCell* owner, JSString* value)
{
if (!typeInfo().structureHasRareData())
- allocateRareData(globalData);
- rareData()->setObjectToStringValue(globalData, owner, value);
+ allocateRareData(vm);
+ rareData()->setObjectToStringValue(vm, owner, value);
}
bool staticFunctionsReified()
@@ -319,7 +319,7 @@
return OBJECT_OFFSETOF(Structure, m_indexingType);
}
- static Structure* createStructure(JSGlobalData&);
+ static Structure* createStructure(VM&);
bool transitionWatchpointSetHasBeenInvalidated() const
{
@@ -347,54 +347,54 @@
private:
friend class LLIntOffsetsExtractor;
- JS_EXPORT_PRIVATE Structure(JSGlobalData&, JSGlobalObject*, JSValue prototype, const TypeInfo&, const ClassInfo*, IndexingType, unsigned inlineCapacity);
- Structure(JSGlobalData&);
- Structure(JSGlobalData&, const Structure*);
+ JS_EXPORT_PRIVATE Structure(VM&, JSGlobalObject*, JSValue prototype, const TypeInfo&, const ClassInfo*, IndexingType, unsigned inlineCapacity);
+ Structure(VM&);
+ Structure(VM&, const Structure*);
- static Structure* create(JSGlobalData&, const Structure*);
+ static Structure* create(VM&, const Structure*);
typedef enum {
NoneDictionaryKind = 0,
CachedDictionaryKind = 1,
UncachedDictionaryKind = 2
} DictionaryKind;
- static Structure* toDictionaryTransition(JSGlobalData&, Structure*, DictionaryKind);
+ static Structure* toDictionaryTransition(VM&, Structure*, DictionaryKind);
- PropertyOffset putSpecificValue(JSGlobalData&, PropertyName, unsigned attributes, JSCell* specificValue);
+ PropertyOffset putSpecificValue(VM&, PropertyName, unsigned attributes, JSCell* specificValue);
PropertyOffset remove(PropertyName);
- void createPropertyMap(JSGlobalData&, unsigned keyCount = 0);
+ void createPropertyMap(VM&, unsigned keyCount = 0);
void checkConsistency();
- bool despecifyFunction(JSGlobalData&, PropertyName);
- void despecifyAllFunctions(JSGlobalData&);
+ bool despecifyFunction(VM&, PropertyName);
+ void despecifyAllFunctions(VM&);
WriteBarrier<PropertyTable>& propertyTable();
- PropertyTable* takePropertyTableOrCloneIfPinned(JSGlobalData&, Structure* owner);
- PropertyTable* copyPropertyTable(JSGlobalData&, Structure* owner);
- PropertyTable* copyPropertyTableForPinning(JSGlobalData&, Structure* owner);
- JS_EXPORT_PRIVATE void materializePropertyMap(JSGlobalData&);
- void materializePropertyMapIfNecessary(JSGlobalData& globalData)
+ PropertyTable* takePropertyTableOrCloneIfPinned(VM&, Structure* owner);
+ PropertyTable* copyPropertyTable(VM&, Structure* owner);
+ PropertyTable* copyPropertyTableForPinning(VM&, Structure* owner);
+ JS_EXPORT_PRIVATE void materializePropertyMap(VM&);
+ void materializePropertyMapIfNecessary(VM& vm)
{
ASSERT(structure()->classInfo() == &s_info);
ASSERT(checkOffsetConsistency());
if (!propertyTable() && previousID())
- materializePropertyMap(globalData);
+ materializePropertyMap(vm);
}
- void materializePropertyMapIfNecessaryForPinning(JSGlobalData& globalData)
+ void materializePropertyMapIfNecessaryForPinning(VM& vm)
{
ASSERT(structure()->classInfo() == &s_info);
checkOffsetConsistency();
if (!propertyTable())
- materializePropertyMap(globalData);
+ materializePropertyMap(vm);
}
- void setPreviousID(JSGlobalData& globalData, Structure* transition, Structure* structure)
+ void setPreviousID(VM& vm, Structure* transition, Structure* structure)
{
if (typeInfo().structureHasRareData())
- rareData()->setPreviousID(globalData, transition, structure);
+ rareData()->setPreviousID(vm, transition, structure);
else
- m_previousOrRareData.set(globalData, transition, structure);
+ m_previousOrRareData.set(vm, transition, structure);
}
void clearPreviousID()
@@ -430,8 +430,8 @@
bool checkOffsetConsistency() const;
- void allocateRareData(JSGlobalData&);
- void cloneRareDataFrom(JSGlobalData&, const Structure*);
+ void allocateRareData(VM&);
+ void cloneRareDataFrom(VM&, const Structure*);
static const int s_maxTransitionLength = 64;
diff --git a/Source/JavaScriptCore/runtime/StructureChain.cpp b/Source/JavaScriptCore/runtime/StructureChain.cpp
index 93f0c8d..85abcd3 100644
--- a/Source/JavaScriptCore/runtime/StructureChain.cpp
+++ b/Source/JavaScriptCore/runtime/StructureChain.cpp
@@ -35,8 +35,8 @@
ClassInfo StructureChain::s_info = { "StructureChain", 0, 0, 0, CREATE_METHOD_TABLE(StructureChain) };
-StructureChain::StructureChain(JSGlobalData& globalData, Structure* structure)
- : JSCell(globalData, structure)
+StructureChain::StructureChain(VM& vm, Structure* structure)
+ : JSCell(vm, structure)
{
}
diff --git a/Source/JavaScriptCore/runtime/StructureChain.h b/Source/JavaScriptCore/runtime/StructureChain.h
index 878f606..e652fec 100644
--- a/Source/JavaScriptCore/runtime/StructureChain.h
+++ b/Source/JavaScriptCore/runtime/StructureChain.h
@@ -46,16 +46,16 @@
public:
typedef JSCell Base;
- static StructureChain* create(JSGlobalData& globalData, Structure* head)
+ static StructureChain* create(VM& vm, Structure* head)
{
- StructureChain* chain = new (NotNull, allocateCell<StructureChain>(globalData.heap)) StructureChain(globalData, globalData.structureChainStructure.get());
- chain->finishCreation(globalData, head);
+ StructureChain* chain = new (NotNull, allocateCell<StructureChain>(vm.heap)) StructureChain(vm, vm.structureChainStructure.get());
+ chain->finishCreation(vm, head);
return chain;
}
WriteBarrier<Structure>* head() { return m_vector.get(); }
static void visitChildren(JSCell*, SlotVisitor&);
- static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype) { return Structure::create(globalData, globalObject, prototype, TypeInfo(CompoundType, OverridesVisitChildren), &s_info); }
+ static Structure* createStructure(VM& vm, JSGlobalObject* globalObject, JSValue prototype) { return Structure::create(vm, globalObject, prototype, TypeInfo(CompoundType, OverridesVisitChildren), &s_info); }
static ClassInfo s_info;
@@ -64,9 +64,9 @@
static void destroy(JSCell*);
protected:
- void finishCreation(JSGlobalData& globalData, Structure* head)
+ void finishCreation(VM& vm, Structure* head)
{
- Base::finishCreation(globalData);
+ Base::finishCreation(vm);
size_t size = 0;
for (Structure* current = head; current; current = current->storedPrototype().isNull() ? 0 : asObject(current->storedPrototype())->structure())
++size;
@@ -75,13 +75,13 @@
size_t i = 0;
for (Structure* current = head; current; current = current->storedPrototype().isNull() ? 0 : asObject(current->storedPrototype())->structure())
- m_vector[i++].set(globalData, this, current);
+ m_vector[i++].set(vm, this, current);
}
private:
friend class LLIntOffsetsExtractor;
- StructureChain(JSGlobalData&, Structure*);
+ StructureChain(VM&, Structure*);
OwnArrayPtr<WriteBarrier<Structure> > m_vector;
};
diff --git a/Source/JavaScriptCore/runtime/StructureInlines.h b/Source/JavaScriptCore/runtime/StructureInlines.h
index 61e6e98..75ca40d 100644
--- a/Source/JavaScriptCore/runtime/StructureInlines.h
+++ b/Source/JavaScriptCore/runtime/StructureInlines.h
@@ -31,35 +31,35 @@
namespace JSC {
-inline Structure* Structure::create(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype, const TypeInfo& typeInfo, const ClassInfo* classInfo, IndexingType indexingType, unsigned inlineCapacity)
+inline Structure* Structure::create(VM& vm, JSGlobalObject* globalObject, JSValue prototype, const TypeInfo& typeInfo, const ClassInfo* classInfo, IndexingType indexingType, unsigned inlineCapacity)
{
- ASSERT(globalData.structureStructure);
+ ASSERT(vm.structureStructure);
ASSERT(classInfo);
- Structure* structure = new (NotNull, allocateCell<Structure>(globalData.heap)) Structure(globalData, globalObject, prototype, typeInfo, classInfo, indexingType, inlineCapacity);
- structure->finishCreation(globalData);
+ Structure* structure = new (NotNull, allocateCell<Structure>(vm.heap)) Structure(vm, globalObject, prototype, typeInfo, classInfo, indexingType, inlineCapacity);
+ structure->finishCreation(vm);
return structure;
}
-inline Structure* Structure::createStructure(JSGlobalData& globalData)
+inline Structure* Structure::createStructure(VM& vm)
{
- ASSERT(!globalData.structureStructure);
- Structure* structure = new (NotNull, allocateCell<Structure>(globalData.heap)) Structure(globalData);
- structure->finishCreation(globalData, CreatingEarlyCell);
+ ASSERT(!vm.structureStructure);
+ Structure* structure = new (NotNull, allocateCell<Structure>(vm.heap)) Structure(vm);
+ structure->finishCreation(vm, CreatingEarlyCell);
return structure;
}
-inline Structure* Structure::create(JSGlobalData& globalData, const Structure* structure)
+inline Structure* Structure::create(VM& vm, const Structure* structure)
{
- ASSERT(globalData.structureStructure);
- Structure* newStructure = new (NotNull, allocateCell<Structure>(globalData.heap)) Structure(globalData, structure);
- newStructure->finishCreation(globalData);
+ ASSERT(vm.structureStructure);
+ Structure* newStructure = new (NotNull, allocateCell<Structure>(vm.heap)) Structure(vm, structure);
+ newStructure->finishCreation(vm);
return newStructure;
}
-inline PropertyOffset Structure::get(JSGlobalData& globalData, PropertyName propertyName)
+inline PropertyOffset Structure::get(VM& vm, PropertyName propertyName)
{
ASSERT(structure()->classInfo() == &s_info);
- materializePropertyMapIfNecessary(globalData);
+ materializePropertyMapIfNecessary(vm);
if (!propertyTable())
return invalidOffset;
@@ -67,10 +67,10 @@
return entry ? entry->offset : invalidOffset;
}
-inline PropertyOffset Structure::get(JSGlobalData& globalData, const WTF::String& name)
+inline PropertyOffset Structure::get(VM& vm, const WTF::String& name)
{
ASSERT(structure()->classInfo() == &s_info);
- materializePropertyMapIfNecessary(globalData);
+ materializePropertyMapIfNecessary(vm);
if (!propertyTable())
return invalidOffset;
@@ -113,12 +113,12 @@
return false;
}
-inline void Structure::setEnumerationCache(JSGlobalData& globalData, JSPropertyNameIterator* enumerationCache)
+inline void Structure::setEnumerationCache(VM& vm, JSPropertyNameIterator* enumerationCache)
{
ASSERT(!isDictionary());
if (!typeInfo().structureHasRareData())
- allocateRareData(globalData);
- rareData()->setEnumerationCache(globalData, this, enumerationCache);
+ allocateRareData(vm);
+ rareData()->setEnumerationCache(vm, this, enumerationCache);
}
inline JSPropertyNameIterator* Structure::enumerationCache()
@@ -142,19 +142,19 @@
return prototypeForLookup(exec->lexicalGlobalObject());
}
-inline StructureChain* Structure::prototypeChain(JSGlobalData& globalData, JSGlobalObject* globalObject) const
+inline StructureChain* Structure::prototypeChain(VM& vm, JSGlobalObject* globalObject) const
{
// We cache our prototype chain so our clients can share it.
if (!isValid(globalObject, m_cachedPrototypeChain.get())) {
JSValue prototype = prototypeForLookup(globalObject);
- m_cachedPrototypeChain.set(globalData, this, StructureChain::create(globalData, prototype.isNull() ? 0 : asObject(prototype)->structure()));
+ m_cachedPrototypeChain.set(vm, this, StructureChain::create(vm, prototype.isNull() ? 0 : asObject(prototype)->structure()));
}
return m_cachedPrototypeChain.get();
}
inline StructureChain* Structure::prototypeChain(ExecState* exec) const
{
- return prototypeChain(exec->globalData(), exec->lexicalGlobalObject());
+ return prototypeChain(exec->vm(), exec->lexicalGlobalObject());
}
inline bool Structure::isValid(JSGlobalObject* globalObject, StructureChain* cachedPrototypeChain) const
@@ -200,7 +200,7 @@
ALWAYS_INLINE WriteBarrier<PropertyTable>& Structure::propertyTable()
{
- ASSERT(!globalObject() || !globalObject()->globalData().heap.isBusy());
+ ASSERT(!globalObject() || !globalObject()->vm().heap.isBusy());
return m_propertyTableUnsafe;
}
diff --git a/Source/JavaScriptCore/runtime/StructureRareData.cpp b/Source/JavaScriptCore/runtime/StructureRareData.cpp
index 142d378..00880d3 100644
--- a/Source/JavaScriptCore/runtime/StructureRareData.cpp
+++ b/Source/JavaScriptCore/runtime/StructureRareData.cpp
@@ -33,39 +33,39 @@
const ClassInfo StructureRareData::s_info = { "StructureRareData", 0, 0, 0, CREATE_METHOD_TABLE(StructureRareData) };
-Structure* StructureRareData::createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype)
+Structure* StructureRareData::createStructure(VM& vm, JSGlobalObject* globalObject, JSValue prototype)
{
- return Structure::create(globalData, globalObject, prototype, TypeInfo(CompoundType, StructureFlags), &s_info);
+ return Structure::create(vm, globalObject, prototype, TypeInfo(CompoundType, StructureFlags), &s_info);
}
-StructureRareData* StructureRareData::create(JSGlobalData& globalData, Structure* previous)
+StructureRareData* StructureRareData::create(VM& vm, Structure* previous)
{
- StructureRareData* rareData = new (NotNull, allocateCell<StructureRareData>(globalData.heap)) StructureRareData(globalData, previous);
- rareData->finishCreation(globalData);
+ StructureRareData* rareData = new (NotNull, allocateCell<StructureRareData>(vm.heap)) StructureRareData(vm, previous);
+ rareData->finishCreation(vm);
return rareData;
}
-StructureRareData* StructureRareData::clone(JSGlobalData& globalData, const StructureRareData* other)
+StructureRareData* StructureRareData::clone(VM& vm, const StructureRareData* other)
{
- StructureRareData* newRareData = new (NotNull, allocateCell<StructureRareData>(globalData.heap)) StructureRareData(globalData, other);
- newRareData->finishCreation(globalData);
+ StructureRareData* newRareData = new (NotNull, allocateCell<StructureRareData>(vm.heap)) StructureRareData(vm, other);
+ newRareData->finishCreation(vm);
return newRareData;
}
-StructureRareData::StructureRareData(JSGlobalData& globalData, Structure* previous)
- : JSCell(globalData, globalData.structureRareDataStructure.get())
+StructureRareData::StructureRareData(VM& vm, Structure* previous)
+ : JSCell(vm, vm.structureRareDataStructure.get())
{
if (previous)
- m_previous.set(globalData, this, previous);
+ m_previous.set(vm, this, previous);
}
-StructureRareData::StructureRareData(JSGlobalData& globalData, const StructureRareData* other)
- : JSCell(globalData, other->structure())
+StructureRareData::StructureRareData(VM& vm, const StructureRareData* other)
+ : JSCell(vm, other->structure())
{
if (other->previousID())
- m_previous.set(globalData, this, other->previousID());
+ m_previous.set(vm, this, other->previousID());
if (other->objectToStringValue())
- m_objectToStringValue.set(globalData, this, other->objectToStringValue());
+ m_objectToStringValue.set(vm, this, other->objectToStringValue());
}
void StructureRareData::visitChildren(JSCell* cell, SlotVisitor& visitor)
diff --git a/Source/JavaScriptCore/runtime/StructureRareData.h b/Source/JavaScriptCore/runtime/StructureRareData.h
index fe86837..e5db9e5 100644
--- a/Source/JavaScriptCore/runtime/StructureRareData.h
+++ b/Source/JavaScriptCore/runtime/StructureRareData.h
@@ -38,31 +38,31 @@
class StructureRareData : public JSCell {
friend class Structure;
public:
- static StructureRareData* create(JSGlobalData&, Structure*);
- static StructureRareData* clone(JSGlobalData&, const StructureRareData* other);
+ static StructureRareData* create(VM&, Structure*);
+ static StructureRareData* clone(VM&, const StructureRareData* other);
static void visitChildren(JSCell*, SlotVisitor&);
- static Structure* createStructure(JSGlobalData&, JSGlobalObject*, JSValue prototype);
+ static Structure* createStructure(VM&, JSGlobalObject*, JSValue prototype);
// Returns true if this StructureRareData should also be cloned when cloning the owner Structure.
bool needsCloning() const { return false; }
Structure* previousID() const;
- void setPreviousID(JSGlobalData&, Structure* transition, Structure*);
+ void setPreviousID(VM&, Structure* transition, Structure*);
void clearPreviousID();
JSString* objectToStringValue() const;
- void setObjectToStringValue(JSGlobalData&, const JSCell* owner, JSString* value);
+ void setObjectToStringValue(VM&, const JSCell* owner, JSString* value);
JSPropertyNameIterator* enumerationCache();
- void setEnumerationCache(JSGlobalData&, const Structure* owner, JSPropertyNameIterator* value);
+ void setEnumerationCache(VM&, const Structure* owner, JSPropertyNameIterator* value);
static JS_EXPORTDATA const ClassInfo s_info;
private:
- StructureRareData(JSGlobalData&, Structure*);
- StructureRareData(JSGlobalData&, const StructureRareData*);
+ StructureRareData(VM&, Structure*);
+ StructureRareData(VM&, const StructureRareData*);
static const unsigned StructureFlags = OverridesVisitChildren | JSCell::StructureFlags;
diff --git a/Source/JavaScriptCore/runtime/StructureRareDataInlines.h b/Source/JavaScriptCore/runtime/StructureRareDataInlines.h
index 41bac00..20b7f8b 100644
--- a/Source/JavaScriptCore/runtime/StructureRareDataInlines.h
+++ b/Source/JavaScriptCore/runtime/StructureRareDataInlines.h
@@ -35,9 +35,9 @@
return m_previous.get();
}
-inline void StructureRareData::setPreviousID(JSGlobalData& globalData, Structure* transition, Structure* structure)
+inline void StructureRareData::setPreviousID(VM& vm, Structure* transition, Structure* structure)
{
- m_previous.set(globalData, transition, structure);
+ m_previous.set(vm, transition, structure);
}
inline void StructureRareData::clearPreviousID()
@@ -50,9 +50,9 @@
return m_objectToStringValue.get();
}
-inline void StructureRareData::setObjectToStringValue(JSGlobalData& globalData, const JSCell* owner, JSString* value)
+inline void StructureRareData::setObjectToStringValue(VM& vm, const JSCell* owner, JSString* value)
{
- m_objectToStringValue.set(globalData, owner, value);
+ m_objectToStringValue.set(vm, owner, value);
}
} // namespace JSC
diff --git a/Source/JavaScriptCore/runtime/StructureTransitionTable.h b/Source/JavaScriptCore/runtime/StructureTransitionTable.h
index 706fc5f..6012020 100644
--- a/Source/JavaScriptCore/runtime/StructureTransitionTable.h
+++ b/Source/JavaScriptCore/runtime/StructureTransitionTable.h
@@ -132,7 +132,7 @@
WeakSet::deallocate(impl);
}
- inline void add(JSGlobalData&, Structure*);
+ inline void add(VM&, Structure*);
inline bool contains(StringImpl* rep, unsigned attributes) const;
inline Structure* get(StringImpl* rep, unsigned attributes) const;
@@ -177,7 +177,7 @@
return 0;
}
- void setSingleTransition(JSGlobalData&, Structure* structure)
+ void setSingleTransition(VM&, Structure* structure)
{
ASSERT(isUsingSingleSlot());
if (WeakImpl* impl = this->weakImpl())
diff --git a/Source/JavaScriptCore/runtime/SymbolTable.h b/Source/JavaScriptCore/runtime/SymbolTable.h
index 42ffd1c..cbc664f 100644
--- a/Source/JavaScriptCore/runtime/SymbolTable.h
+++ b/Source/JavaScriptCore/runtime/SymbolTable.h
@@ -346,19 +346,19 @@
public:
typedef JSCell Base;
- static SharedSymbolTable* create(JSGlobalData& globalData)
+ static SharedSymbolTable* create(VM& vm)
{
- SharedSymbolTable* sharedSymbolTable = new (NotNull, allocateCell<SharedSymbolTable>(globalData.heap)) SharedSymbolTable(globalData);
- sharedSymbolTable->finishCreation(globalData);
+ SharedSymbolTable* sharedSymbolTable = new (NotNull, allocateCell<SharedSymbolTable>(vm.heap)) SharedSymbolTable(vm);
+ sharedSymbolTable->finishCreation(vm);
return sharedSymbolTable;
}
static const bool needsDestruction = true;
static const bool hasImmortalStructure = true;
static void destroy(JSCell*);
- static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype)
+ static Structure* createStructure(VM& vm, JSGlobalObject* globalObject, JSValue prototype)
{
- return Structure::create(globalData, globalObject, prototype, TypeInfo(LeafType, StructureFlags), &s_info);
+ return Structure::create(vm, globalObject, prototype, TypeInfo(LeafType, StructureFlags), &s_info);
}
bool usesNonStrictEval() { return m_usesNonStrictEval; }
@@ -383,8 +383,8 @@
static JS_EXPORTDATA const ClassInfo s_info;
private:
- SharedSymbolTable(JSGlobalData& globalData)
- : JSCell(globalData, globalData.sharedSymbolTableStructure.get())
+ SharedSymbolTable(VM& vm)
+ : JSCell(vm, vm.sharedSymbolTableStructure.get())
, m_parameterCountIncludingThis(0)
, m_usesNonStrictEval(false)
, m_captureStart(0)
diff --git a/Source/JavaScriptCore/runtime/JSGlobalData.cpp b/Source/JavaScriptCore/runtime/VM.cpp
similarity index 89%
rename from Source/JavaScriptCore/runtime/JSGlobalData.cpp
rename to Source/JavaScriptCore/runtime/VM.cpp
index 2e7240b..95b6527 100644
--- a/Source/JavaScriptCore/runtime/JSGlobalData.cpp
+++ b/Source/JavaScriptCore/runtime/VM.cpp
@@ -27,7 +27,7 @@
*/
#include "config.h"
-#include "JSGlobalData.h"
+#include "VM.h"
#include "ArgList.h"
#include "CodeCache.h"
@@ -133,13 +133,13 @@
}
#endif // ENABLE(!ASSEMBLER)
-JSGlobalData::JSGlobalData(GlobalDataType globalDataType, HeapType heapType)
+VM::VM(VMType vmType, HeapType heapType)
: m_apiLock(adoptRef(new JSLock(this)))
#if ENABLE(ASSEMBLER)
, executableAllocator(*this)
#endif
, heap(this, heapType)
- , globalDataType(globalDataType)
+ , vmType(vmType)
, clientData(0)
, topCallFrame(CallFrame::noCaller())
, arrayConstructorTable(fastNew<HashTable>(JSC::arrayConstructorTable))
@@ -159,7 +159,7 @@
, regExpConstructorTable(fastNew<HashTable>(JSC::regExpConstructorTable))
, regExpPrototypeTable(fastNew<HashTable>(JSC::regExpPrototypeTable))
, stringConstructorTable(fastNew<HashTable>(JSC::stringConstructorTable))
- , identifierTable(globalDataType == Default ? wtfThreadData().currentIdentifierTable() : createIdentifierTable())
+ , identifierTable(vmType == Default ? wtfThreadData().currentIdentifierTable() : createIdentifierTable())
, propertyNames(new CommonIdentifiers(this))
, emptyList(new MarkedArgumentBuffer)
, parserArena(adoptPtr(new ParserArena))
@@ -264,13 +264,13 @@
#endif
}
-JSGlobalData::~JSGlobalData()
+VM::~VM()
{
// Clear this first to ensure that nobody tries to remove themselves from it.
m_perBytecodeProfiler.clear();
ASSERT(m_apiLock->currentThreadIsHoldingLock());
- m_apiLock->willDestroyGlobalData(this);
+ m_apiLock->willDestroyVM(this);
heap.lastChanceToFinalize();
delete interpreter;
@@ -317,7 +317,7 @@
delete emptyList;
delete propertyNames;
- if (globalDataType != Default)
+ if (vmType != Default)
deleteIdentifierTable(identifierTable);
delete clientData;
@@ -332,40 +332,40 @@
#endif
}
-PassRefPtr<JSGlobalData> JSGlobalData::createContextGroup(HeapType heapType)
+PassRefPtr<VM> VM::createContextGroup(HeapType heapType)
{
- return adoptRef(new JSGlobalData(APIContextGroup, heapType));
+ return adoptRef(new VM(APIContextGroup, heapType));
}
-PassRefPtr<JSGlobalData> JSGlobalData::create(HeapType heapType)
+PassRefPtr<VM> VM::create(HeapType heapType)
{
- return adoptRef(new JSGlobalData(Default, heapType));
+ return adoptRef(new VM(Default, heapType));
}
-PassRefPtr<JSGlobalData> JSGlobalData::createLeaked(HeapType heapType)
+PassRefPtr<VM> VM::createLeaked(HeapType heapType)
{
return create(heapType);
}
-bool JSGlobalData::sharedInstanceExists()
+bool VM::sharedInstanceExists()
{
return sharedInstanceInternal();
}
-JSGlobalData& JSGlobalData::sharedInstance()
+VM& VM::sharedInstance()
{
GlobalJSLock globalLock;
- JSGlobalData*& instance = sharedInstanceInternal();
+ VM*& instance = sharedInstanceInternal();
if (!instance) {
- instance = adoptRef(new JSGlobalData(APIShared, SmallHeap)).leakRef();
+ instance = adoptRef(new VM(APIShared, SmallHeap)).leakRef();
instance->makeUsableFromMultipleThreads();
}
return *instance;
}
-JSGlobalData*& JSGlobalData::sharedInstanceInternal()
+VM*& VM::sharedInstanceInternal()
{
- static JSGlobalData* sharedInstance;
+ static VM* sharedInstance;
return sharedInstance;
}
@@ -400,28 +400,28 @@
}
}
-NativeExecutable* JSGlobalData::getHostFunction(NativeFunction function, NativeFunction constructor)
+NativeExecutable* VM::getHostFunction(NativeFunction function, NativeFunction constructor)
{
return jitStubs->hostFunctionStub(this, function, constructor);
}
-NativeExecutable* JSGlobalData::getHostFunction(NativeFunction function, Intrinsic intrinsic)
+NativeExecutable* VM::getHostFunction(NativeFunction function, Intrinsic intrinsic)
{
ASSERT(canUseJIT());
return jitStubs->hostFunctionStub(this, function, intrinsic != NoIntrinsic ? thunkGeneratorForIntrinsic(intrinsic) : 0, intrinsic);
}
#else // !ENABLE(JIT)
-NativeExecutable* JSGlobalData::getHostFunction(NativeFunction function, NativeFunction constructor)
+NativeExecutable* VM::getHostFunction(NativeFunction function, NativeFunction constructor)
{
return NativeExecutable::create(*this, function, constructor);
}
#endif // !ENABLE(JIT)
-JSGlobalData::ClientData::~ClientData()
+VM::ClientData::~ClientData()
{
}
-void JSGlobalData::resetDateCache()
+void VM::resetDateCache()
{
cachedUTCOffset = QNaN;
dstOffsetCache.reset();
@@ -430,24 +430,24 @@
dateInstanceCache.reset();
}
-void JSGlobalData::startSampling()
+void VM::startSampling()
{
interpreter->startSampling();
}
-void JSGlobalData::stopSampling()
+void VM::stopSampling()
{
interpreter->stopSampling();
}
-void JSGlobalData::discardAllCode()
+void VM::discardAllCode()
{
m_codeCache->clear();
heap.deleteAllCompiledCode();
heap.reportAbandonedObjectGraph();
}
-void JSGlobalData::dumpSampleData(ExecState* exec)
+void VM::dumpSampleData(ExecState* exec)
{
interpreter->dumpSampleData(exec);
#if ENABLE(ASSEMBLER)
@@ -455,7 +455,7 @@
#endif
}
-SourceProviderCache* JSGlobalData::addSourceProviderCache(SourceProvider* sourceProvider)
+SourceProviderCache* VM::addSourceProviderCache(SourceProvider* sourceProvider)
{
SourceProviderCacheMap::AddResult addResult = sourceProviderCacheMap.add(sourceProvider, 0);
if (addResult.isNewEntry)
@@ -463,7 +463,7 @@
return addResult.iterator->value.get();
}
-void JSGlobalData::clearSourceProviderCaches()
+void VM::clearSourceProviderCaches()
{
sourceProviderCacheMap.clear();
}
@@ -481,7 +481,7 @@
}
};
-void JSGlobalData::releaseExecutableMemory()
+void VM::releaseExecutableMemory()
{
if (dynamicGlobalObject) {
StackPreservingRecompiler recompiler;
@@ -513,13 +513,13 @@
heap.collectAllGarbage();
}
-void releaseExecutableMemory(JSGlobalData& globalData)
+void releaseExecutableMemory(VM& vm)
{
- globalData.releaseExecutableMemory();
+ vm.releaseExecutableMemory();
}
#if ENABLE(DFG_JIT)
-void JSGlobalData::gatherConservativeRoots(ConservativeRoots& conservativeRoots)
+void VM::gatherConservativeRoots(ConservativeRoots& conservativeRoots)
{
for (size_t i = 0; i < scratchBuffers.size(); i++) {
ScratchBuffer* scratchBuffer = scratchBuffers[i];
@@ -532,12 +532,12 @@
#endif
#if ENABLE(REGEXP_TRACING)
-void JSGlobalData::addRegExpToTrace(RegExp* regExp)
+void VM::addRegExpToTrace(RegExp* regExp)
{
m_rtTraceList->add(regExp);
}
-void JSGlobalData::dumpRegExpTrace()
+void VM::dumpRegExpTrace()
{
// The first RegExp object is ignored. It is create by the RegExpPrototype ctor and not used.
RTTraceList::iterator iter = ++m_rtTraceList->begin();
@@ -559,7 +559,7 @@
m_rtTraceList->clear();
}
#else
-void JSGlobalData::dumpRegExpTrace()
+void VM::dumpRegExpTrace()
{
}
#endif
diff --git a/Source/JavaScriptCore/runtime/JSGlobalData.h b/Source/JavaScriptCore/runtime/VM.h
similarity index 92%
rename from Source/JavaScriptCore/runtime/JSGlobalData.h
rename to Source/JavaScriptCore/runtime/VM.h
index edd067e..a4a1378 100644
--- a/Source/JavaScriptCore/runtime/JSGlobalData.h
+++ b/Source/JavaScriptCore/runtime/VM.h
@@ -26,8 +26,8 @@
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-#ifndef JSGlobalData_h
-#define JSGlobalData_h
+#ifndef VM_h
+#define VM_h
#include "CachedTranscendentalFunction.h"
#include "DateInstanceCache.h"
@@ -162,31 +162,31 @@
#endif
#endif
- class JSGlobalData : public ThreadSafeRefCounted<JSGlobalData> {
+ class VM : public ThreadSafeRefCounted<VM> {
public:
- // WebCore has a one-to-one mapping of threads to JSGlobalDatas;
+ // WebCore has a one-to-one mapping of threads to VMs;
// either create() or createLeaked() should only be called once
- // on a thread, this is the 'default' JSGlobalData (it uses the
+ // on a thread, this is the 'default' VM (it uses the
// thread's default string uniquing table from wtfThreadData).
// API contexts created using the new context group aware interface
// create APIContextGroup objects which require less locking of JSC
- // than the old singleton APIShared JSGlobalData created for use by
+ // than the old singleton APIShared VM created for use by
// the original API.
- enum GlobalDataType { Default, APIContextGroup, APIShared };
+ enum VMType { Default, APIContextGroup, APIShared };
struct ClientData {
JS_EXPORT_PRIVATE virtual ~ClientData() = 0;
};
- bool isSharedInstance() { return globalDataType == APIShared; }
- bool usingAPI() { return globalDataType != Default; }
+ bool isSharedInstance() { return vmType == APIShared; }
+ bool usingAPI() { return vmType != Default; }
static bool sharedInstanceExists();
- JS_EXPORT_PRIVATE static JSGlobalData& sharedInstance();
+ JS_EXPORT_PRIVATE static VM& sharedInstance();
- JS_EXPORT_PRIVATE static PassRefPtr<JSGlobalData> create(HeapType = SmallHeap);
- JS_EXPORT_PRIVATE static PassRefPtr<JSGlobalData> createLeaked(HeapType = SmallHeap);
- static PassRefPtr<JSGlobalData> createContextGroup(HeapType = SmallHeap);
- JS_EXPORT_PRIVATE ~JSGlobalData();
+ JS_EXPORT_PRIVATE static PassRefPtr<VM> create(HeapType = SmallHeap);
+ JS_EXPORT_PRIVATE static PassRefPtr<VM> createLeaked(HeapType = SmallHeap);
+ static PassRefPtr<VM> createContextGroup(HeapType = SmallHeap);
+ JS_EXPORT_PRIVATE ~VM();
void makeUsableFromMultipleThreads() { heap.machineThreads().makeUsableFromMultipleThreads(); }
@@ -208,7 +208,7 @@
OwnPtr<DFG::LongLivedState> m_dfgState;
#endif // ENABLE(DFG_JIT)
- GlobalDataType globalDataType;
+ VMType vmType;
ClientData* clientData;
ExecState* topCallFrame;
Watchdog watchdog;
@@ -474,8 +474,8 @@
private:
friend class LLIntOffsetsExtractor;
- JSGlobalData(GlobalDataType, HeapType);
- static JSGlobalData*& sharedInstanceInternal();
+ VM(VMType, HeapType);
+ static VM*& sharedInstanceInternal();
void createNativeThunk();
#if ENABLE(ASSEMBLER)
bool m_canUseAssembler;
@@ -504,12 +504,12 @@
};
#if ENABLE(GC_VALIDATION)
- inline bool JSGlobalData::isInitializingObject() const
+ inline bool VM::isInitializingObject() const
{
return !!m_initializingObjectClass;
}
- inline void JSGlobalData::setInitializingObjectClass(const ClassInfo* initializingObjectClass)
+ inline void VM::setInitializingObjectClass(const ClassInfo* initializingObjectClass)
{
m_initializingObjectClass = initializingObjectClass;
}
@@ -517,9 +517,9 @@
inline Heap* WeakSet::heap() const
{
- return &m_globalData->heap;
+ return &m_vm->heap;
}
} // namespace JSC
-#endif // JSGlobalData_h
+#endif // VM_h
diff --git a/Source/JavaScriptCore/runtime/Watchdog.cpp b/Source/JavaScriptCore/runtime/Watchdog.cpp
index f8ba4cf..4ee41d5 100644
--- a/Source/JavaScriptCore/runtime/Watchdog.cpp
+++ b/Source/JavaScriptCore/runtime/Watchdog.cpp
@@ -56,7 +56,7 @@
destroyTimer();
}
-void Watchdog::setTimeLimit(JSGlobalData& globalData, double limit,
+void Watchdog::setTimeLimit(VM& vm, double limit,
ShouldTerminateCallback callback, void* data1, void* data2)
{
bool wasEnabled = isEnabled();
@@ -84,7 +84,7 @@
// And if we've previously compiled any functions, we need to deopt
// them because they don't habe the needed polling checks yet.
- globalData.releaseExecutableMemory();
+ vm.releaseExecutableMemory();
}
startCountdownIfNeeded();
diff --git a/Source/JavaScriptCore/runtime/Watchdog.h b/Source/JavaScriptCore/runtime/Watchdog.h
index 4bb18d1..08c0ccb 100644
--- a/Source/JavaScriptCore/runtime/Watchdog.h
+++ b/Source/JavaScriptCore/runtime/Watchdog.h
@@ -33,7 +33,7 @@
namespace JSC {
class ExecState;
-class JSGlobalData;
+class VM;
class Watchdog {
public:
@@ -43,7 +43,7 @@
~Watchdog();
typedef bool (*ShouldTerminateCallback)(ExecState*, void* data1, void* data2);
- void setTimeLimit(JSGlobalData&, double seconds, ShouldTerminateCallback = 0, void* data1 = 0, void* data2 = 0);
+ void setTimeLimit(VM&, double seconds, ShouldTerminateCallback = 0, void* data1 = 0, void* data2 = 0);
// This version of didFire() will check the elapsed CPU time and call the
// callback (if needed) to determine if the watchdog should fire.
diff --git a/Source/JavaScriptCore/runtime/WriteBarrier.h b/Source/JavaScriptCore/runtime/WriteBarrier.h
index 6fa8b63..fe07cf5 100644
--- a/Source/JavaScriptCore/runtime/WriteBarrier.h
+++ b/Source/JavaScriptCore/runtime/WriteBarrier.h
@@ -35,7 +35,7 @@
namespace JSC {
class JSCell;
-class JSGlobalData;
+class VM;
class JSGlobalObject;
template<class T> class WriteBarrierBase;
@@ -68,11 +68,11 @@
// We have a separate base class with no constructors for use in Unions.
template <typename T> class WriteBarrierBase {
public:
- void set(JSGlobalData& globalData, const JSCell* owner, T* value)
+ void set(VM& vm, const JSCell* owner, T* value)
{
ASSERT(value);
validateCell(value);
- setEarlyValue(globalData, owner, value);
+ setEarlyValue(vm, owner, value);
}
// This is meant to be used like operator=, but is called copyFrom instead, in
@@ -82,16 +82,16 @@
m_cell = other.m_cell;
}
- void setMayBeNull(JSGlobalData& globalData, const JSCell* owner, T* value)
+ void setMayBeNull(VM& vm, const JSCell* owner, T* value)
{
if (value)
validateCell(value);
- setEarlyValue(globalData, owner, value);
+ setEarlyValue(vm, owner, value);
}
// Should only be used by JSCell during early initialisation
// when some basic types aren't yet completely instantiated
- void setEarlyValue(JSGlobalData&, const JSCell* owner, T* value)
+ void setEarlyValue(VM&, const JSCell* owner, T* value)
{
this->m_cell = reinterpret_cast<JSCell*>(value);
Heap::writeBarrier(owner, this->m_cell);
@@ -147,7 +147,7 @@
template <> class WriteBarrierBase<Unknown> {
public:
- void set(JSGlobalData&, const JSCell* owner, JSValue value)
+ void set(VM&, const JSCell* owner, JSValue value)
{
m_value = JSValue::encode(value);
Heap::writeBarrier(owner, value);
@@ -197,15 +197,15 @@
this->setWithoutWriteBarrier(0);
}
- WriteBarrier(JSGlobalData& globalData, const JSCell* owner, T* value)
+ WriteBarrier(VM& vm, const JSCell* owner, T* value)
{
- this->set(globalData, owner, value);
+ this->set(vm, owner, value);
}
enum MayBeNullTag { MayBeNull };
- WriteBarrier(JSGlobalData& globalData, const JSCell* owner, T* value, MayBeNullTag)
+ WriteBarrier(VM& vm, const JSCell* owner, T* value, MayBeNullTag)
{
- this->setMayBeNull(globalData, owner, value);
+ this->setMayBeNull(vm, owner, value);
}
};
@@ -216,9 +216,9 @@
this->setWithoutWriteBarrier(JSValue());
}
- WriteBarrier(JSGlobalData& globalData, const JSCell* owner, JSValue value)
+ WriteBarrier(VM& vm, const JSCell* owner, JSValue value)
{
- this->set(globalData, owner, value);
+ this->set(vm, owner, value);
}
};