Changeset 37257 in webkit for trunk/JavaScriptCore/VM/Machine.cpp


Ignore:
Timestamp:
Oct 3, 2008, 2:39:16 PM (17 years ago)
Author:
Darin Adler
Message:

JavaScriptCore:

2008-10-03 Darin Adler <Darin Adler>

Reviewed by Geoff Garen.

Remove m_globalObject and m_globalData from ExecState.

SunSpider says this is a wash (slightly faster but not statistically
significant); which is good enough since it's a preparation step and
not supposed to be a spedup.

  • API/JSCallbackFunction.cpp: (JSC::JSCallbackFunction::JSCallbackFunction):
  • kjs/ArrayConstructor.cpp: (JSC::ArrayConstructor::ArrayConstructor):
  • kjs/BooleanConstructor.cpp: (JSC::BooleanConstructor::BooleanConstructor):
  • kjs/DateConstructor.cpp: (JSC::DateConstructor::DateConstructor):
  • kjs/ErrorConstructor.cpp: (JSC::ErrorConstructor::ErrorConstructor):
  • kjs/FunctionPrototype.cpp: (JSC::FunctionPrototype::FunctionPrototype):
  • kjs/JSFunction.cpp: (JSC::JSFunction::JSFunction):
  • kjs/NativeErrorConstructor.cpp: (JSC::NativeErrorConstructor::NativeErrorConstructor):
  • kjs/NumberConstructor.cpp: (JSC::NumberConstructor::NumberConstructor):
  • kjs/ObjectConstructor.cpp: (JSC::ObjectConstructor::ObjectConstructor):
  • kjs/PrototypeFunction.cpp: (JSC::PrototypeFunction::PrototypeFunction):
  • kjs/RegExpConstructor.cpp: (JSC::RegExpConstructor::RegExpConstructor):
  • kjs/StringConstructor.cpp: (JSC::StringConstructor::StringConstructor): Pass JSGlobalData* instead of ExecState* to the InternalFunction constructor.
  • API/OpaqueJSString.cpp: Added now-needed include.
  • VM/CTI.cpp: (JSC::CTI::emitSlowScriptCheck): Changed to use ARGS_globalData instead of ARGS_exec.
  • VM/CTI.h: Added a new argument to the CTI, the global data pointer. While it's possible to get to the global data pointer using the ExecState pointer, it's slow enough that it's better to just keep it around in the CTI arguments.
  • VM/CodeBlock.h: Moved the CodeType enum here from ExecState.h.
  • VM/Machine.cpp: (JSC::Machine::execute): Pass fewer arguments when constructing ExecState, and pass the global data pointer when invoking CTI. (JSC::Machine::firstCallFrame): Added. Used to get the dynamic global object, which is in the scope chain of the first call frame. (JSC::Machine::cti_op_add): Use globalData instead of exec when possible, to keep fast cases fast, since it's now more expensive to get to it through the exec pointer. (JSC::Machine::cti_timeout_check): Ditto. (JSC::Machine::cti_op_put_by_id_second): Ditto. (JSC::Machine::cti_op_get_by_id_second): Ditto. (JSC::Machine::cti_op_mul): Ditto. (JSC::Machine::cti_vm_compile): Ditto. (JSC::Machine::cti_op_get_by_val): Ditto. (JSC::Machine::cti_op_sub): Ditto. (JSC::Machine::cti_op_put_by_val): Ditto. (JSC::Machine::cti_op_put_by_val_array): Ditto. (JSC::Machine::cti_op_negate): Ditto. (JSC::Machine::cti_op_div): Ditto. (JSC::Machine::cti_op_pre_dec): Ditto. (JSC::Machine::cti_op_post_inc): Ditto. (JSC::Machine::cti_op_lshift): Ditto. (JSC::Machine::cti_op_bitand): Ditto. (JSC::Machine::cti_op_rshift): Ditto. (JSC::Machine::cti_op_bitnot): Ditto. (JSC::Machine::cti_op_mod): Ditto. (JSC::Machine::cti_op_post_dec): Ditto. (JSC::Machine::cti_op_urshift): Ditto. (JSC::Machine::cti_op_bitxor): Ditto. (JSC::Machine::cti_op_bitor): Ditto. (JSC::Machine::cti_op_call_eval): Ditto. (JSC::Machine::cti_op_throw): Ditto. (JSC::Machine::cti_op_is_string): Ditto. (JSC::Machine::cti_op_debug): Ditto. (JSC::Machine::cti_vm_throw): Ditto.
  • VM/Machine.h: Added firstCallFrame.
  • kjs/DebuggerCallFrame.cpp: (JSC::DebuggerCallFrame::evaluate): Pass fewer arguments when constructing ExecState.
  • kjs/ExecState.cpp: Deleted contents. Later we'll remove the file altogether.
  • kjs/ExecState.h: Removed m_globalObject and m_globalData. Moved CodeType into another header. (JSC::ExecState::ExecState): Take only a single argument, a call frame pointer. (JSC::ExecState::dynamicGlobalObject): Get the object from the first call frame since it's no longer stored. (JSC::ExecState::globalData): Get the global data from the scope chain, since we no longer store a pointer to it here. (JSC::ExecState::identifierTable): Ditto. (JSC::ExecState::propertyNames): Ditto. (JSC::ExecState::emptyList): Ditto. (JSC::ExecState::lexer): Ditto. (JSC::ExecState::parser): Ditto. (JSC::ExecState::machine): Ditto. (JSC::ExecState::arrayTable): Ditto. (JSC::ExecState::dateTable): Ditto. (JSC::ExecState::mathTable): Ditto. (JSC::ExecState::numberTable): Ditto. (JSC::ExecState::regExpTable): Ditto. (JSC::ExecState::regExpConstructorTable): Ditto. (JSC::ExecState::stringTable): Ditto. (JSC::ExecState::heap): Ditto.
  • kjs/FunctionConstructor.cpp: (JSC::FunctionConstructor::FunctionConstructor): Pass JSGlobalData* instead of ExecState* to the InternalFunction constructor. (JSC::constructFunction): Pass the global data pointer when constructing a new scope chain.
  • kjs/InternalFunction.cpp: (JSC::InternalFunction::InternalFunction): Take a JSGlobalData* instead of an ExecState*. Later we can change more places to work this way -- it's more efficient to take the type you need since the caller might already have it.
  • kjs/InternalFunction.h: Ditto.
  • kjs/JSCell.h: (JSC::JSCell::operator new): Added an overload that takes a JSGlobalData* so you can construct without an ExecState*.
  • kjs/JSGlobalObject.cpp: (JSC::JSGlobalObject::init): Moved creation of the global scope chain in here, since it now requires a pointer to the global data. Moved the initialization of the call frame in here since it requires the global scope chain node. Removed the extra argument to ExecState when creating the global ExecState*.
  • kjs/JSGlobalObject.h: Removed initialization of globalScopeChain and the call frame from the JSGlobalObjectData constructor. Added a thisValue argument to the init function.
  • kjs/JSNumberCell.cpp: Added versions of jsNumberCell that take JSGlobalData* rather than ExecState*.
  • kjs/JSNumberCell.h: (JSC::JSNumberCell::operator new): Added a version that takes JSGlobalData*. (JSC::JSNumberCell::JSNumberCell): Ditto. (JSC::jsNumber): Ditto.
  • kjs/JSString.cpp: (JSC::jsString): Ditto. (JSC::jsSubstring): Ditto. (JSC::jsOwnedString): Ditto.
  • kjs/JSString.h: (JSC::JSString::JSString): Changed to take JSGlobalData*. (JSC::jsEmptyString): Added a version that takes JSGlobalData*. (JSC::jsSingleCharacterString): Ditto. (JSC::jsSingleCharacterSubstring): Ditto. (JSC::jsNontrivialString): Ditto. (JSC::JSString::getIndex): Ditto. (JSC::jsString): Ditto. (JSC::jsSubstring): Ditto. (JSC::jsOwnedString): Ditto.
  • kjs/ScopeChain.h: Added a globalData pointer to each node. (JSC::ScopeChainNode::ScopeChainNode): Initialize the globalData pointer. (JSC::ScopeChainNode::push): Set the global data pointer in the new node. (JSC::ScopeChain::ScopeChain): Take a globalData argument.
  • kjs/SmallStrings.cpp: (JSC::SmallStrings::createEmptyString): Take JSGlobalData* instead of ExecState*. (JSC::SmallStrings::createSingleCharacterString): Ditto.
  • kjs/SmallStrings.h: (JSC::SmallStrings::emptyString): Ditto. (JSC::SmallStrings::singleCharacterString): Ditto.

