Ignore:
Timestamp:
Jan 28, 2011, 3:39:54 PM (14 years ago)
Author:
[email protected]
Message:

2011-01-27 Oliver Hunt <[email protected]>

Reviewed by Geoffrey Garen.

Convert markstack to a slot visitor API
https://bugs.webkit.org/show_bug.cgi?id=53219

Move the MarkStack over to a slot based marking API.

In order to avoiding aliasing concerns there are two new types
that need to be used when holding on to JSValues and JSCell that
need to be marked: WriteBarrier and DeprecatedPtr. WriteBarrier
is expected to be used for any JSValue or Cell that's lifetime and
marking is controlled by another GC object. DeprecatedPtr is used
for any value that we need to rework ownership for.

The change over to this model has produced a large amount of
code changes, but they are mostly mechanical (forwarding JSGlobalData,
etc).

  • API/JSCallbackObject.h: (JSC::JSCallbackObjectData::setPrivateProperty): (JSC::JSCallbackObjectData::JSPrivatePropertyMap::getPrivateProperty): (JSC::JSCallbackObjectData::JSPrivatePropertyMap::setPrivateProperty): (JSC::JSCallbackObjectData::JSPrivatePropertyMap::markChildren): (JSC::JSCallbackObject::setPrivateProperty):
  • API/JSCallbackObjectFunctions.h: (JSC::::put): (JSC::::staticFunctionGetter):
  • API/JSObjectRef.cpp: (JSObjectMakeConstructor): (JSObjectSetPrivateProperty):
  • API/JSWeakObjectMapRefInternal.h:
  • JavaScriptCore.exp:
  • JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • bytecode/CodeBlock.cpp: (JSC::CodeBlock::markAggregate):
  • bytecode/CodeBlock.h: (JSC::CodeBlock::globalObject):
  • bytecompiler/BytecodeGenerator.cpp: (JSC::BytecodeGenerator::BytecodeGenerator): (JSC::BytecodeGenerator::emitJumpIfNotFunctionCall): (JSC::BytecodeGenerator::emitJumpIfNotFunctionApply): (JSC::BytecodeGenerator::findScopedProperty):
  • debugger/DebuggerActivation.cpp: (JSC::DebuggerActivation::DebuggerActivation): (JSC::DebuggerActivation::markChildren):
  • debugger/DebuggerActivation.h:
  • interpreter/Interpreter.cpp: (JSC::Interpreter::resolve): (JSC::Interpreter::resolveSkip): (JSC::Interpreter::resolveGlobalDynamic): (JSC::Interpreter::resolveBaseAndProperty): (JSC::Interpreter::unwindCallFrame): (JSC::appendSourceToError): (JSC::Interpreter::execute): (JSC::Interpreter::privateExecute):
  • interpreter/Register.h: (JSC::Register::jsValueSlot):
  • jit/JITStubs.cpp: (JSC::JITThunks::tryCacheGetByID): (JSC::DEFINE_STUB_FUNCTION):
  • jsc.cpp: (GlobalObject::GlobalObject):
  • runtime/Arguments.cpp: (JSC::Arguments::markChildren): (JSC::Arguments::getOwnPropertySlot): (JSC::Arguments::getOwnPropertyDescriptor): (JSC::Arguments::put):
  • runtime/Arguments.h: (JSC::Arguments::setActivation): (JSC::Arguments::Arguments):
  • runtime/ArrayConstructor.cpp: (JSC::ArrayConstructor::ArrayConstructor): (JSC::constructArrayWithSizeQuirk):
  • runtime/ArrayPrototype.cpp: (JSC::arrayProtoFuncSplice):
  • runtime/BatchedTransitionOptimizer.h: (JSC::BatchedTransitionOptimizer::BatchedTransitionOptimizer): (JSC::BatchedTransitionOptimizer::~BatchedTransitionOptimizer):
  • runtime/BooleanConstructor.cpp: (JSC::BooleanConstructor::BooleanConstructor): (JSC::constructBoolean): (JSC::constructBooleanFromImmediateBoolean):
  • runtime/BooleanPrototype.cpp: (JSC::BooleanPrototype::BooleanPrototype):
  • runtime/ConservativeSet.h: (JSC::ConservativeSet::mark):
  • runtime/DateConstructor.cpp: (JSC::DateConstructor::DateConstructor):
  • runtime/DateInstance.cpp: (JSC::DateInstance::DateInstance):
  • runtime/DatePrototype.cpp: (JSC::dateProtoFuncSetTime): (JSC::setNewValueFromTimeArgs): (JSC::setNewValueFromDateArgs): (JSC::dateProtoFuncSetYear):
  • runtime/ErrorConstructor.cpp: (JSC::ErrorConstructor::ErrorConstructor):
  • runtime/ErrorInstance.cpp: (JSC::ErrorInstance::ErrorInstance):
  • runtime/ErrorPrototype.cpp: (JSC::ErrorPrototype::ErrorPrototype):
  • runtime/FunctionConstructor.cpp: (JSC::FunctionConstructor::FunctionConstructor):
  • runtime/FunctionPrototype.cpp: (JSC::FunctionPrototype::FunctionPrototype):
  • runtime/GetterSetter.cpp: (JSC::GetterSetter::markChildren):
  • runtime/GetterSetter.h: (JSC::GetterSetter::GetterSetter): (JSC::GetterSetter::getter): (JSC::GetterSetter::setGetter): (JSC::GetterSetter::setter): (JSC::GetterSetter::setSetter):
  • runtime/GlobalEvalFunction.cpp: (JSC::GlobalEvalFunction::GlobalEvalFunction): (JSC::GlobalEvalFunction::markChildren):
  • runtime/GlobalEvalFunction.h: (JSC::GlobalEvalFunction::cachedGlobalObject):
  • runtime/Heap.cpp: (JSC::Heap::markProtectedObjects): (JSC::Heap::markTempSortVectors): (JSC::Heap::markRoots):
  • runtime/InternalFunction.cpp: (JSC::InternalFunction::InternalFunction):
  • runtime/JSAPIValueWrapper.h: (JSC::JSAPIValueWrapper::value): (JSC::JSAPIValueWrapper::JSAPIValueWrapper):
  • runtime/JSActivation.cpp: (JSC::JSActivation::put):
  • runtime/JSArray.cpp: (JSC::JSArray::JSArray): (JSC::JSArray::getOwnPropertySlot): (JSC::JSArray::getOwnPropertyDescriptor): (JSC::JSArray::put): (JSC::JSArray::putSlowCase): (JSC::JSArray::deleteProperty): (JSC::JSArray::increaseVectorLength): (JSC::JSArray::setLength): (JSC::JSArray::pop): (JSC::JSArray::push): (JSC::JSArray::unshiftCount): (JSC::JSArray::sort): (JSC::JSArray::fillArgList): (JSC::JSArray::copyToRegisters): (JSC::JSArray::compactForSorting):
  • runtime/JSArray.h: (JSC::JSArray::getIndex): (JSC::JSArray::setIndex): (JSC::JSArray::uncheckedSetIndex): (JSC::JSArray::markChildrenDirect):
  • runtime/JSByteArray.cpp: (JSC::JSByteArray::JSByteArray):
  • runtime/JSCell.h: (JSC::JSCell::MarkStack::append): (JSC::JSCell::MarkStack::appendCell):
  • runtime/JSFunction.cpp: (JSC::JSFunction::JSFunction): (JSC::JSFunction::getOwnPropertySlot):
  • runtime/JSGlobalObject.cpp: (JSC::markIfNeeded): (JSC::JSGlobalObject::reset): (JSC::JSGlobalObject::resetPrototype): (JSC::JSGlobalObject::markChildren):
  • runtime/JSGlobalObject.h: (JSC::JSGlobalObject::JSGlobalObjectData::JSGlobalObjectData): (JSC::JSGlobalObject::regExpConstructor): (JSC::JSGlobalObject::errorConstructor): (JSC::JSGlobalObject::evalErrorConstructor): (JSC::JSGlobalObject::rangeErrorConstructor): (JSC::JSGlobalObject::referenceErrorConstructor): (JSC::JSGlobalObject::syntaxErrorConstructor): (JSC::JSGlobalObject::typeErrorConstructor): (JSC::JSGlobalObject::URIErrorConstructor): (JSC::JSGlobalObject::evalFunction): (JSC::JSGlobalObject::objectPrototype): (JSC::JSGlobalObject::functionPrototype): (JSC::JSGlobalObject::arrayPrototype): (JSC::JSGlobalObject::booleanPrototype): (JSC::JSGlobalObject::stringPrototype): (JSC::JSGlobalObject::numberPrototype): (JSC::JSGlobalObject::datePrototype): (JSC::JSGlobalObject::regExpPrototype): (JSC::JSGlobalObject::methodCallDummy): (JSC::constructArray):
  • runtime/JSONObject.cpp: (JSC::Stringifier::Holder::object): (JSC::Stringifier::Holder::objectSlot): (JSC::Stringifier::markAggregate): (JSC::Stringifier::stringify): (JSC::Stringifier::Holder::appendNextProperty): (JSC::Walker::callReviver): (JSC::Walker::walk):
  • runtime/JSObject.cpp: (JSC::JSObject::defineGetter): (JSC::JSObject::defineSetter): (JSC::JSObject::removeDirect): (JSC::JSObject::putDirectFunction): (JSC::JSObject::putDirectFunctionWithoutTransition): (JSC::putDescriptor): (JSC::JSObject::defineOwnProperty):
  • runtime/JSObject.h: (JSC::JSObject::putDirectOffset): (JSC::JSObject::putUndefinedAtDirectOffset): (JSC::JSObject::flattenDictionaryObject): (JSC::JSObject::putDirectInternal): (JSC::JSObject::putDirect): (JSC::JSObject::putDirectFunction): (JSC::JSObject::putDirectWithoutTransition): (JSC::JSObject::putDirectFunctionWithoutTransition): (JSC::JSValue::putDirect): (JSC::JSObject::allocatePropertyStorageInline): (JSC::JSObject::markChildrenDirect):
  • runtime/JSStaticScopeObject.cpp: (JSC::JSStaticScopeObject::markChildren):
  • runtime/JSString.cpp: (JSC::StringObject::create):
  • runtime/JSValue.h:
  • runtime/JSWrapperObject.cpp: (JSC::JSWrapperObject::markChildren):
  • runtime/JSWrapperObject.h: (JSC::JSWrapperObject::internalValue): (JSC::JSWrapperObject::setInternalValue):
  • runtime/LiteralParser.cpp: (JSC::LiteralParser::parse):
  • runtime/Lookup.cpp: (JSC::setUpStaticFunctionSlot):
  • runtime/Lookup.h: (JSC::lookupPut):
  • runtime/MarkStack.h:
  • runtime/MathObject.cpp: (JSC::MathObject::MathObject):
  • runtime/NativeErrorConstructor.cpp: (JSC::NativeErrorConstructor::NativeErrorConstructor):
  • runtime/NativeErrorPrototype.cpp: (JSC::NativeErrorPrototype::NativeErrorPrototype):
  • runtime/NumberConstructor.cpp: (JSC::NumberConstructor::NumberConstructor): (JSC::constructWithNumberConstructor):
  • runtime/NumberObject.cpp: (JSC::constructNumber):
  • runtime/NumberPrototype.cpp: (JSC::NumberPrototype::NumberPrototype):
  • runtime/ObjectConstructor.cpp: (JSC::ObjectConstructor::ObjectConstructor): (JSC::objectConstructorGetOwnPropertyDescriptor):
  • runtime/Operations.h: (JSC::normalizePrototypeChain): (JSC::resolveBase):
  • runtime/PrototypeFunction.cpp: (JSC::PrototypeFunction::PrototypeFunction):
  • runtime/PutPropertySlot.h: (JSC::PutPropertySlot::setExistingProperty): (JSC::PutPropertySlot::setNewProperty): (JSC::PutPropertySlot::base):
  • runtime/RegExpConstructor.cpp: (JSC::RegExpConstructor::RegExpConstructor):
  • runtime/ScopeChain.cpp: (JSC::ScopeChainNode::print):
  • runtime/ScopeChain.h: (JSC::ScopeChainNode::~ScopeChainNode): (JSC::ScopeChainIterator::operator*): (JSC::ScopeChainIterator::operator->): (JSC::ScopeChain::top):
  • runtime/ScopeChainMark.h: (JSC::ScopeChain::markAggregate):
  • runtime/SmallStrings.cpp: (JSC::isMarked): (JSC::SmallStrings::markChildren):
  • runtime/SmallStrings.h: (JSC::SmallStrings::emptyString): (JSC::SmallStrings::singleCharacterString): (JSC::SmallStrings::singleCharacterStrings):
  • runtime/StringConstructor.cpp: (JSC::StringConstructor::StringConstructor):
  • runtime/StringObject.cpp: (JSC::StringObject::StringObject):
  • runtime/StringObject.h:
  • runtime/StringPrototype.cpp: (JSC::StringPrototype::StringPrototype):
  • runtime/Structure.cpp: (JSC::Structure::flattenDictionaryStructure):
  • runtime/Structure.h: (JSC::Structure::storedPrototypeSlot):
  • runtime/WeakGCMap.h: (JSC::WeakGCMap::uncheckedGet): (JSC::WeakGCMap::uncheckedGetSlot): (JSC::::get): (JSC::::take): (JSC::::set): (JSC::::uncheckedRemove):
  • runtime/WriteBarrier.h: Added. (JSC::DeprecatedPtr::DeprecatedPtr): (JSC::DeprecatedPtr::get): (JSC::DeprecatedPtr::operator*): (JSC::DeprecatedPtr::operator->): (JSC::DeprecatedPtr::slot): (JSC::DeprecatedPtr::operator UnspecifiedBoolType*): (JSC::DeprecatedPtr::operator!): (JSC::WriteBarrierBase::set): (JSC::WriteBarrierBase::get): (JSC::WriteBarrierBase::operator*): (JSC::WriteBarrierBase::operator->): (JSC::WriteBarrierBase::slot): (JSC::WriteBarrierBase::operator UnspecifiedBoolType*): (JSC::WriteBarrierBase::operator!): (JSC::WriteBarrier::WriteBarrier): (JSC::operator==):

