Ignore:
Timestamp:
Dec 18, 2009, 12:46:08 PM (15 years ago)
Author:
[email protected]
Message:

Fixed intermittent failure seen on Windows buildbot, and in other JSC
API clients.

Reviewed by Adam Roben.

Added a WeakGCPtr class and changed OpaqueJSClass::cachedPrototype to
use it, to avoid vending a stale object as a prototype.

  • API/JSClassRef.cpp:

(OpaqueJSClassContextData::OpaqueJSClassContextData):
(OpaqueJSClass::prototype):

  • API/JSClassRef.h: Use WeakGCPtr.
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • runtime/WeakGCPtr.h: Added.

(JSC::WeakGCPtr::WeakGCPtr):
(JSC::WeakGCPtr::get):
(JSC::WeakGCPtr::clear):
(JSC::WeakGCPtr::operator*):
(JSC::WeakGCPtr::operator->):
(JSC::WeakGCPtr::operator!):
(JSC::WeakGCPtr::operator bool):
(JSC::WeakGCPtr::operator UnspecifiedBoolType):
(JSC::WeakGCPtr::assign):
(JSC::::operator):
(JSC::operator==):
(JSC::operator!=):
(JSC::static_pointer_cast):
(JSC::const_pointer_cast):
(JSC::getPtr): Added WeakGCPtr to the project.

File:
1 edited

Legend:

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

    r40169 r52334  
    143143OpaqueJSClassContextData::OpaqueJSClassContextData(OpaqueJSClass* jsClass)
    144144    : m_class(jsClass)
    145     , cachedPrototype(0)
    146145{
    147146    if (jsClass->m_staticValues) {
     
    241240        }
    242241    }
    243     return jsClassData.cachedPrototype;
    244 }
     242    return jsClassData.cachedPrototype.get();
     243}
Note: See TracChangeset for help on using the changeset viewer.