Ignore:
Timestamp:
May 3, 2009, 12:27:42 PM (16 years ago)
Author:
[email protected]
Message:

JavaScriptCore:

2009-05-02 Sam Weinig <[email protected]>

Roll JSC API number marshaling back in.

WebCore:

2009-05-02 Sam Weinig <[email protected]>

Roll JSC API number marshaling back in.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/JavaScriptCore/API/JSValueRef.cpp

    r43138 r43157  
    4242#include <algorithm> // for std::min
    4343
    44 JSType JSValueGetType(JSContextRef, JSValueRef value)
    45 {
    46     JSC::JSValue jsValue = toJS(value);
     44JSType JSValueGetType(JSContextRef ctx, JSValueRef value)
     45{
     46    JSC::ExecState* exec = toJS(ctx);
     47    exec->globalData().heap.registerThread();
     48    JSC::JSLock lock(exec);
     49
     50    JSC::JSValue jsValue = toJS(exec, value);
     51
    4752    if (jsValue.isUndefined())
    4853        return kJSTypeUndefined;
     
    6166using namespace JSC; // placed here to avoid conflict between JSC::JSType and JSType, above.
    6267
    63 bool JSValueIsUndefined(JSContextRef, JSValueRef value)
    64 {
    65     JSValue jsValue = toJS(value);
     68bool JSValueIsUndefined(JSContextRef ctx, JSValueRef value)
     69{
     70    ExecState* exec = toJS(ctx);
     71    exec->globalData().heap.registerThread();
     72    JSLock lock(exec);
     73
     74    JSValue jsValue = toJS(exec, value);
    6675    return jsValue.isUndefined();
    6776}
    6877
    69 bool JSValueIsNull(JSContextRef, JSValueRef value)
    70 {
    71     JSValue jsValue = toJS(value);
     78bool JSValueIsNull(JSContextRef ctx, JSValueRef value)
     79{
     80    ExecState* exec = toJS(ctx);
     81    exec->globalData().heap.registerThread();
     82    JSLock lock(exec);
     83
     84    JSValue jsValue = toJS(exec, value);
    7285    return jsValue.isNull();
    7386}
    7487
    75 bool JSValueIsBoolean(JSContextRef, JSValueRef value)
    76 {
    77     JSValue jsValue = toJS(value);
     88bool JSValueIsBoolean(JSContextRef ctx, JSValueRef value)
     89{
     90    ExecState* exec = toJS(ctx);
     91    exec->globalData().heap.registerThread();
     92    JSLock lock(exec);
     93
     94    JSValue jsValue = toJS(exec, value);
    7895    return jsValue.isBoolean();
    7996}
    8097
    81 bool JSValueIsNumber(JSContextRef, JSValueRef value)
    82 {
    83     JSValue jsValue = toJS(value);
     98bool JSValueIsNumber(JSContextRef ctx, JSValueRef value)
     99{
     100    ExecState* exec = toJS(ctx);
     101    exec->globalData().heap.registerThread();
     102    JSLock lock(exec);
     103
     104    JSValue jsValue = toJS(exec, value);
    84105    return jsValue.isNumber();
    85106}
    86107
    87 bool JSValueIsString(JSContextRef, JSValueRef value)
    88 {
    89     JSValue jsValue = toJS(value);
     108bool JSValueIsString(JSContextRef ctx, JSValueRef value)
     109{
     110    ExecState* exec = toJS(ctx);
     111    exec->globalData().heap.registerThread();
     112    JSLock lock(exec);
     113
     114    JSValue jsValue = toJS(exec, value);
    90115    return jsValue.isString();
    91116}
    92117
    93 bool JSValueIsObject(JSContextRef, JSValueRef value)
    94 {
    95     JSValue jsValue = toJS(value);
     118bool JSValueIsObject(JSContextRef ctx, JSValueRef value)
     119{
     120    ExecState* exec = toJS(ctx);
     121    exec->globalData().heap.registerThread();
     122    JSLock lock(exec);
     123
     124    JSValue jsValue = toJS(exec, value);
    96125    return jsValue.isObject();
    97126}
    98127
    99 bool JSValueIsObjectOfClass(JSContextRef, JSValueRef value, JSClassRef jsClass)
    100 {
    101     JSValue jsValue = toJS(value);
     128bool JSValueIsObjectOfClass(JSContextRef ctx, JSValueRef value, JSClassRef jsClass)
     129{
     130    ExecState* exec = toJS(ctx);
     131    exec->globalData().heap.registerThread();
     132    JSLock lock(exec);
     133
     134    JSValue jsValue = toJS(exec, value);
    102135   
    103136    if (JSObject* o = jsValue.getObject()) {
     
    116149    JSLock lock(exec);
    117150
    118     JSValue jsA = toJS(a);
    119     JSValue jsB = toJS(b);
     151    JSValue jsA = toJS(exec, a);
     152    JSValue jsB = toJS(exec, b);
    120153
    121154    bool result = JSValue::equal(exec, jsA, jsB); // false if an exception is thrown
    122155    if (exec->hadException()) {
    123156        if (exception)
    124             *exception = toRef(exec->exception());
     157            *exception = toRef(exec, exec->exception());
    125158        exec->clearException();
    126159    }
     
    128161}
    129162
    130 bool JSValueIsStrictEqual(JSContextRef, JSValueRef a, JSValueRef b)
    131 {
    132     JSValue jsA = toJS(a);
    133     JSValue jsB = toJS(b);
    134    
    135     bool result = JSValue::strictEqual(jsA, jsB);
    136     return result;
     163bool JSValueIsStrictEqual(JSContextRef ctx, JSValueRef a, JSValueRef b)
     164{
     165    ExecState* exec = toJS(ctx);
     166    exec->globalData().heap.registerThread();
     167    JSLock lock(exec);
     168
     169    JSValue jsA = toJS(exec, a);
     170    JSValue jsB = toJS(exec, b);
     171
     172    return JSValue::strictEqual(jsA, jsB);
    137173}
    138174
     
    143179    JSLock lock(exec);
    144180
    145     JSValue jsValue = toJS(value);
     181    JSValue jsValue = toJS(exec, value);
     182
    146183    JSObject* jsConstructor = toJS(constructor);
    147184    if (!jsConstructor->structure()->typeInfo().implementsHasInstance())
     
    150187    if (exec->hadException()) {
    151188        if (exception)
    152             *exception = toRef(exec->exception());
     189            *exception = toRef(exec, exec->exception());
    153190        exec->clearException();
    154191    }
     
    156193}
    157194
    158 JSValueRef JSValueMakeUndefined(JSContextRef)
    159 {
    160     return toRef(jsUndefined());
    161 }
    162 
    163 JSValueRef JSValueMakeNull(JSContextRef)
    164 {
    165     return toRef(jsNull());
    166 }
    167 
    168 JSValueRef JSValueMakeBoolean(JSContextRef, bool value)
    169 {
    170     return toRef(jsBoolean(value));
     195JSValueRef JSValueMakeUndefined(JSContextRef ctx)
     196{
     197    ExecState* exec = toJS(ctx);
     198    exec->globalData().heap.registerThread();
     199    JSLock lock(exec);
     200
     201    return toRef(exec, jsUndefined());
     202}
     203
     204JSValueRef JSValueMakeNull(JSContextRef ctx)
     205{
     206    ExecState* exec = toJS(ctx);
     207    exec->globalData().heap.registerThread();
     208    JSLock lock(exec);
     209
     210    return toRef(exec, jsNull());
     211}
     212
     213JSValueRef JSValueMakeBoolean(JSContextRef ctx, bool value)
     214{
     215    ExecState* exec = toJS(ctx);
     216    exec->globalData().heap.registerThread();
     217    JSLock lock(exec);
     218
     219    return toRef(exec, jsBoolean(value));
    171220}
    172221
     
    177226    JSLock lock(exec);
    178227
    179     return toRef(jsNumber(exec, value));
     228    return toRef(exec, jsNumber(exec, value));
    180229}
    181230
     
    186235    JSLock lock(exec);
    187236
    188     return toRef(jsString(exec, string->ustring()));
     237    return toRef(exec, jsString(exec, string->ustring()));
    189238}
    190239
     
    192241{
    193242    ExecState* exec = toJS(ctx);
    194     JSValue jsValue = toJS(value);
     243    exec->globalData().heap.registerThread();
     244    JSLock lock(exec);
     245
     246    JSValue jsValue = toJS(exec, value);
    195247    return jsValue.toBoolean(exec);
    196248}
     
    202254    JSLock lock(exec);
    203255
    204     JSValue jsValue = toJS(value);
     256    JSValue jsValue = toJS(exec, value);
    205257
    206258    double number = jsValue.toNumber(exec);
    207259    if (exec->hadException()) {
    208260        if (exception)
    209             *exception = toRef(exec->exception());
     261            *exception = toRef(exec, exec->exception());
    210262        exec->clearException();
    211263        number = NaN;
     
    220272    JSLock lock(exec);
    221273
    222     JSValue jsValue = toJS(value);
     274    JSValue jsValue = toJS(exec, value);
    223275   
    224276    RefPtr<OpaqueJSString> stringRef(OpaqueJSString::create(jsValue.toString(exec)));
    225277    if (exec->hadException()) {
    226278        if (exception)
    227             *exception = toRef(exec->exception());
     279            *exception = toRef(exec, exec->exception());
    228280        exec->clearException();
    229281        stringRef.clear();
     
    238290    JSLock lock(exec);
    239291
    240     JSValue jsValue = toJS(value);
     292    JSValue jsValue = toJS(exec, value);
    241293   
    242294    JSObjectRef objectRef = toRef(jsValue.toObject(exec));
    243295    if (exec->hadException()) {
    244296        if (exception)
    245             *exception = toRef(exec->exception());
     297            *exception = toRef(exec, exec->exception());
    246298        exec->clearException();
    247299        objectRef = 0;
     
    256308    JSLock lock(exec);
    257309
    258     JSValue jsValue = toJS(value);
     310    JSValue jsValue = toJS(exec, value);
    259311    gcProtect(jsValue);
    260312}
     
    266318    JSLock lock(exec);
    267319
    268     JSValue jsValue = toJS(value);
     320    JSValue jsValue = toJS(exec, value);
    269321    gcUnprotect(jsValue);
    270322}
Note: See TracChangeset for help on using the changeset viewer.