Ignore:
Timestamp:
Aug 20, 2008, 12:23:06 AM (17 years ago)
Author:
[email protected]
Message:

Reviewed by Geoff Garen.

Bring back shared JSGlobalData and implicit locking, because too many clients rely on it.

File:
1 edited

Legend:

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

    r35775 r35853  
    7171    ExecState* exec = toJS(ctx);
    7272    exec->globalData().heap->registerThread();
     73    JSLock lock(exec);
    7374
    7475    if (!jsClass)
     
    8687    ExecState* exec = toJS(ctx);
    8788    exec->globalData().heap->registerThread();
     89    JSLock lock(exec);
    8890
    8991    Identifier nameID = name ? name->identifier(exec) : Identifier(exec, "anonymous");
     
    9698    ExecState* exec = toJS(ctx);
    9799    exec->globalData().heap->registerThread();
     100    JSLock lock(exec);
    98101
    99102    JSValue* jsPrototype = jsClass
     
    110113    ExecState* exec = toJS(ctx);
    111114    exec->globalData().heap->registerThread();
     115    JSLock lock(exec);
    112116
    113117    Identifier nameID = name ? name->identifier(exec) : Identifier(exec, "anonymous");
     
    146150    ExecState* exec = toJS(ctx);
    147151    exec->globalData().heap->registerThread();
     152    JSLock lock(exec);
    148153
    149154    JSObject* jsObject = toJS(object);
     
    156161    ExecState* exec = toJS(ctx);
    157162    exec->globalData().heap->registerThread();
     163    JSLock lock(exec);
    158164
    159165    JSObject* jsObject = toJS(object);
     
    172178    ExecState* exec = toJS(ctx);
    173179    exec->globalData().heap->registerThread();
     180    JSLock lock(exec);
    174181
    175182    JSObject* jsObject = toJS(object);
     
    193200    ExecState* exec = toJS(ctx);
    194201    exec->globalData().heap->registerThread();
     202    JSLock lock(exec);
    195203
    196204    JSObject* jsObject = toJS(object);
     
    210218    ExecState* exec = toJS(ctx);
    211219    exec->globalData().heap->registerThread();
     220    JSLock lock(exec);
    212221
    213222    JSObject* jsObject = toJS(object);
     
    226235    ExecState* exec = toJS(ctx);
    227236    exec->globalData().heap->registerThread();
     237    JSLock lock(exec);
    228238
    229239    JSObject* jsObject = toJS(object);
     
    275285    ExecState* exec = toJS(ctx);
    276286    exec->globalData().heap->registerThread();
     287    JSLock lock(exec);
    277288
    278289    JSObject* jsObject = toJS(object);
     
    312323    ExecState* exec = toJS(ctx);
    313324    exec->globalData().heap->registerThread();
     325    JSLock lock(exec);
    314326
    315327    JSObject* jsObject = toJS(object);
     
    350362    ExecState* exec = toJS(ctx);
    351363    exec->globalData().heap->registerThread();
     364    JSLock lock(exec);
    352365
    353366    JSGlobalData* globalData = &exec->globalData();
     
    373386void JSPropertyNameArrayRelease(JSPropertyNameArrayRef array)
    374387{
    375     if (--array->refCount == 0)
     388    if (--array->refCount == 0) {
     389        JSLock lock(array->globalData->isSharedInstance);
    376390        delete array;
     391    }
    377392}
    378393
     
    392407
    393408    propertyNames->globalData()->heap->registerThread();
     409    JSLock lock(propertyNames->globalData()->isSharedInstance);
    394410
    395411    propertyNames->add(propertyName->identifier(propertyNames->globalData()));
Note: See TracChangeset for help on using the changeset viewer.