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/JSContextRef.cpp

    r35815 r35853  
    5656JSGlobalContextRef JSGlobalContextCreate(JSClassRef globalObjectClass)
    5757{
    58     return JSGlobalContextCreateInGroup(toRef(JSGlobalData::create().get()), globalObjectClass);
     58    JSLock lock(true);
     59    return JSGlobalContextCreateInGroup(toRef(&JSGlobalData::sharedInstance()), globalObjectClass);
    5960}
    6061
     
    6364    initializeThreading();
    6465
    65     JSGlobalData* globalData = toJS(group);
     66    JSLock lock(true);
     67
     68    RefPtr<JSGlobalData> globalData = group ? PassRefPtr<JSGlobalData>(toJS(group)) : JSGlobalData::create();
    6669
    6770    if (!globalObjectClass) {
    68         JSGlobalObject* globalObject = new (globalData) JSGlobalObject;
     71        JSGlobalObject* globalObject = new (globalData.get()) JSGlobalObject;
    6972        return JSGlobalContextRetain(toGlobalRef(globalObject->globalExec()));
    7073    }
    7174
    72     JSGlobalObject* globalObject = new (globalData) JSCallbackObject<JSGlobalObject>(globalObjectClass);
     75    JSGlobalObject* globalObject = new (globalData.get()) JSCallbackObject<JSGlobalObject>(globalObjectClass);
    7376    ExecState* exec = globalObject->globalExec();
    7477    JSValue* prototype = globalObjectClass->prototype(exec);
     
    8285{
    8386    ExecState* exec = toJS(ctx);
     87    JSLock lock(exec);
     88
    8489    JSGlobalData& globalData = exec->globalData();
    8590
     
    9499{
    95100    ExecState* exec = toJS(ctx);
     101    JSLock lock(exec);
    96102
    97103    gcUnprotect(exec->dynamicGlobalObject());
     
    116122    ExecState* exec = toJS(ctx);
    117123    exec->globalData().heap->registerThread();
     124    JSLock lock(exec);
    118125
    119126    // It is necessary to call toThisObject to get the wrapper object when used with WebCore.
Note: See TracChangeset for help on using the changeset viewer.