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/interpreter/Interpreter.cpp

    r76090 r77006  
    104104    Identifier& ident = codeBlock->identifier(property);
    105105    do {
    106         JSObject* o = *iter;
     106        JSObject* o = iter->get();
    107107        PropertySlot slot(o);
    108108        if (o->getPropertySlot(callFrame, ident, slot)) {
    109109            JSValue result = slot.getValue(callFrame, ident);
    110             exceptionValue = callFrame->globalData().exception;
     110            exceptionValue = callFrame->globalData().exception.get();
    111111            if (exceptionValue)
    112112                return false;
     
    143143    Identifier& ident = codeBlock->identifier(property);
    144144    do {
    145         JSObject* o = *iter;
     145        JSObject* o = iter->get();
    146146        PropertySlot slot(o);
    147147        if (o->getPropertySlot(callFrame, ident, slot)) {
    148148            JSValue result = slot.getValue(callFrame, ident);
    149             exceptionValue = callFrame->globalData().exception;
     149            exceptionValue = callFrame->globalData().exception.get();
    150150            if (exceptionValue)
    151151                return false;
     
    188188        }
    189189
    190         exceptionValue = callFrame->globalData().exception;
     190        exceptionValue = callFrame->globalData().exception.get();
    191191        if (exceptionValue)
    192192            return false;
     
    221221    }
    222222    while (skip--) {
    223         JSObject* o = *iter;
     223        JSObject* o = iter->get();
    224224        if (o->hasCustomProperties()) {
    225225            Identifier& ident = codeBlock->identifier(property);
     
    228228                if (o->getPropertySlot(callFrame, ident, slot)) {
    229229                    JSValue result = slot.getValue(callFrame, ident);
    230                     exceptionValue = callFrame->globalData().exception;
     230                    exceptionValue = callFrame->globalData().exception.get();
    231231                    if (exceptionValue)
    232232                        return false;
     
    237237                if (iter == end)
    238238                    break;
    239                 o = *iter;
     239                o = iter->get();
    240240                ++iter;
    241241            } while (true);
     
    267267        }
    268268       
    269         exceptionValue = callFrame->globalData().exception;
     269        exceptionValue = callFrame->globalData().exception.get();
    270270        if (exceptionValue)
    271271            return false;
     
    311311    JSObject* base;
    312312    do {
    313         base = *iter;
     313        base = iter->get();
    314314        PropertySlot slot(base);
    315315        if (base->getPropertySlot(callFrame, ident, slot)) {
    316316            JSValue result = slot.getValue(callFrame, ident);
    317             exceptionValue = callFrame->globalData().exception;
     317            exceptionValue = callFrame->globalData().exception.get();
    318318            if (exceptionValue)
    319319                return false;
     
    567567        while (!scopeChain->object->inherits(&JSActivation::info))
    568568            scopeChain = scopeChain->pop();
    569         JSActivation* activation = asActivation(scopeChain->object);
     569        JSActivation* activation = asActivation(scopeChain->object.get());
    570570        activation->copyRegisters();
    571571        if (JSValue arguments = callFrame->uncheckedR(unmodifiedArgumentsRegister(oldCodeBlock->argumentsRegister())).jsValue()) {
    572572            if (!oldCodeBlock->isStrictMode())
    573                 asArguments(arguments)->setActivation(activation);
     573                asArguments(arguments)->setActivation(callFrame->globalData(), activation);
    574574        }
    575575    } else if (oldCodeBlock->usesArguments() && !oldCodeBlock->isStrictMode()) {
     
    649649    }
    650650
    651     exception->putDirect(globalData->propertyNames->message, jsString(globalData, message));
     651    exception->putDirect(*globalData, globalData->propertyNames->message, jsString(globalData, message));
    652652}
    653653
     
    10861086        ASSERT(node);
    10871087        if (node->object->isVariableObject()) {
    1088             variableObject = static_cast<JSVariableObject*>(node->object);
     1088            variableObject = static_cast<JSVariableObject*>(node->object.get());
    10891089            break;
    10901090        }
     
    11011101        }
    11021102        // Scope for BatchedTransitionOptimizer
    1103         BatchedTransitionOptimizer optimizer(variableObject);
     1103        BatchedTransitionOptimizer optimizer(callFrame->globalData(), variableObject);
    11041104
    11051105        for (unsigned i = 0; i < numVariables; ++i) {
     
    13721372        // should not be treated as a dictionary.
    13731373        if (baseObject->structure()->isDictionary()) {
    1374             baseObject->flattenDictionaryObject();
     1374            baseObject->flattenDictionaryObject(callFrame->globalData());
    13751375            offset = baseObject->structure()->get(propertyName);
    13761376        }
     
    14761476#define CHECK_FOR_EXCEPTION() \
    14771477    do { \
    1478         if (UNLIKELY(globalData->exception != JSValue())) { \
    1479             exceptionValue = globalData->exception; \
     1478        if (UNLIKELY(globalData->exception.get() != JSValue())) { \
     1479            exceptionValue = globalData->exception.get(); \
    14801480            goto vm_throw; \
    14811481        } \
     
    24092409        }
    24102410        ASSERT((*iter)->isVariableObject());
    2411         JSVariableObject* scope = static_cast<JSVariableObject*>(*iter);
     2411        JSVariableObject* scope = static_cast<JSVariableObject*>(iter->get());
    24122412        callFrame->uncheckedR(dst) = scope->registerAt(index);
    24132413        ASSERT(callFrame->r(dst).jsValue());
     
    24402440
    24412441        ASSERT((*iter)->isVariableObject());
    2442         JSVariableObject* scope = static_cast<JSVariableObject*>(*iter);
     2442        JSVariableObject* scope = static_cast<JSVariableObject*>(iter->get());
    24432443        ASSERT(callFrame->r(value).jsValue());
    24442444        scope->registerAt(index) = JSValue(callFrame->r(value).jsValue());
     
    30813081                unsigned offset = vPC[7].u.operand;
    30823082                ASSERT(baseObject->offsetForLocation(baseObject->getDirectLocation(codeBlock->identifier(vPC[2].u.operand))) == offset);
    3083                 baseObject->putDirectOffset(offset, callFrame->r(value).jsValue());
     3083                baseObject->putDirectOffset(callFrame->globalData(), offset, callFrame->r(value).jsValue());
    30843084
    30853085                vPC += OPCODE_LENGTH(op_put_by_id_transition);
     
    31163116               
    31173117                ASSERT(baseObject->offsetForLocation(baseObject->getDirectLocation(codeBlock->identifier(vPC[2].u.operand))) == offset);
    3118                 baseObject->putDirectOffset(offset, callFrame->r(value).jsValue());
     3118                baseObject->putDirectOffset(callFrame->globalData(), offset, callFrame->r(value).jsValue());
    31193119
    31203120                vPC += OPCODE_LENGTH(op_put_by_id_replace);
     
    33103310                JSArray* jsArray = asArray(baseValue);
    33113311                if (jsArray->canSetIndex(i))
    3312                     jsArray->setIndex(i, callFrame->r(value).jsValue());
     3312                    jsArray->setIndex(*globalData, i, callFrame->r(value).jsValue());
    33133313                else
    33143314                    jsArray->JSArray::put(callFrame, i, callFrame->r(value).jsValue());
     
    38363836        if (thisValue == globalObject && funcVal == globalObject->evalFunction()) {
    38373837            JSValue result = callEval(callFrame, registerFile, argv, argCount, registerOffset);
    3838             if ((exceptionValue = globalData->exception))
     3838            if ((exceptionValue = globalData->exception.get()))
    38393839                goto vm_throw;
    38403840            functionReturnValue = result;
     
    41044104            if (JSValue argumentsValue = callFrame->r(unmodifiedArgumentsRegister(arguments)).jsValue()) {
    41054105                if (!codeBlock->isStrictMode())
    4106                     asArguments(argumentsValue)->setActivation(asActivation(activationValue));
     4106                    asArguments(argumentsValue)->setActivation(*globalData, asActivation(activationValue));
    41074107            }
    41084108        } else if (JSValue argumentsValue = callFrame->r(unmodifiedArgumentsRegister(arguments)).jsValue()) {
Note: See TracChangeset for help on using the changeset viewer.