2011-01-27 Oliver Hunt <[email protected]>

Reviewed by Geoffrey Garen.

Convert markstack to a slot visitor API
https://bugs.webkit.org/show_bug.cgi?id=53219

There's no reason to recurse here, the value we
were marking was protected.

  • JSValueWrapper.cpp: (JSValueWrapper::JSObjectMark):

2011-01-27 Oliver Hunt <[email protected]>

Reviewed by Geoffrey Garen.

Convert markstack to a slot visitor API
https://bugs.webkit.org/show_bug.cgi?id=53219

Update WebCore to the new marking apis, correct bindings
codegen.

  • ForwardingHeaders/runtime/WriteBarrier.h: Added.
  • WebCore.exp.in:
  • bindings/js/DOMWrapperWorld.h: (WebCore::DOMWrapperWorld::globalData):
  • bindings/js/JSAudioConstructor.cpp: (WebCore::JSAudioConstructor::JSAudioConstructor):
  • bindings/js/JSDOMBinding.cpp: (WebCore::markDOMNodesForDocument): (WebCore::markDOMObjectWrapper): (WebCore::markDOMNodeWrapper):
  • bindings/js/JSDOMGlobalObject.cpp: (WebCore::JSDOMGlobalObject::markChildren): (WebCore::JSDOMGlobalObject::setInjectedScript): (WebCore::JSDOMGlobalObject::injectedScript):
  • bindings/js/JSDOMGlobalObject.h: (WebCore::JSDOMGlobalObject::JSDOMGlobalObjectData::JSDOMGlobalObjectData): (WebCore::getDOMConstructor):
  • bindings/js/JSDOMWindowCustom.cpp: (WebCore::JSDOMWindow::setLocation): (WebCore::DialogHandler::dialogCreated):
  • bindings/js/JSDOMWindowShell.cpp: (WebCore::JSDOMWindowShell::JSDOMWindowShell): (WebCore::JSDOMWindowShell::setWindow): (WebCore::JSDOMWindowShell::markChildren): (WebCore::JSDOMWindowShell::unwrappedObject):
  • bindings/js/JSDOMWindowShell.h: (WebCore::JSDOMWindowShell::window): (WebCore::JSDOMWindowShell::setWindow):
  • bindings/js/JSEventListener.cpp: (WebCore::JSEventListener::JSEventListener): (WebCore::JSEventListener::markJSFunction):
  • bindings/js/JSEventListener.h: (WebCore::JSEventListener::jsFunction):
  • bindings/js/JSHTMLDocumentCustom.cpp: (WebCore::JSHTMLDocument::setAll):
  • bindings/js/JSImageConstructor.cpp: (WebCore::JSImageConstructor::JSImageConstructor):
  • bindings/js/JSImageDataCustom.cpp: (WebCore::toJS):
  • bindings/js/JSJavaScriptCallFrameCustom.cpp: (WebCore::JSJavaScriptCallFrame::scopeChain): (WebCore::JSJavaScriptCallFrame::scopeType):
  • bindings/js/JSNodeFilterCondition.cpp: (WebCore::JSNodeFilterCondition::markAggregate): (WebCore::JSNodeFilterCondition::acceptNode):
  • bindings/js/JSNodeFilterCondition.h:
  • bindings/js/JSNodeFilterCustom.cpp:
  • bindings/js/JSOptionConstructor.cpp: (WebCore::JSOptionConstructor::JSOptionConstructor):
  • bindings/js/JSSQLResultSetRowListCustom.cpp: (WebCore::JSSQLResultSetRowList::item):
  • bindings/js/ScriptCachedFrameData.cpp: (WebCore::ScriptCachedFrameData::restore):
  • bindings/js/ScriptObject.cpp: (WebCore::ScriptGlobalObject::set):
  • bindings/js/SerializedScriptValue.cpp: (WebCore::CloneDeserializer::putProperty):
  • bindings/scripts/CodeGeneratorJS.pm:
  • dom/Document.h:

