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


Ignore:
Timestamp:
Oct 20, 2008, 9:22:55 AM (17 years ago)
Author:
Darin Adler
Message:

2008-10-20 Darin Adler <Darin Adler>

Reviewed by Geoff Garen.

  • get CTI working on Windows again
  • VM/CTI.cpp: (JSC::CTI::emitCTICall): Add an overload for functions that return JSObject*.
  • VM/CTI.h: Use JSValue* and JSObject* as return types for cti_op functions. Apparently, MSVC doesn't handle returning the JSValuePtr struct in a register. We'll have to look into this more.
  • VM/Machine.cpp: (JSC::Machine::cti_op_convert_this): (JSC::Machine::cti_op_add): (JSC::Machine::cti_op_pre_inc): (JSC::Machine::cti_op_new_object): (JSC::Machine::cti_op_get_by_id): (JSC::Machine::cti_op_get_by_id_second): (JSC::Machine::cti_op_get_by_id_generic): (JSC::Machine::cti_op_get_by_id_fail): (JSC::Machine::cti_op_instanceof): (JSC::Machine::cti_op_del_by_id): (JSC::Machine::cti_op_mul): (JSC::Machine::cti_op_new_func): (JSC::Machine::cti_op_push_activation): (JSC::Machine::cti_op_call_NotJSFunction): (JSC::Machine::cti_op_new_array): (JSC::Machine::cti_op_resolve): (JSC::Machine::cti_op_construct_JSConstructFast): (JSC::Machine::cti_op_construct_NotJSConstruct): (JSC::Machine::cti_op_get_by_val): (JSC::Machine::cti_op_sub): (JSC::Machine::cti_op_lesseq): (JSC::Machine::cti_op_negate): (JSC::Machine::cti_op_resolve_base): (JSC::Machine::cti_op_resolve_skip): (JSC::Machine::cti_op_resolve_global): (JSC::Machine::cti_op_div): (JSC::Machine::cti_op_pre_dec): (JSC::Machine::cti_op_not): (JSC::Machine::cti_op_eq): (JSC::Machine::cti_op_lshift): (JSC::Machine::cti_op_bitand): (JSC::Machine::cti_op_rshift): (JSC::Machine::cti_op_bitnot): (JSC::Machine::cti_op_new_func_exp): (JSC::Machine::cti_op_mod): (JSC::Machine::cti_op_less): (JSC::Machine::cti_op_neq): (JSC::Machine::cti_op_urshift): (JSC::Machine::cti_op_bitxor): (JSC::Machine::cti_op_new_regexp): (JSC::Machine::cti_op_bitor): (JSC::Machine::cti_op_call_eval): (JSC::Machine::cti_op_throw): (JSC::Machine::cti_op_next_pname): (JSC::Machine::cti_op_typeof): (JSC::Machine::cti_op_is_undefined): (JSC::Machine::cti_op_is_boolean): (JSC::Machine::cti_op_is_number): (JSC::Machine::cti_op_is_string): (JSC::Machine::cti_op_is_object): (JSC::Machine::cti_op_is_function): (JSC::Machine::cti_op_stricteq): (JSC::Machine::cti_op_nstricteq): (JSC::Machine::cti_op_to_jsnumber): (JSC::Machine::cti_op_in): (JSC::Machine::cti_op_push_new_scope): (JSC::Machine::cti_op_del_by_val): (JSC::Machine::cti_op_new_error): (JSC::Machine::cti_vm_throw): Change these functions to return pointer types, and never JSValuePtr.
  • VM/Machine.h: Ditto.
File:
1 edited

