Ignore:
Timestamp:
Jul 10, 2003, 2:18:25 PM (22 years ago)
Author:
mjs
Message:

JavaScriptCore:

Reviewed by Darin.

The crux of this was saving and restoring the prototype objects
for all the standard types when saving and restoring for the page
cache.

  • kjs/internal.cpp: (InterpreterImp::saveBuiltins): (InterpreterImp::restoreBuiltins):
  • kjs/internal.h:
  • kjs/interpreter.cpp: (Interpreter::saveBuiltins): (Interpreter::restoreBuiltins): (SavedBuiltins::SavedBuiltins): (SavedBuiltins::~SavedBuiltins):
  • kjs/interpreter.h:
  • kjs/property_map.cpp:

WebCore:

Reviewed by Darin.

  • kwq/KWQKHTMLPart.h:
  • kwq/KWQKHTMLPart.mm: (KWQKHTMLPart::saveLocationProperties): Save the location object's properties, not the window's (!) (KWQKHTMLPart::saveInterpreterBuiltins): New function to save builtin properties of the interpeter. (KWQKHTMLPart::restoreInterpreterBuiltins): Similarly to restore them. (KWQKHTMLPart::openURLFromPageCache): Restore interpreter builtins too.
  • kwq/KWQPageState.h:
  • kwq/KWQPageState.mm: (-[KWQPageState initWithDocument:URL:windowProperties:locationProperties:interpreterBuiltins:]): Handle interpreter builtins. (-[KWQPageState invalidate]): Likewise. (-[KWQPageState dealloc]): Likewise. (-[KWQPageState interpreterBuiltins]): New method.
  • kwq/WebCoreBridge.mm: (-[WebCoreBridge saveDocumentToPageCache]): Handle interpeter builtins.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/JavaScriptCore/kjs/internal.cpp

    r4363 r4612  
    547547}
    548548
    549 void InterpreterImp::initGlobalObject()
     549 void InterpreterImp::initGlobalObject()
    550550{
    551551  Identifier::init();
     
    821821    d->detach(m_interpreter);
    822822  dbg = d;
     823}
     824
     825void InterpreterImp::saveBuiltins (SavedBuiltins &builtins) const
     826{
     827  if (!builtins._internal) {
     828    builtins._internal = new SavedBuiltinsInternal;
     829  }
     830
     831  builtins._internal->b_Object = b_Object;
     832  builtins._internal->b_Function = b_Function;
     833  builtins._internal->b_Array = b_Array;
     834  builtins._internal->b_Boolean = b_Boolean;
     835  builtins._internal->b_String = b_String;
     836  builtins._internal->b_Number = b_Number;
     837  builtins._internal->b_Date = b_Date;
     838  builtins._internal->b_RegExp = b_RegExp;
     839  builtins._internal->b_Error = b_Error;
     840 
     841  builtins._internal->b_ObjectPrototype = b_ObjectPrototype;
     842  builtins._internal->b_FunctionPrototype = b_FunctionPrototype;
     843  builtins._internal->b_ArrayPrototype = b_ArrayPrototype;
     844  builtins._internal->b_BooleanPrototype = b_BooleanPrototype;
     845  builtins._internal->b_StringPrototype = b_StringPrototype;
     846  builtins._internal->b_NumberPrototype = b_NumberPrototype;
     847  builtins._internal->b_DatePrototype = b_DatePrototype;
     848  builtins._internal->b_RegExpPrototype = b_RegExpPrototype;
     849  builtins._internal->b_ErrorPrototype = b_ErrorPrototype;
     850 
     851  builtins._internal->b_evalError = b_evalError;
     852  builtins._internal->b_rangeError = b_rangeError;
     853  builtins._internal->b_referenceError = b_referenceError;
     854  builtins._internal->b_syntaxError = b_syntaxError;
     855  builtins._internal->b_typeError = b_typeError;
     856  builtins._internal->b_uriError = b_uriError;
     857 
     858  builtins._internal->b_evalErrorPrototype = b_evalErrorPrototype;
     859  builtins._internal->b_rangeErrorPrototype = b_rangeErrorPrototype;
     860  builtins._internal->b_referenceErrorPrototype = b_referenceErrorPrototype;
     861  builtins._internal->b_syntaxErrorPrototype = b_syntaxErrorPrototype;
     862  builtins._internal->b_typeErrorPrototype = b_typeErrorPrototype;
     863  builtins._internal->b_uriErrorPrototype = b_uriErrorPrototype;
     864}
     865
     866void InterpreterImp::restoreBuiltins (const SavedBuiltins &builtins)
     867{
     868  if (!builtins._internal) {
     869    return;
     870  }
     871
     872  b_Object = builtins._internal->b_Object;
     873  b_Function = builtins._internal->b_Function;
     874  b_Array = builtins._internal->b_Array;
     875  b_Boolean = builtins._internal->b_Boolean;
     876  b_String = builtins._internal->b_String;
     877  b_Number = builtins._internal->b_Number;
     878  b_Date = builtins._internal->b_Date;
     879  b_RegExp = builtins._internal->b_RegExp;
     880  b_Error = builtins._internal->b_Error;
     881 
     882  b_ObjectPrototype = builtins._internal->b_ObjectPrototype;
     883  b_FunctionPrototype = builtins._internal->b_FunctionPrototype;
     884  b_ArrayPrototype = builtins._internal->b_ArrayPrototype;
     885  b_BooleanPrototype = builtins._internal->b_BooleanPrototype;
     886  b_StringPrototype = builtins._internal->b_StringPrototype;
     887  b_NumberPrototype = builtins._internal->b_NumberPrototype;
     888  b_DatePrototype = builtins._internal->b_DatePrototype;
     889  b_RegExpPrototype = builtins._internal->b_RegExpPrototype;
     890  b_ErrorPrototype = builtins._internal->b_ErrorPrototype;
     891 
     892  b_evalError = builtins._internal->b_evalError;
     893  b_rangeError = builtins._internal->b_rangeError;
     894  b_referenceError = builtins._internal->b_referenceError;
     895  b_syntaxError = builtins._internal->b_syntaxError;
     896  b_typeError = builtins._internal->b_typeError;
     897  b_uriError = builtins._internal->b_uriError;
     898 
     899  b_evalErrorPrototype = builtins._internal->b_evalErrorPrototype;
     900  b_rangeErrorPrototype = builtins._internal->b_rangeErrorPrototype;
     901  b_referenceErrorPrototype = builtins._internal->b_referenceErrorPrototype;
     902  b_syntaxErrorPrototype = builtins._internal->b_syntaxErrorPrototype;
     903  b_typeErrorPrototype = builtins._internal->b_typeErrorPrototype;
     904  b_uriErrorPrototype = builtins._internal->b_uriErrorPrototype;
    823905}
    824906
Note: See TracChangeset for help on using the changeset viewer.