2011-01-27 Oliver Hunt <[email protected]>

Reviewed by Geoffrey Garen.

Convert markstack to a slot visitor API
https://bugs.webkit.org/show_bug.cgi?id=53219

Update to new marking api

  • WebView/WebScriptDebugDelegate.mm: (-[WebScriptCallFrame scopeChain]):
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/runtime/JSGlobalObject.h

    r76248 r77006  
    7474                , registerArraySize(0)
    7575                , globalScopeChain(NoScopeChain())
    76                 , regExpConstructor(0)
    77                 , errorConstructor(0)
    78                 , evalErrorConstructor(0)
    79                 , rangeErrorConstructor(0)
    80                 , referenceErrorConstructor(0)
    81                 , syntaxErrorConstructor(0)
    82                 , typeErrorConstructor(0)
    83                 , URIErrorConstructor(0)
    84                 , evalFunction(0)
    85                 , callFunction(0)
    86                 , applyFunction(0)
    87                 , objectPrototype(0)
    88                 , functionPrototype(0)
    89                 , arrayPrototype(0)
    90                 , booleanPrototype(0)
    91                 , stringPrototype(0)
    92                 , numberPrototype(0)
    93                 , datePrototype(0)
    94                 , regExpPrototype(0)
    95                 , methodCallDummy(0)
    9676                , weakRandom(static_cast<unsigned>(randomNumber() * (std::numeric_limits<unsigned>::max() + 1.0)))
    9777            {
     
    11090            Register globalCallFrame[RegisterFile::CallFrameHeaderSize];
    11191
    112             RegExpConstructor* regExpConstructor;
    113             ErrorConstructor* errorConstructor;
    114             NativeErrorConstructor* evalErrorConstructor;
    115             NativeErrorConstructor* rangeErrorConstructor;
    116             NativeErrorConstructor* referenceErrorConstructor;
    117             NativeErrorConstructor* syntaxErrorConstructor;
    118             NativeErrorConstructor* typeErrorConstructor;
    119             NativeErrorConstructor* URIErrorConstructor;
    120 
    121             GlobalEvalFunction* evalFunction;
    122             NativeFunctionWrapper* callFunction;
    123             NativeFunctionWrapper* applyFunction;
    124 
    125             ObjectPrototype* objectPrototype;
    126             FunctionPrototype* functionPrototype;
    127             ArrayPrototype* arrayPrototype;
    128             BooleanPrototype* booleanPrototype;
    129             StringPrototype* stringPrototype;
    130             NumberPrototype* numberPrototype;
    131             DatePrototype* datePrototype;
    132             RegExpPrototype* regExpPrototype;
    133 
    134             JSObject* methodCallDummy;
     92            WriteBarrier<RegExpConstructor> regExpConstructor;
     93            WriteBarrier<ErrorConstructor> errorConstructor;
     94            WriteBarrier<NativeErrorConstructor> evalErrorConstructor;
     95            WriteBarrier<NativeErrorConstructor> rangeErrorConstructor;
     96            WriteBarrier<NativeErrorConstructor> referenceErrorConstructor;
     97            WriteBarrier<NativeErrorConstructor> syntaxErrorConstructor;
     98            WriteBarrier<NativeErrorConstructor> typeErrorConstructor;
     99            WriteBarrier<NativeErrorConstructor> URIErrorConstructor;
     100
     101            WriteBarrier<GlobalEvalFunction> evalFunction;
     102            WriteBarrier<NativeFunctionWrapper> callFunction;
     103            WriteBarrier<NativeFunctionWrapper> applyFunction;
     104
     105            WriteBarrier<ObjectPrototype> objectPrototype;
     106            WriteBarrier<FunctionPrototype> functionPrototype;
     107            WriteBarrier<ArrayPrototype> arrayPrototype;
     108            WriteBarrier<BooleanPrototype> booleanPrototype;
     109            WriteBarrier<StringPrototype> stringPrototype;
     110            WriteBarrier<NumberPrototype> numberPrototype;
     111            WriteBarrier<DatePrototype> datePrototype;
     112            WriteBarrier<RegExpPrototype> regExpPrototype;
     113
     114            WriteBarrier<JSObject> methodCallDummy;
    135115
    136116            RefPtr<Structure> argumentsStructure;
     
    210190        // replaces the global object's associated property.
    211191
    212         RegExpConstructor* regExpConstructor() const { return d()->regExpConstructor; }
    213 
    214         ErrorConstructor* errorConstructor() const { return d()->errorConstructor; }
    215         NativeErrorConstructor* evalErrorConstructor() const { return d()->evalErrorConstructor; }
    216         NativeErrorConstructor* rangeErrorConstructor() const { return d()->rangeErrorConstructor; }
    217         NativeErrorConstructor* referenceErrorConstructor() const { return d()->referenceErrorConstructor; }
    218         NativeErrorConstructor* syntaxErrorConstructor() const { return d()->syntaxErrorConstructor; }
    219         NativeErrorConstructor* typeErrorConstructor() const { return d()->typeErrorConstructor; }
    220         NativeErrorConstructor* URIErrorConstructor() const { return d()->URIErrorConstructor; }
    221 
    222         GlobalEvalFunction* evalFunction() const { return d()->evalFunction; }
    223 
    224         ObjectPrototype* objectPrototype() const { return d()->objectPrototype; }
    225         FunctionPrototype* functionPrototype() const { return d()->functionPrototype; }
    226         ArrayPrototype* arrayPrototype() const { return d()->arrayPrototype; }
    227         BooleanPrototype* booleanPrototype() const { return d()->booleanPrototype; }
    228         StringPrototype* stringPrototype() const { return d()->stringPrototype; }
    229         NumberPrototype* numberPrototype() const { return d()->numberPrototype; }
    230         DatePrototype* datePrototype() const { return d()->datePrototype; }
    231         RegExpPrototype* regExpPrototype() const { return d()->regExpPrototype; }
    232 
    233         JSObject* methodCallDummy() const { return d()->methodCallDummy; }
     192        RegExpConstructor* regExpConstructor() const { return d()->regExpConstructor.get(); }
     193
     194        ErrorConstructor* errorConstructor() const { return d()->errorConstructor.get(); }
     195        NativeErrorConstructor* evalErrorConstructor() const { return d()->evalErrorConstructor.get(); }
     196        NativeErrorConstructor* rangeErrorConstructor() const { return d()->rangeErrorConstructor.get(); }
     197        NativeErrorConstructor* referenceErrorConstructor() const { return d()->referenceErrorConstructor.get(); }
     198        NativeErrorConstructor* syntaxErrorConstructor() const { return d()->syntaxErrorConstructor.get(); }
     199        NativeErrorConstructor* typeErrorConstructor() const { return d()->typeErrorConstructor.get(); }
     200        NativeErrorConstructor* URIErrorConstructor() const { return d()->URIErrorConstructor.get(); }
     201
     202        GlobalEvalFunction* evalFunction() const { return d()->evalFunction.get(); }
     203
     204        ObjectPrototype* objectPrototype() const { return d()->objectPrototype.get(); }
     205        FunctionPrototype* functionPrototype() const { return d()->functionPrototype.get(); }
     206        ArrayPrototype* arrayPrototype() const { return d()->arrayPrototype.get(); }
     207        BooleanPrototype* booleanPrototype() const { return d()->booleanPrototype.get(); }
     208        StringPrototype* stringPrototype() const { return d()->stringPrototype.get(); }
     209        NumberPrototype* numberPrototype() const { return d()->numberPrototype.get(); }
     210        DatePrototype* datePrototype() const { return d()->datePrototype.get(); }
     211        RegExpPrototype* regExpPrototype() const { return d()->regExpPrototype.get(); }
     212
     213        JSObject* methodCallDummy() const { return d()->methodCallDummy.get(); }
    234214
    235215        Structure* argumentsStructure() const { return d()->argumentsStructure.get(); }
     
    386366    {
    387367        if (typeInfo().type() == ObjectType)
    388             return m_prototype;
     368            return m_prototype.get();
    389369
    390370        ASSERT(typeInfo().type() == StringType);
     
    458438        MarkedArgumentBuffer values;
    459439        values.append(singleItemValue);
    460         return new (exec) JSArray(exec->lexicalGlobalObject()->arrayStructure(), values);
     440        return new (exec) JSArray(exec->globalData(), exec->lexicalGlobalObject()->arrayStructure(), values);
    461441    }
    462442
    463443    inline JSArray* constructArray(ExecState* exec, const ArgList& values)
    464444    {
    465         return new (exec) JSArray(exec->lexicalGlobalObject()->arrayStructure(), values);
     445        return new (exec) JSArray(exec->globalData(), exec->lexicalGlobalObject()->arrayStructure(), values);
    466446    }
    467447
Note: See TracChangeset for help on using the changeset viewer.