Ignore:
Timestamp:
Feb 27, 2007, 4:26:22 PM (18 years ago)
Author:
ggaren
Message:

Reviewed by Darin Adler.


Follow-up to fixing http://bugs.webkit.org/show_bug.cgi?id=12659 | <rdar://problem/4954306>
JS objects not collected after closing window @ ebay.com/maps.google.com


Changed Interpreter cache of global constructors and prototypes from
ProtectedPtrs to bare, marked pointers. ProtectedPtrs are inefficient,
and they increase the risk of reference cycles. Also, Darin said something
about ProtectedPtrs giving him warts.


Also changed data members to precise types from generic JSObject*'s.


Layout tests and JS tests pass.

  • kjs/SavedBuiltins.h:
  • kjs/interpreter.cpp: (KJS::Interpreter::init): (KJS::Interpreter::~Interpreter): (KJS::Interpreter::initGlobalObject): Moved Identifier::init() call to constructor, for clarity. (KJS::Interpreter::mark):
  • kjs/interpreter.h:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/JavaScriptCore/kjs/SavedBuiltins.h

    r17437 r19901  
    4444    friend class Interpreter;
    4545private:
    46     ProtectedPtr<JSObject> m_Object;
    47     ProtectedPtr<JSObject> m_Function;
    48     ProtectedPtr<JSObject> m_Array;
    49     ProtectedPtr<JSObject> m_Boolean;
    50     ProtectedPtr<JSObject> m_String;
    51     ProtectedPtr<JSObject> m_Number;
    52     ProtectedPtr<JSObject> m_Date;
    53     ProtectedPtr<JSObject> m_RegExp;
    54     ProtectedPtr<JSObject> m_Error;
     46    ProtectedPtr<ObjectObjectImp> m_Object;
     47    ProtectedPtr<FunctionObjectImp> m_Function;
     48    ProtectedPtr<ArrayObjectImp> m_Array;
     49    ProtectedPtr<BooleanObjectImp> m_Boolean;
     50    ProtectedPtr<StringObjectImp> m_String;
     51    ProtectedPtr<NumberObjectImp> m_Number;
     52    ProtectedPtr<DateObjectImp> m_Date;
     53    ProtectedPtr<RegExpObjectImp> m_RegExp;
     54    ProtectedPtr<ErrorObjectImp> m_Error;
    5555   
    56     ProtectedPtr<JSObject> m_ObjectPrototype;
    57     ProtectedPtr<JSObject> m_FunctionPrototype;
    58     ProtectedPtr<JSObject> m_ArrayPrototype;
    59     ProtectedPtr<JSObject> m_BooleanPrototype;
    60     ProtectedPtr<JSObject> m_StringPrototype;
    61     ProtectedPtr<JSObject> m_NumberPrototype;
    62     ProtectedPtr<JSObject> m_DatePrototype;
    63     ProtectedPtr<JSObject> m_RegExpPrototype;
    64     ProtectedPtr<JSObject> m_ErrorPrototype;
     56    ProtectedPtr<ObjectPrototype> m_ObjectPrototype;
     57    ProtectedPtr<FunctionPrototype> m_FunctionPrototype;
     58    ProtectedPtr<ArrayPrototype> m_ArrayPrototype;
     59    ProtectedPtr<BooleanPrototype> m_BooleanPrototype;
     60    ProtectedPtr<StringPrototype> m_StringPrototype;
     61    ProtectedPtr<NumberPrototype> m_NumberPrototype;
     62    ProtectedPtr<DatePrototype> m_DatePrototype;
     63    ProtectedPtr<RegExpPrototype> m_RegExpPrototype;
     64    ProtectedPtr<ErrorPrototype> m_ErrorPrototype;
    6565   
    66     ProtectedPtr<JSObject> m_EvalError;
    67     ProtectedPtr<JSObject> m_RangeError;
    68     ProtectedPtr<JSObject> m_ReferenceError;
    69     ProtectedPtr<JSObject> m_SyntaxError;
    70     ProtectedPtr<JSObject> m_TypeError;
    71     ProtectedPtr<JSObject> m_UriError;
     66    ProtectedPtr<NativeErrorImp> m_EvalError;
     67    ProtectedPtr<NativeErrorImp> m_RangeError;
     68    ProtectedPtr<NativeErrorImp> m_ReferenceError;
     69    ProtectedPtr<NativeErrorImp> m_SyntaxError;
     70    ProtectedPtr<NativeErrorImp> m_TypeError;
     71    ProtectedPtr<NativeErrorImp> m_UriError;
    7272   
    73     ProtectedPtr<JSObject> m_EvalErrorPrototype;
    74     ProtectedPtr<JSObject> m_RangeErrorPrototype;
    75     ProtectedPtr<JSObject> m_ReferenceErrorPrototype;
    76     ProtectedPtr<JSObject> m_SyntaxErrorPrototype;
    77     ProtectedPtr<JSObject> m_TypeErrorPrototype;
    78     ProtectedPtr<JSObject> m_UriErrorPrototype;
     73    ProtectedPtr<NativeErrorPrototype> m_EvalErrorPrototype;
     74    ProtectedPtr<NativeErrorPrototype> m_RangeErrorPrototype;
     75    ProtectedPtr<NativeErrorPrototype> m_ReferenceErrorPrototype;
     76    ProtectedPtr<NativeErrorPrototype> m_SyntaxErrorPrototype;
     77    ProtectedPtr<NativeErrorPrototype> m_TypeErrorPrototype;
     78    ProtectedPtr<NativeErrorPrototype> m_UriErrorPrototype;
    7979};
    8080
Note: See TracChangeset for help on using the changeset viewer.