Legend:

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

    r37727 r37728  
    42484248    do { \
    42494249        VM_THROW_EXCEPTION_AT_END(); \
    4250         return noValue(); \
     4250        return 0; \
    42514251    } while (0)
    42524252#define VM_THROW_EXCEPTION_2() \
     
    42774277    } while (0)
    42784278
    4279 JSValuePtr Machine::cti_op_convert_this(CTI_ARGS)
     4279JSObject* Machine::cti_op_convert_this(CTI_ARGS)
    42804280{
    42814281    CTI_STACK_HACK();
     
    42984298}
    42994299
    4300 JSValuePtr Machine::cti_op_add(CTI_ARGS)
     4300JSValue* Machine::cti_op_add(CTI_ARGS)
    43014301{
    43024302    CTI_STACK_HACK();
     
    43104310    bool rightIsNumber = fastIsNumber(v2, right);
    43114311    if (rightIsNumber && fastIsNumber(v1, left))
    4312         return jsNumber(ARG_globalData, left + right);
     4312        return jsNumber(ARG_globalData, left + right).payload();
    43134313   
    43144314    CallFrame* callFrame = ARG_callFrame;
     
    43224322        }
    43234323
    4324         return jsString(ARG_globalData, value.release());
     4324        return JSValuePtr(jsString(ARG_globalData, value.release())).payload();
    43254325    }
    43264326
     
    43344334            VM_THROW_EXCEPTION();
    43354335        }
    4336         return jsString(ARG_globalData, value.release());
     4336        return JSValuePtr(jsString(ARG_globalData, value.release())).payload();
    43374337    }
    43384338
     
    43404340    JSValuePtr result = jsAddSlowCase(callFrame, v1, v2);
    43414341    VM_CHECK_EXCEPTION_AT_END();
    4342     return result;
    4343 }
    4344 
    4345 JSValuePtr Machine::cti_op_pre_inc(CTI_ARGS)
     4342    return result.payload();
     4343}
     4344
     4345JSValue* Machine::cti_op_pre_inc(CTI_ARGS)
    43464346{
    43474347    CTI_STACK_HACK();
     
    43524352    JSValuePtr result = jsNumber(ARG_globalData, v->toNumber(callFrame) + 1);
    43534353    VM_CHECK_EXCEPTION_AT_END();
    4354     return result;
     4354    return result.payload();
    43554355}
    43564356
     
    44094409}
    44104410
    4411 JSValuePtr Machine::cti_op_new_object(CTI_ARGS)
    4412 {
    4413     CTI_STACK_HACK();
    4414 
    4415     return constructEmptyObject(ARG_callFrame);;
     4411JSObject* Machine::cti_op_new_object(CTI_ARGS)
     4412{
     4413    CTI_STACK_HACK();
     4414
     4415    return constructEmptyObject(ARG_callFrame);
    44164416}
    44174417
     
    44664466}
    44674467
    4468 JSValuePtr Machine::cti_op_get_by_id(CTI_ARGS)
     4468JSValue* Machine::cti_op_get_by_id(CTI_ARGS)
    44694469{
    44704470    CTI_STACK_HACK();
     
    44804480
    44814481    VM_CHECK_EXCEPTION_AT_END();
    4482     return result;
    4483 }
    4484 
    4485 JSValuePtr Machine::cti_op_get_by_id_second(CTI_ARGS)
     4482    return result.payload();
     4483}
     4484
     4485JSValue* Machine::cti_op_get_by_id_second(CTI_ARGS)
    44864486{
    44874487    CTI_STACK_HACK();
     
    44974497
    44984498    VM_CHECK_EXCEPTION_AT_END();
    4499     return result;
    4500 }
    4501 
    4502 JSValuePtr Machine::cti_op_get_by_id_generic(CTI_ARGS)
     4499    return result.payload();
     4500}
     4501
     4502JSValue* Machine::cti_op_get_by_id_generic(CTI_ARGS)
    45034503{
    45044504    CTI_STACK_HACK();
     
    45124512
    45134513    VM_CHECK_EXCEPTION_AT_END();
    4514     return result;
    4515 }
    4516 
    4517 JSValuePtr Machine::cti_op_get_by_id_fail(CTI_ARGS)
     4514    return result.payload();
     4515}
     4516
     4517JSValue* Machine::cti_op_get_by_id_fail(CTI_ARGS)
    45184518{
    45194519    CTI_STACK_HACK();
     
    45304530
    45314531    VM_CHECK_EXCEPTION_AT_END();
    4532     return result;
    4533 }
    4534 
    4535 JSValuePtr Machine::cti_op_instanceof(CTI_ARGS)
     4532    return result.payload();
     4533}
     4534
     4535JSValue* Machine::cti_op_instanceof(CTI_ARGS)
    45364536{
    45374537    CTI_STACK_HACK();
     
    45574557
    45584558    if (!asObject(baseVal)->structureID()->typeInfo().implementsHasInstance())
    4559         return jsBoolean(false);
     4559        return JSValuePtr(jsBoolean(false)).payload();
    45604560
    45614561    if (!proto->isObject()) {
     
    45654565       
    45664566    if (!value->isObject())
    4567         return jsBoolean(false);
     4567        return JSValuePtr(jsBoolean(false)).payload();
    45684568
    45694569    JSValuePtr result = jsBoolean(asObject(baseVal)->hasInstance(callFrame, value, proto));
    45704570    VM_CHECK_EXCEPTION_AT_END();
    45714571
    4572     return result;
    4573 }
    4574 
    4575 JSValuePtr Machine::cti_op_del_by_id(CTI_ARGS)
     4572    return result.payload();
     4573}
     4574
     4575JSValue* Machine::cti_op_del_by_id(CTI_ARGS)
    45764576{
    45774577    CTI_STACK_HACK();
     
    45844584    JSValuePtr result = jsBoolean(baseObj->deleteProperty(callFrame, ident));
    45854585    VM_CHECK_EXCEPTION_AT_END();
    4586     return result;
    4587 }
    4588 
    4589 JSValuePtr Machine::cti_op_mul(CTI_ARGS)
     4586    return result.payload();
     4587}
     4588
     4589JSValue* Machine::cti_op_mul(CTI_ARGS)
    45904590{
    45914591    CTI_STACK_HACK();
     
    45974597    double right;
    45984598    if (fastIsNumber(src1, left) && fastIsNumber(src2, right))
    4599         return jsNumber(ARG_globalData, left * right);
     4599        return jsNumber(ARG_globalData, left * right).payload();
    46004600
    46014601    CallFrame* callFrame = ARG_callFrame;
    46024602    JSValuePtr result = jsNumber(ARG_globalData, src1->toNumber(callFrame) * src2->toNumber(callFrame));
    46034603    VM_CHECK_EXCEPTION_AT_END();
    4604     return result;
    4605 }
    4606 
    4607 JSValuePtr Machine::cti_op_new_func(CTI_ARGS)
     4604    return result.payload();
     4605}
     4606
     4607JSObject* Machine::cti_op_new_func(CTI_ARGS)
    46084608{
    46094609    CTI_STACK_HACK();
     
    46984698}
    46994699
    4700 JSValuePtr Machine::cti_op_push_activation(CTI_ARGS)
     4700JSObject* Machine::cti_op_push_activation(CTI_ARGS)
    47014701{
    47024702    CTI_STACK_HACK();
     
    47074707}
    47084708
    4709 JSValuePtr Machine::cti_op_call_NotJSFunction(CTI_ARGS)
     4709JSValue* Machine::cti_op_call_NotJSFunction(CTI_ARGS)
    47104710{
    47114711    CTI_STACK_HACK();
     
    47424742            (*ARG_profilerReference)->didExecute(previousCallFrame, asObject(funcVal));
    47434743
    4744         return returnValue;
     4744        return returnValue.payload();
    47454745    }
    47464746
     
    47994799}
    48004800
    4801 JSValuePtr Machine::cti_op_new_array(CTI_ARGS)
     4801JSObject* Machine::cti_op_new_array(CTI_ARGS)
    48024802{
    48034803    CTI_STACK_HACK();
     
    48074807}
    48084808
    4809 JSValuePtr Machine::cti_op_resolve(CTI_ARGS)
     4809JSValue* Machine::cti_op_resolve(CTI_ARGS)
    48104810{
    48114811    CTI_STACK_HACK();
     
    48254825            JSValuePtr result = slot.getValue(callFrame, ident);
    48264826            VM_CHECK_EXCEPTION_AT_END();
    4827             return result;
     4827            return result.payload();
    48284828        }
    48294829    } while (++iter != end);
     
    48364836}
    48374837
    4838 JSValuePtr Machine::cti_op_construct_JSConstructFast(CTI_ARGS)
     4838JSObject* Machine::cti_op_construct_JSConstructFast(CTI_ARGS)
    48394839{
    48404840    CTI_STACK_HACK();
     
    49154915}
    49164916
    4917 JSValuePtr Machine::cti_op_construct_NotJSConstruct(CTI_ARGS)
     4917JSValue* Machine::cti_op_construct_NotJSConstruct(CTI_ARGS)
    49184918{
    49194919    CTI_STACK_HACK();
     
    49444944            (*ARG_profilerReference)->didExecute(callFrame, constructor);
    49454945
    4946         return returnValue;
     4946        return returnValue.payload();
    49474947    }
    49484948
     
    49534953}
    49544954
    4955 JSValuePtr Machine::cti_op_get_by_val(CTI_ARGS)
     4955JSValue* Machine::cti_op_get_by_val(CTI_ARGS)
    49564956{
    49574957    CTI_STACK_HACK();
     
    49844984
    49854985    VM_CHECK_EXCEPTION_AT_END();
    4986     return result;
     4986    return result.payload();
    49874987}
    49884988
     
    50315031}
    50325032
    5033 JSValuePtr Machine::cti_op_sub(CTI_ARGS)
     5033JSValue* Machine::cti_op_sub(CTI_ARGS)
    50345034{
    50355035    CTI_STACK_HACK();
     
    50415041    double right;
    50425042    if (fastIsNumber(src1, left) && fastIsNumber(src2, right))
    5043         return jsNumber(ARG_globalData, left - right);
     5043        return jsNumber(ARG_globalData, left - right).payload();
    50445044
    50455045    CallFrame* callFrame = ARG_callFrame;
    50465046    JSValuePtr result = jsNumber(ARG_globalData, src1->toNumber(callFrame) - src2->toNumber(callFrame));
    50475047    VM_CHECK_EXCEPTION_AT_END();
    5048     return result;
     5048    return result.payload();
    50495049}
    50505050
     
    51095109}
    51105110
    5111 JSValuePtr Machine::cti_op_lesseq(CTI_ARGS)
     5111JSValue* Machine::cti_op_lesseq(CTI_ARGS)
    51125112{
    51135113    CTI_STACK_HACK();
     
    51165116    JSValuePtr result = jsBoolean(jsLessEq(callFrame, ARG_src1, ARG_src2));
    51175117    VM_CHECK_EXCEPTION_AT_END();
    5118     return result;
     5118    return result.payload();
    51195119}
    51205120
     
    51325132}
    51335133
    5134 JSValuePtr Machine::cti_op_negate(CTI_ARGS)
     5134JSValue* Machine::cti_op_negate(CTI_ARGS)
    51355135{
    51365136    CTI_STACK_HACK();
     
    51405140    double v;
    51415141    if (fastIsNumber(src, v))
    5142         return jsNumber(ARG_globalData, -v);
     5142        return jsNumber(ARG_globalData, -v).payload();
    51435143
    51445144    CallFrame* callFrame = ARG_callFrame;
    51455145    JSValuePtr result = jsNumber(ARG_globalData, -src->toNumber(callFrame));
    51465146    VM_CHECK_EXCEPTION_AT_END();
    5147     return result;
    5148 }
    5149 
    5150 JSValuePtr Machine::cti_op_resolve_base(CTI_ARGS)
    5151 {
    5152     CTI_STACK_HACK();
    5153 
    5154     return inlineResolveBase(ARG_callFrame, *ARG_id1, ARG_callFrame->scopeChain());
    5155 }
    5156 
    5157 JSValuePtr Machine::cti_op_resolve_skip(CTI_ARGS)
     5147    return result.payload();
     5148}
     5149
     5150JSValue* Machine::cti_op_resolve_base(CTI_ARGS)
     5151{
     5152    CTI_STACK_HACK();
     5153
     5154    return inlineResolveBase(ARG_callFrame, *ARG_id1, ARG_callFrame->scopeChain()).payload();
     5155}
     5156
     5157JSValue* Machine::cti_op_resolve_skip(CTI_ARGS)
    51585158{
    51595159    CTI_STACK_HACK();
     
    51785178            JSValuePtr result = slot.getValue(callFrame, ident);
    51795179            VM_CHECK_EXCEPTION_AT_END();
    5180             return result;
     5180            return result.payload();
    51815181        }
    51825182    } while (++iter != end);
     
    51895189}
    51905190
    5191 JSValuePtr Machine::cti_op_resolve_global(CTI_ARGS)
     5191JSValue* Machine::cti_op_resolve_global(CTI_ARGS)
    51925192{
    51935193    CTI_STACK_HACK();
     
    52085208            vPC[4] = globalObject->structureID();
    52095209            vPC[5] = slot.cachedOffset();
    5210             return result;
     5210            return result.payload();
    52115211        }
    52125212
    52135213        VM_CHECK_EXCEPTION_AT_END();
    5214         return result;
     5214        return result.payload();
    52155215    }
    52165216   
     
    52195219}
    52205220
    5221 JSValuePtr Machine::cti_op_div(CTI_ARGS)
     5221JSValue* Machine::cti_op_div(CTI_ARGS)
    52225222{
    52235223    CTI_STACK_HACK();
     
    52295229    double right;
    52305230    if (fastIsNumber(src1, left) && fastIsNumber(src2, right))
    5231         return jsNumber(ARG_globalData, left / right);
     5231        return jsNumber(ARG_globalData, left / right).payload();
    52325232
    52335233    CallFrame* callFrame = ARG_callFrame;
    52345234    JSValuePtr result = jsNumber(ARG_globalData, src1->toNumber(callFrame) / src2->toNumber(callFrame));
    52355235    VM_CHECK_EXCEPTION_AT_END();
    5236     return result;
    5237 }
    5238 
    5239 JSValuePtr Machine::cti_op_pre_dec(CTI_ARGS)
     5236    return result.payload();
     5237}
     5238
     5239JSValue* Machine::cti_op_pre_dec(CTI_ARGS)
    52405240{
    52415241    CTI_STACK_HACK();
     
    52465246    JSValuePtr result = jsNumber(ARG_globalData, v->toNumber(callFrame) - 1);
    52475247    VM_CHECK_EXCEPTION_AT_END();
    5248     return result;
     5248    return result.payload();
    52495249}
    52505250
     
    52625262}
    52635263
    5264 JSValuePtr Machine::cti_op_not(CTI_ARGS)
     5264JSValue* Machine::cti_op_not(CTI_ARGS)
    52655265{
    52665266    CTI_STACK_HACK();
     
    52725272    JSValuePtr result = jsBoolean(!src->toBoolean(callFrame));
    52735273    VM_CHECK_EXCEPTION_AT_END();
    5274     return result;
     5274    return result.payload();
    52755275}
    52765276
     
    53035303}
    53045304
    5305 JSValuePtr Machine::cti_op_eq(CTI_ARGS)
     5305JSValue* Machine::cti_op_eq(CTI_ARGS)
    53065306{
    53075307    CTI_STACK_HACK();
     
    53155315    JSValuePtr result = jsBoolean(equalSlowCaseInline(callFrame, src1, src2));
    53165316    VM_CHECK_EXCEPTION_AT_END();
    5317     return result;
    5318 }
    5319 
    5320 JSValuePtr Machine::cti_op_lshift(CTI_ARGS)
     5317    return result.payload();
     5318}
     5319
     5320JSValue* Machine::cti_op_lshift(CTI_ARGS)
    53215321{
    53225322    CTI_STACK_HACK();
     
    53285328    uint32_t right;
    53295329    if (JSImmediate::areBothImmediateNumbers(val, shift))
    5330         return jsNumber(ARG_globalData, JSImmediate::getTruncatedInt32(val) << (JSImmediate::getTruncatedUInt32(shift) & 0x1f));
     5330        return jsNumber(ARG_globalData, JSImmediate::getTruncatedInt32(val) << (JSImmediate::getTruncatedUInt32(shift) & 0x1f)).payload();
    53315331    if (fastToInt32(val, left) && fastToUInt32(shift, right))
    5332         return jsNumber(ARG_globalData, left << (right & 0x1f));
     5332        return jsNumber(ARG_globalData, left << (right & 0x1f)).payload();
    53335333
    53345334    CallFrame* callFrame = ARG_callFrame;
    53355335    JSValuePtr result = jsNumber(ARG_globalData, (val->toInt32(callFrame)) << (shift->toUInt32(callFrame) & 0x1f));
    53365336    VM_CHECK_EXCEPTION_AT_END();
    5337     return result;
    5338 }
    5339 
    5340 JSValuePtr Machine::cti_op_bitand(CTI_ARGS)
     5337    return result.payload();
     5338}
     5339
     5340JSValue* Machine::cti_op_bitand(CTI_ARGS)
    53415341{
    53425342    CTI_STACK_HACK();
     
    53485348    int32_t right;
    53495349    if (fastToInt32(src1, left) && fastToInt32(src2, right))
    5350         return jsNumber(ARG_globalData, left & right);
     5350        return jsNumber(ARG_globalData, left & right).payload();
    53515351
    53525352    CallFrame* callFrame = ARG_callFrame;
    53535353    JSValuePtr result = jsNumber(ARG_globalData, src1->toInt32(callFrame) & src2->toInt32(callFrame));
    53545354    VM_CHECK_EXCEPTION_AT_END();
    5355     return result;
    5356 }
    5357 
    5358 JSValuePtr Machine::cti_op_rshift(CTI_ARGS)
     5355    return result.payload();
     5356}
     5357
     5358JSValue* Machine::cti_op_rshift(CTI_ARGS)
    53595359{
    53605360    CTI_STACK_HACK();
     
    53665366    uint32_t right;
    53675367    if (JSImmediate::areBothImmediateNumbers(val, shift))
    5368         return JSImmediate::rightShiftImmediateNumbers(val, shift);
     5368        return JSImmediate::rightShiftImmediateNumbers(val, shift).payload();
    53695369    if (fastToInt32(val, left) && fastToUInt32(shift, right))
    5370         return jsNumber(ARG_globalData, left >> (right & 0x1f));
     5370        return jsNumber(ARG_globalData, left >> (right & 0x1f)).payload();
    53715371
    53725372    CallFrame* callFrame = ARG_callFrame;
    53735373    JSValuePtr result = jsNumber(ARG_globalData, (val->toInt32(callFrame)) >> (shift->toUInt32(callFrame) & 0x1f));
    53745374    VM_CHECK_EXCEPTION_AT_END();
    5375     return result;
    5376 }
    5377 
    5378 JSValuePtr Machine::cti_op_bitnot(CTI_ARGS)
     5375    return result.payload();
     5376}
     5377
     5378JSValue* Machine::cti_op_bitnot(CTI_ARGS)
    53795379{
    53805380    CTI_STACK_HACK();
     
    53845384    int value;
    53855385    if (fastToInt32(src, value))
    5386         return jsNumber(ARG_globalData, ~value);
     5386        return jsNumber(ARG_globalData, ~value).payload();
    53875387           
    53885388    CallFrame* callFrame = ARG_callFrame;
    53895389    JSValuePtr result = jsNumber(ARG_globalData, ~src->toInt32(callFrame));
    53905390    VM_CHECK_EXCEPTION_AT_END();
    5391     return result;
     5391    return result.payload();
    53925392}
    53935393
     
    54285428}
    54295429
    5430 JSValuePtr Machine::cti_op_new_func_exp(CTI_ARGS)
     5430JSObject* Machine::cti_op_new_func_exp(CTI_ARGS)
    54315431{
    54325432    CTI_STACK_HACK();
     
    54355435}
    54365436
    5437 JSValuePtr Machine::cti_op_mod(CTI_ARGS)
     5437JSValue* Machine::cti_op_mod(CTI_ARGS)
    54385438{
    54395439    CTI_STACK_HACK();
     
    54465446    JSValuePtr result = jsNumber(ARG_globalData, fmod(d, divisorValue->toNumber(callFrame)));
    54475447    VM_CHECK_EXCEPTION_AT_END();
    5448     return result;
    5449 }
    5450 
    5451 JSValuePtr Machine::cti_op_less(CTI_ARGS)
     5448    return result.payload();
     5449}
     5450
     5451JSValue* Machine::cti_op_less(CTI_ARGS)
    54525452{
    54535453    CTI_STACK_HACK();
     
    54565456    JSValuePtr result = jsBoolean(jsLess(callFrame, ARG_src1, ARG_src2));
    54575457    VM_CHECK_EXCEPTION_AT_END();
    5458     return result;
    5459 }
    5460 
    5461 JSValuePtr Machine::cti_op_neq(CTI_ARGS)
     5458    return result.payload();
     5459}
     5460
     5461JSValue* Machine::cti_op_neq(CTI_ARGS)
    54625462{
    54635463    CTI_STACK_HACK();
     
    54715471    JSValuePtr result = jsBoolean(!equalSlowCaseInline(callFrame, src1, src2));
    54725472    VM_CHECK_EXCEPTION_AT_END();
    5473     return result;
     5473    return result.payload();
    54745474}
    54755475
     
    54895489}
    54905490
    5491 JSValuePtr Machine::cti_op_urshift(CTI_ARGS)
     5491JSValue* Machine::cti_op_urshift(CTI_ARGS)
    54925492{
    54935493    CTI_STACK_HACK();
     
    54995499
    55005500    if (JSImmediate::areBothImmediateNumbers(val, shift) && !JSImmediate::isNegative(val))
    5501         return JSImmediate::rightShiftImmediateNumbers(val, shift);
     5501        return JSImmediate::rightShiftImmediateNumbers(val, shift).payload();
    55025502    else {
    55035503        JSValuePtr result = jsNumber(ARG_globalData, (val->toUInt32(callFrame)) >> (shift->toUInt32(callFrame) & 0x1f));
    55045504        VM_CHECK_EXCEPTION_AT_END();
    5505         return result;
    5506     }
    5507 }
    5508 
    5509 JSValuePtr Machine::cti_op_bitxor(CTI_ARGS)
     5505        return result.payload();
     5506    }
     5507}
     5508
     5509JSValue* Machine::cti_op_bitxor(CTI_ARGS)
    55105510{
    55115511    CTI_STACK_HACK();
     
    55185518    JSValuePtr result = jsNumber(ARG_globalData, src1->toInt32(callFrame) ^ src2->toInt32(callFrame));
    55195519    VM_CHECK_EXCEPTION_AT_END();
    5520     return result;
    5521 }
    5522 
    5523 JSValuePtr Machine::cti_op_new_regexp(CTI_ARGS)
     5520    return result.payload();
     5521}
     5522
     5523JSObject* Machine::cti_op_new_regexp(CTI_ARGS)
    55245524{
    55255525    CTI_STACK_HACK();
     
    55285528}
    55295529
    5530 JSValuePtr Machine::cti_op_bitor(CTI_ARGS)
     5530JSValue* Machine::cti_op_bitor(CTI_ARGS)
    55315531{
    55325532    CTI_STACK_HACK();
     
    55395539    JSValuePtr result = jsNumber(ARG_globalData, src1->toInt32(callFrame) | src2->toInt32(callFrame));
    55405540    VM_CHECK_EXCEPTION_AT_END();
    5541     return result;
    5542 }
    5543 
    5544 JSValuePtr Machine::cti_op_call_eval(CTI_ARGS)
     5541    return result.payload();
     5542}
     5543
     5544JSValue* Machine::cti_op_call_eval(CTI_ARGS)
    55455545{
    55465546    CTI_STACK_HACK();
     
    55665566            VM_THROW_EXCEPTION_AT_END();
    55675567        }
    5568         return result;
    5569     }
    5570 
    5571     return JSImmediate::impossibleValue();
    5572 }
    5573 
    5574 JSValuePtr Machine::cti_op_throw(CTI_ARGS)
     5568        return result.payload();
     5569    }
     5570
     5571    return JSImmediate::impossibleValue().payload();
     5572}
     5573
     5574JSValue* Machine::cti_op_throw(CTI_ARGS)
    55755575{
    55765576    CTI_STACK_HACK();
     
    55895589    if (!handlerVPC) {
    55905590        *ARG_exception = exceptionValue;
    5591         return JSImmediate::nullImmediate();
     5591        return JSImmediate::nullImmediate().payload();
    55925592    }
    55935593
     
    55965596    ASSERT(catchRoutine);
    55975597    CTI_SET_RETURN_ADDRESS(catchRoutine);
    5598     return exceptionValue;
     5598    return exceptionValue.payload();
    55995599}
    56005600
     
    56065606}
    56075607
    5608 JSValuePtr Machine::cti_op_next_pname(CTI_ARGS)
     5608JSValue* Machine::cti_op_next_pname(CTI_ARGS)
    56095609{
    56105610    CTI_STACK_HACK();
     
    56145614    if (!temp)
    56155615        it->invalidate();
    5616     return temp;
     5616    return temp.payload();
    56175617}
    56185618
     
    56335633}
    56345634
    5635 JSValuePtr Machine::cti_op_typeof(CTI_ARGS)
    5636 {
    5637     CTI_STACK_HACK();
    5638 
    5639     return jsTypeStringForValue(ARG_callFrame, ARG_src1);
    5640 }
    5641 
    5642 JSValuePtr Machine::cti_op_is_undefined(CTI_ARGS)
     5635JSValue* Machine::cti_op_typeof(CTI_ARGS)
     5636{
     5637    CTI_STACK_HACK();
     5638
     5639    return jsTypeStringForValue(ARG_callFrame, ARG_src1).payload();
     5640}
     5641
     5642JSValue* Machine::cti_op_is_undefined(CTI_ARGS)
    56435643{
    56445644    CTI_STACK_HACK();
    56455645
    56465646    JSValuePtr v = ARG_src1;
    5647     return jsBoolean(JSImmediate::isImmediate(v) ? v->isUndefined() : v->asCell()->structureID()->typeInfo().masqueradesAsUndefined());
    5648 }
    5649 
    5650 JSValuePtr Machine::cti_op_is_boolean(CTI_ARGS)
    5651 {
    5652     CTI_STACK_HACK();
    5653 
    5654     return jsBoolean(ARG_src1->isBoolean());
    5655 }
    5656 
    5657 JSValuePtr Machine::cti_op_is_number(CTI_ARGS)
    5658 {
    5659     CTI_STACK_HACK();
    5660 
    5661     return jsBoolean(ARG_src1->isNumber());
    5662 }
    5663 
    5664 JSValuePtr Machine::cti_op_is_string(CTI_ARGS)
    5665 {
    5666     CTI_STACK_HACK();
    5667 
    5668     return jsBoolean(ARG_globalData->machine->isJSString(ARG_src1));
    5669 }
    5670 
    5671 JSValuePtr Machine::cti_op_is_object(CTI_ARGS)
    5672 {
    5673     CTI_STACK_HACK();
    5674 
    5675     return jsBoolean(jsIsObjectType(ARG_src1));
    5676 }
    5677 
    5678 JSValuePtr Machine::cti_op_is_function(CTI_ARGS)
    5679 {
    5680     CTI_STACK_HACK();
    5681 
    5682     return jsBoolean(jsIsFunctionType(ARG_src1));
    5683 }
    5684 
    5685 JSValuePtr Machine::cti_op_stricteq(CTI_ARGS)
     5647    return jsBoolean(JSImmediate::isImmediate(v) ? v->isUndefined() : v->asCell()->structureID()->typeInfo().masqueradesAsUndefined()).payload();
     5648}
     5649
     5650JSValue* Machine::cti_op_is_boolean(CTI_ARGS)
     5651{
     5652    CTI_STACK_HACK();
     5653
     5654    return jsBoolean(ARG_src1->isBoolean()).payload();
     5655}
     5656
     5657JSValue* Machine::cti_op_is_number(CTI_ARGS)
     5658{
     5659    CTI_STACK_HACK();
     5660
     5661    return jsBoolean(ARG_src1->isNumber()).payload();
     5662}
     5663
     5664JSValue* Machine::cti_op_is_string(CTI_ARGS)
     5665{
     5666    CTI_STACK_HACK();
     5667
     5668    return jsBoolean(ARG_globalData->machine->isJSString(ARG_src1)).payload();
     5669}
     5670
     5671JSValue* Machine::cti_op_is_object(CTI_ARGS)
     5672{
     5673    CTI_STACK_HACK();
     5674
     5675    return jsBoolean(jsIsObjectType(ARG_src1)).payload();
     5676}
     5677
     5678JSValue* Machine::cti_op_is_function(CTI_ARGS)
     5679{
     5680    CTI_STACK_HACK();
     5681
     5682    return jsBoolean(jsIsFunctionType(ARG_src1)).payload();
     5683}
     5684
     5685JSValue* Machine::cti_op_stricteq(CTI_ARGS)
    56865686{
    56875687    CTI_STACK_HACK();
     
    56945694    ASSERT(!(JSImmediate::isEitherImmediate(src1, src2) & (src1 != JSImmediate::zeroImmediate()) & (src2 != JSImmediate::zeroImmediate())));
    56955695
    5696     return jsBoolean(strictEqualSlowCaseInline(src1, src2));
    5697 }
    5698 
    5699 JSValuePtr Machine::cti_op_nstricteq(CTI_ARGS)
     5696    return jsBoolean(strictEqualSlowCaseInline(src1, src2)).payload();
     5697}
     5698
     5699JSValue* Machine::cti_op_nstricteq(CTI_ARGS)
    57005700{
    57015701    CTI_STACK_HACK();
     
    57085708    ASSERT(!(JSImmediate::isEitherImmediate(src1, src2) & (src1 != JSImmediate::zeroImmediate()) & (src2 != JSImmediate::zeroImmediate())));
    57095709   
    5710     return jsBoolean(!strictEqualSlowCaseInline(src1, src2));
    5711 }
    5712 
    5713 JSValuePtr Machine::cti_op_to_jsnumber(CTI_ARGS)
     5710    return jsBoolean(!strictEqualSlowCaseInline(src1, src2)).payload();
     5711}
     5712
     5713JSValue* Machine::cti_op_to_jsnumber(CTI_ARGS)
    57145714{
    57155715    CTI_STACK_HACK();
     
    57205720    JSValuePtr result = src->toJSNumber(callFrame);
    57215721    VM_CHECK_EXCEPTION_AT_END();
    5722     return result;
    5723 }
    5724 
    5725 JSValuePtr Machine::cti_op_in(CTI_ARGS)
     5722    return result.payload();
     5723}
     5724
     5725JSValue* Machine::cti_op_in(CTI_ARGS)
    57265726{
    57275727    CTI_STACK_HACK();
     
    57445744    uint32_t i;
    57455745    if (propName->getUInt32(i))
    5746         return jsBoolean(baseObj->hasProperty(callFrame, i));
     5746        return jsBoolean(baseObj->hasProperty(callFrame, i)).payload();
    57475747
    57485748    Identifier property(callFrame, propName->toString(callFrame));
    57495749    VM_CHECK_EXCEPTION();
    5750     return jsBoolean(baseObj->hasProperty(callFrame, property));
    5751 }
    5752 
    5753 JSValuePtr Machine::cti_op_push_new_scope(CTI_ARGS)
     5750    return jsBoolean(baseObj->hasProperty(callFrame, property)).payload();
     5751}
     5752
     5753JSObject* Machine::cti_op_push_new_scope(CTI_ARGS)
    57545754{
    57555755    CTI_STACK_HACK();
     
    58415841}
    58425842
    5843 JSValuePtr Machine::cti_op_del_by_val(CTI_ARGS)
     5843JSValue* Machine::cti_op_del_by_val(CTI_ARGS)
    58445844{
    58455845    CTI_STACK_HACK();
     
    58635863
    58645864    VM_CHECK_EXCEPTION_AT_END();
    5865     return result;
     5865    return result.payload();
    58665866}
    58675867
     
    58925892}
    58935893
    5894 JSValuePtr Machine::cti_op_new_error(CTI_ARGS)
     5894JSObject* Machine::cti_op_new_error(CTI_ARGS)
    58955895{
    58965896    CTI_STACK_HACK();
     
    59185918}
    59195919
    5920 JSValuePtr Machine::cti_vm_throw(CTI_ARGS)
     5920JSValue* Machine::cti_vm_throw(CTI_ARGS)
    59215921{
    59225922    CTI_STACK_HACK();
     
    59365936    if (!handlerVPC) {
    59375937        *ARG_exception = exceptionValue;
    5938         return JSImmediate::nullImmediate();
     5938        return JSImmediate::nullImmediate().payload();
    59395939    }
    59405940
     
    59435943    ASSERT(catchRoutine);
    59445944    CTI_SET_RETURN_ADDRESS(catchRoutine);
    5945     return exceptionValue;
     5945    return exceptionValue.payload();
    59465946}
    59475947
Note: See TracChangeset for help on using the changeset viewer.