WebCore:

2008-10-03 Darin Adler <Darin Adler>

Reviewed by Geoff Garen.

Remove m_globalObject and m_globalData from ExecState.

  • bindings/js/JSDOMWindowBase.cpp: (WebCore::JSDOMWindowBase::JSDOMWindowBaseData::JSDOMWindowBaseData): Removed an argument now that JSGlobalObject doesn't need it any more. (WebCore::JSDOMWindowBase::JSDOMWindowBase): Removed the argument from the JSDOMWindowBaseData constructor, and added the this argument to the JSGlobalObject constructor. This is because a couple key bits of initialization moved from the data constructor to the JSGlobalObject constructor.
  • bindings/js/JSDOMWindowBase.h: Ditto.
  • bridge/qt/qt_runtime.cpp: (JSC::Bindings::QtRuntimeMethod::QtRuntimeMethod):
  • bridge/runtime_method.cpp: (JSC::RuntimeMethod::RuntimeMethod): Pass JSGlobalData* instead of ExecState* to the InternalFunction constructor.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/JavaScriptCore/VM/Machine.cpp

    r37213 r37257  
    905905        scopeChain = scopeChain->copy();
    906906
    907     ExecState newExec(exec, r);
     907    ExecState newExec(r);
    908908
    909909    Profiler** profiler = Profiler::enabledProfilerReference();
     
    915915    if (!codeBlock->ctiCode)
    916916        CTI::compile(this, exec, codeBlock);
    917     JSValue* result = CTI::execute(codeBlock->ctiCode, &newExec, &m_registerFile, r, exception);
     917    JSValue* result = CTI::execute(codeBlock->ctiCode, &newExec, &m_registerFile, r, &newExec.globalData(), exception);
    918918#else
    919919    JSValue* result = privateExecute(Normal, &newExec, &m_registerFile, r, exception);
     
    967967    initializeCallFrame(r, codeBlock, 0, scopeChain, makeHostCallFramePointer(exec->m_callFrame), 0, argc, function);
    968968
    969     ExecState newExec(exec, r);
     969    ExecState newExec(r);
    970970
    971971    Profiler** profiler = Profiler::enabledProfilerReference();
     
    977977    if (!codeBlock->ctiCode)
    978978        CTI::compile(this, exec, codeBlock);
    979     JSValue* result = CTI::execute(codeBlock->ctiCode, &newExec, &m_registerFile, r, exception);
     979    JSValue* result = CTI::execute(codeBlock->ctiCode, &newExec, &m_registerFile, r, &newExec.globalData(), exception);
    980980#else
    981981    JSValue* result = privateExecute(Normal, &newExec, &m_registerFile, r, exception);
     
    10531053        scopeChain = scopeChain->copy();
    10541054
    1055     ExecState newExec(exec, r);
     1055    ExecState newExec(r);
    10561056
    10571057    Profiler** profiler = Profiler::enabledProfilerReference();
     
    10631063    if (!codeBlock->ctiCode)
    10641064        CTI::compile(this, exec, codeBlock);
    1065     JSValue* result = CTI::execute(codeBlock->ctiCode, &newExec, &m_registerFile, r, exception);
     1065    JSValue* result = CTI::execute(codeBlock->ctiCode, &newExec, &m_registerFile, r, &newExec.globalData(), exception);
    10661066#else
    10671067    JSValue* result = privateExecute(Normal, &newExec, &m_registerFile, r, exception);
     
    28172817                    result = jsArray->JSArray::get(exec, i);
    28182818            } else if (isJSString(baseValue) && static_cast<JSString*>(baseValue)->canGetIndex(i))
    2819                 result = static_cast<JSString*>(baseValue)->getIndex(exec, i);
     2819                result = static_cast<JSString*>(baseValue)->getIndex(&exec->globalData(), i);
    28202820            else
    28212821                result = baseValue->get(exec, i);
     
    39113911
    39123912    function = caller;
     3913}
     3914
     3915const Register* Machine::firstCallFrame(const Register* callFrame)
     3916{
     3917    const Register* first = 0;
     3918    for (const Register* frame = callFrame; frame; frame = stripHostCallFrameBit(frame[RegisterFile::CallerRegisters].r()))
     3919        first = frame;
     3920    return first;
    39133921}
    39143922
     
    42064214    JSValue* v2 = ARG_src2;
    42074215
    4208     ExecState* exec = ARG_exec;
    42094216    double left;
    42104217    double right = 0.0;
     
    42124219    bool rightIsNumber = fastIsNumber(v2, right);
    42134220    if (rightIsNumber && fastIsNumber(v1, left))
    4214         return jsNumber(exec, left + right);
     4221        return jsNumber(ARG_globalData, left + right);
    42154222   
     4223    ExecState* exec = ARG_exec;
     4224
    42164225    bool leftIsString = v1->isString();
    42174226    if (leftIsString && v2->isString()) {
     
    42234232        }
    42244233
    4225         return jsString(exec, value.release());
     4234        return jsString(ARG_globalData, value.release());
    42264235    }
    42274236
     
    42364245            return result;
    42374246        }
    4238         return jsString(exec, value.release());
     4247        return jsString(ARG_globalData, value.release());
    42394248    }
    42404249
     
    42594268    ExecState* exec = ARG_exec;
    42604269
    4261     if (exec->machine()->checkTimeout(exec->dynamicGlobalObject()))
     4270    if (ARG_globalData->machine->checkTimeout(exec->dynamicGlobalObject()))
    42624271        exec->setException(createInterruptedExecutionException(exec));
    42634272
    42644273    VM_CHECK_EXCEPTION_AT_END();
    42654274}
    4266 
    42674275
    42684276int Machine::cti_op_loop_if_less(CTI_ARGS)
     
    43164324
    43174325    Register* r = ARG_r;
    4318     exec->machine()->tryCTICachePutByID(exec, codeBlock(r), CTI_RETURN_ADDRESS, baseValue, slot);
     4326    ARG_globalData->machine->tryCTICachePutByID(exec, codeBlock(r), CTI_RETURN_ADDRESS, baseValue, slot);
    43194327
    43204328    VM_CHECK_EXCEPTION_AT_END();
     
    43714379
    43724380    Register* r = ARG_r;
    4373     exec->machine()->tryCTICacheGetByID(exec, codeBlock(r), CTI_RETURN_ADDRESS, baseValue, ident, slot);
     4381    ARG_globalData->machine->tryCTICacheGetByID(exec, codeBlock(r), CTI_RETURN_ADDRESS, baseValue, ident, slot);
    43744382
    43754383    VM_CHECK_EXCEPTION_AT_END();
     
    44614469JSValue* Machine::cti_op_mul(CTI_ARGS)
    44624470{
    4463     ExecState* exec = ARG_exec;
    44644471    JSValue* src1 = ARG_src1;
    44654472    JSValue* src2 = ARG_src2;
     
    44684475    double right;
    44694476    if (fastIsNumber(src1, left) && fastIsNumber(src2, right))
    4470         return jsNumber(exec, left * right);
    4471     else {
    4472         JSValue* result = jsNumber(exec, src1->toNumber(exec) * src2->toNumber(exec));
    4473         VM_CHECK_EXCEPTION_AT_END();
    4474         return result;
    4475     }
     4477        return jsNumber(ARG_globalData, left * right);
     4478
     4479    ExecState* exec = ARG_exec;
     4480    JSValue* result = jsNumber(ARG_globalData, src1->toNumber(exec) * src2->toNumber(exec));
     4481    VM_CHECK_EXCEPTION_AT_END();
     4482    return result;
    44764483}
    44774484
     
    45354542
    45364543    if (!codeBlock->ctiCode)
    4537         CTI::compile(exec->machine(), exec, codeBlock);
     4544        CTI::compile(ARG_globalData->machine, exec, codeBlock);
    45384545
    45394546    return codeBlock->ctiCode;
     
    47804787{
    47814788    ExecState* exec = ARG_exec;
    4782     Machine* machine = exec->machine();
     4789    Machine* machine = ARG_globalData->machine;
    47834790
    47844791    JSValue* baseValue = ARG_src1;
     
    47974804                result = jsArray->JSArray::get(exec, i);
    47984805        } else if (machine->isJSString(baseValue) && static_cast<JSString*>(baseValue)->canGetIndex(i))
    4799             result = static_cast<JSString*>(baseValue)->getIndex(exec, i);
     4806            result = static_cast<JSString*>(baseValue)->getIndex(ARG_globalData, i);
    48004807        else
    48014808            result = baseValue->get(exec, i);
     
    48624869    double right;
    48634870    if (fastIsNumber(src1, left) && fastIsNumber(src2, right))
    4864         return jsNumber(ARG_exec, left - right);
    4865     else {
    4866         ExecState* exec = ARG_exec;
    4867         JSValue* result = jsNumber(exec, src1->toNumber(exec) - src2->toNumber(exec));
    4868         VM_CHECK_EXCEPTION_AT_END();
    4869         return result;
    4870     }
     4871        return jsNumber(ARG_globalData, left - right);
     4872
     4873    ExecState* exec = ARG_exec;
     4874    JSValue* result = jsNumber(ARG_globalData, src1->toNumber(exec) - src2->toNumber(exec));
     4875    VM_CHECK_EXCEPTION_AT_END();
     4876    return result;
    48714877}
    48724878
     
    48744880{
    48754881    ExecState* exec = ARG_exec;
    4876     Machine* machine = exec->machine();
     4882    Machine* machine = ARG_globalData->machine;
    48774883
    48784884    JSValue* baseValue = ARG_src1;
     
    49114917    JSValue* value = ARG_src3;
    49124918
    4913     ASSERT(exec->machine()->isJSArray(baseValue));
     4919    ASSERT(ARG_globalData->machine->isJSArray(baseValue));
    49144920
    49154921    if (LIKELY(i >= 0))
     
    49504956    JSValue* src = ARG_src1;
    49514957
    4952     ExecState* exec = ARG_exec;
    4953 
    49544958    double v;
    49554959    if (fastIsNumber(src, v))
    4956         return jsNumber(exec, -v);
    4957     else {
    4958         JSValue* result = jsNumber(exec, -src->toNumber(exec));
    4959         VM_CHECK_EXCEPTION_AT_END();
    4960         return result;
    4961     }
     4960        return jsNumber(ARG_globalData, -v);
     4961
     4962    ExecState* exec = ARG_exec;
     4963    JSValue* result = jsNumber(ARG_globalData, -src->toNumber(exec));
     4964    VM_CHECK_EXCEPTION_AT_END();
     4965    return result;
    49624966}
    49634967
     
    50355039JSValue* Machine::cti_op_div(CTI_ARGS)
    50365040{
    5037     ExecState* exec = ARG_exec;
    50385041    JSValue* src1 = ARG_src1;
    50395042    JSValue* src2 = ARG_src2;
     
    50425045    double right;
    50435046    if (fastIsNumber(src1, left) && fastIsNumber(src2, right))
    5044         return jsNumber(exec, left / right);
    5045     else {
    5046         JSValue* result = jsNumber(exec, src1->toNumber(exec) / src2->toNumber(exec));
    5047         VM_CHECK_EXCEPTION_AT_END();
    5048         return result;
    5049     }
     5047        return jsNumber(ARG_globalData, left / right);
     5048
     5049    ExecState* exec = ARG_exec;
     5050    JSValue* result = jsNumber(ARG_globalData, src1->toNumber(exec) / src2->toNumber(exec));
     5051    VM_CHECK_EXCEPTION_AT_END();
     5052    return result;
    50505053}
    50515054
     
    50555058
    50565059    ExecState* exec = ARG_exec;
    5057     JSValue* result = jsNumber(exec, v->toNumber(exec) - 1);
     5060    JSValue* result = jsNumber(ARG_globalData, v->toNumber(exec) - 1);
    50585061    VM_CHECK_EXCEPTION_AT_END();
    50595062    return result;
     
    51015104    JSValue* number = v->toJSNumber(exec);
    51025105    VM_CHECK_EXCEPTION(JSValue*);
    5103     ARG_set2ndResult(jsNumber(exec, number->uncheckedGetNumber() + 1));
     5106    ARG_set2ndResult(jsNumber(ARG_globalData, number->uncheckedGetNumber() + 1));
    51045107    return number;
    51055108}
     
    51235126    JSValue* shift = ARG_src2;
    51245127
    5125     ExecState* exec = ARG_exec;
    5126 
    51275128    int32_t left;
    51285129    uint32_t right;
    51295130    if (JSImmediate::areBothImmediateNumbers(val, shift))
    5130         return jsNumber(exec, JSImmediate::getTruncatedInt32(val) << (JSImmediate::getTruncatedUInt32(shift) & 0x1f));
    5131     else if (fastToInt32(val, left) && fastToUInt32(shift, right))
    5132         return jsNumber(exec, left << (right & 0x1f));
    5133     else {
    5134         JSValue* result = jsNumber(exec, (val->toInt32(exec)) << (shift->toUInt32(exec) & 0x1f));
    5135         VM_CHECK_EXCEPTION_AT_END();
    5136         return result;
    5137     }
     5131        return jsNumber(ARG_globalData, JSImmediate::getTruncatedInt32(val) << (JSImmediate::getTruncatedUInt32(shift) & 0x1f));
     5132    if (fastToInt32(val, left) && fastToUInt32(shift, right))
     5133        return jsNumber(ARG_globalData, left << (right & 0x1f));
     5134
     5135    ExecState* exec = ARG_exec;
     5136    JSValue* result = jsNumber(ARG_globalData, (val->toInt32(exec)) << (shift->toUInt32(exec) & 0x1f));
     5137    VM_CHECK_EXCEPTION_AT_END();
     5138    return result;
    51385139}
    51395140
     
    51425143    JSValue* src1 = ARG_src1;
    51435144    JSValue* src2 = ARG_src2;
    5144 
    5145     ExecState* exec = ARG_exec;
    51465145
    51475146    int32_t left;
    51485147    int32_t right;
    51495148    if (fastToInt32(src1, left) && fastToInt32(src2, right))
    5150         return jsNumber(exec, left & right);
    5151     else {
    5152         JSValue* result = jsNumber(exec, src1->toInt32(exec) & src2->toInt32(exec));
    5153         VM_CHECK_EXCEPTION_AT_END();
    5154         return result;
    5155     }
     5149        return jsNumber(ARG_globalData, left & right);
     5150
     5151    ExecState* exec = ARG_exec;
     5152    JSValue* result = jsNumber(ARG_globalData, src1->toInt32(exec) & src2->toInt32(exec));
     5153    VM_CHECK_EXCEPTION_AT_END();
     5154    return result;
    51565155}
    51575156
     
    51605159    JSValue* val = ARG_src1;
    51615160    JSValue* shift = ARG_src2;
    5162 
    5163     ExecState* exec = ARG_exec;
    51645161
    51655162    int32_t left;
     
    51675164    if (JSImmediate::areBothImmediateNumbers(val, shift))
    51685165        return JSImmediate::rightShiftImmediateNumbers(val, shift);
    5169     else if (fastToInt32(val, left) && fastToUInt32(shift, right))
    5170         return jsNumber(exec, left >> (right & 0x1f));
    5171     else {
    5172         JSValue* result = jsNumber(exec, (val->toInt32(exec)) >> (shift->toUInt32(exec) & 0x1f));
    5173         VM_CHECK_EXCEPTION_AT_END();
    5174         return result;
    5175     }
     5166    if (fastToInt32(val, left) && fastToUInt32(shift, right))
     5167        return jsNumber(ARG_globalData, left >> (right & 0x1f));
     5168
     5169    ExecState* exec = ARG_exec;
     5170    JSValue* result = jsNumber(ARG_globalData, (val->toInt32(exec)) >> (shift->toUInt32(exec) & 0x1f));
     5171    VM_CHECK_EXCEPTION_AT_END();
     5172    return result;
    51765173}
    51775174
     
    51795176{
    51805177    JSValue* src = ARG_src1;
    5181 
    5182     ExecState* exec = ARG_exec;
    51835178
    51845179    int value;
    51855180    if (fastToInt32(src, value))
    5186         return jsNumber(exec, ~value);
     5181        return jsNumber(ARG_globalData, ~value);
    51875182           
    5188     JSValue* result = jsNumber(exec, ~src->toInt32(exec));
     5183    ExecState* exec = ARG_exec;
     5184    JSValue* result = jsNumber(ARG_globalData, ~src->toInt32(exec));
    51895185    VM_CHECK_EXCEPTION_AT_END();
    51905186    return result;
     
    52395235    ExecState* exec = ARG_exec;
    52405236    double d = dividendValue->toNumber(exec);
    5241     JSValue* result = jsNumber(exec, fmod(d, divisorValue->toNumber(exec)));
     5237    JSValue* result = jsNumber(ARG_globalData, fmod(d, divisorValue->toNumber(exec)));
    52425238    VM_CHECK_EXCEPTION_AT_END();
    52435239    return result;
     
    52745270    VM_CHECK_EXCEPTION(JSValue*);
    52755271
    5276     ARG_set2ndResult(jsNumber(exec, number->uncheckedGetNumber() - 1));
     5272    ARG_set2ndResult(jsNumber(ARG_globalData, number->uncheckedGetNumber() - 1));
    52775273    return number;
    52785274}
     
    52885284        return JSImmediate::rightShiftImmediateNumbers(val, shift);
    52895285    else {
    5290         JSValue* result = jsNumber(exec, (val->toUInt32(exec)) >> (shift->toUInt32(exec) & 0x1f));
     5286        JSValue* result = jsNumber(ARG_globalData, (val->toUInt32(exec)) >> (shift->toUInt32(exec) & 0x1f));
    52915287        VM_CHECK_EXCEPTION_AT_END();
    52925288        return result;
     
    53015297    ExecState* exec = ARG_exec;
    53025298
    5303     JSValue* result = jsNumber(exec, src1->toInt32(exec) ^ src2->toInt32(exec));
     5299    JSValue* result = jsNumber(ARG_globalData, src1->toInt32(exec) ^ src2->toInt32(exec));
    53045300    VM_CHECK_EXCEPTION_AT_END();
    53055301    return result;
     
    53185314    ExecState* exec = ARG_exec;
    53195315
    5320     JSValue* result = jsNumber(exec, src1->toInt32(exec) | src2->toInt32(exec));
     5316    JSValue* result = jsNumber(ARG_globalData, src1->toInt32(exec) | src2->toInt32(exec));
    53215317    VM_CHECK_EXCEPTION_AT_END();
    53225318    return result;
     
    53315327    ScopeChainNode* scopeChain = Machine::scopeChain(r);
    53325328
    5333     Machine* machine = exec->machine();
     5329    Machine* machine = ARG_globalData->machine;
    53345330   
    53355331    JSValue* funcVal = ARG_src1;
     
    53595355
    53605356    JSValue* exceptionValue = ARG_src1;
    5361     Instruction* handlerVPC = ARG_exec->machine()->throwException(exec, exceptionValue, codeBlock->instructions.begin() + vPCIndex, r, true);
     5357    Instruction* handlerVPC = ARG_globalData->machine->throwException(exec, exceptionValue, codeBlock->instructions.begin() + vPCIndex, r, true);
    53625358
    53635359    if (handlerVPC) {
     
    54315427JSValue* Machine::cti_op_is_string(CTI_ARGS)
    54325428{
    5433     return jsBoolean(ARG_exec->machine()->isJSString(ARG_src1));
     5429    return jsBoolean(ARG_globalData->machine->isJSString(ARG_src1));
    54345430}
    54355431
     
    56495645    int lastLine = ARG_int3;
    56505646
    5651     exec->machine()->debug(exec, r, static_cast<DebugHookID>(debugHookID), firstLine, lastLine);
     5647    ARG_globalData->machine->debug(exec, r, static_cast<DebugHookID>(debugHookID), firstLine, lastLine);
    56525648}
    56535649
     
    56655661    JSValue* exceptionValue = exec->exception();
    56665662
    5667     Instruction* handlerVPC = ARG_exec->machine()->throwException(exec, exceptionValue, codeBlock->instructions.begin() + vPCIndex, r, false);
     5663    Instruction* handlerVPC = ARG_globalData->machine->throwException(exec, exceptionValue, codeBlock->instructions.begin() + vPCIndex, r, false);
    56685664
    56695665    if (handlerVPC) {
Note: See TracChangeset for help on using the changeset viewer.