Changeset 50174 in webkit for trunk/JavaScriptCore


Ignore:
Timestamp:
Oct 27, 2009, 3:01:41 PM (16 years ago)
Author:
[email protected]
Message:

JavaScriptCore: https://bugs.webkit.org/show_bug.cgi?id=30800
Cache recently computed date data.

Patch by Geoffrey Garen <[email protected]> on 2009-10-27
Reviewed by Darin Adler and Oliver Hunt.

SunSpider reports a ~0.5% speedup, mostly from date-format-tofte.js.

  • runtime/DateInstance.cpp:

(JSC::DateInstance::DateInstance):
(JSC::DateInstance::getGregorianDateTime): Use the shared cache.

  • runtime/DateInstance.h: Renamed m_cache to m_data, to avoid the confusion

of a "cache cache".

  • runtime/DatePrototype.cpp:

(JSC::formatLocaleDate):
(JSC::dateProtoFuncToString):
(JSC::dateProtoFuncToUTCString):
(JSC::dateProtoFuncToISOString):
(JSC::dateProtoFuncToDateString):
(JSC::dateProtoFuncToTimeString):
(JSC::dateProtoFuncGetFullYear):
(JSC::dateProtoFuncGetUTCFullYear):
(JSC::dateProtoFuncToGMTString):
(JSC::dateProtoFuncGetMonth):
(JSC::dateProtoFuncGetUTCMonth):
(JSC::dateProtoFuncGetDate):
(JSC::dateProtoFuncGetUTCDate):
(JSC::dateProtoFuncGetDay):
(JSC::dateProtoFuncGetUTCDay):
(JSC::dateProtoFuncGetHours):
(JSC::dateProtoFuncGetUTCHours):
(JSC::dateProtoFuncGetMinutes):
(JSC::dateProtoFuncGetUTCMinutes):
(JSC::dateProtoFuncGetSeconds):
(JSC::dateProtoFuncGetUTCSeconds):
(JSC::dateProtoFuncGetTimezoneOffset):
(JSC::setNewValueFromTimeArgs):
(JSC::setNewValueFromDateArgs):
(JSC::dateProtoFuncSetYear):
(JSC::dateProtoFuncGetYear): Pass an ExecState to these functions, so they
can access the DateInstanceCache.

  • runtime/JSGlobalData.h: Keep a DateInstanceCache.

JavaScriptGlue: Updated for JavaScriptCore export changes.

Patch by Geoffrey Garen <[email protected]> on 2009-10-27
Reviewed by Oliver Hunt.

  • ForwardingHeaders/wtf/DateMath.h: Added.
Location:
trunk/JavaScriptCore
Files:
9 edited

Legend:

Unmodified
Added
Removed
  • trunk/JavaScriptCore/ChangeLog

    r50173 r50174  
     12009-10-27  Geoffrey Garen  <[email protected]>
     2
     3        Reviewed by Darin Adler and Oliver Hunt.
     4
     5        https://bugs.webkit.org/show_bug.cgi?id=30800
     6        Cache recently computed date data.
     7       
     8        SunSpider reports a ~0.5% speedup, mostly from date-format-tofte.js.
     9
     10        * GNUmakefile.am:
     11        * JavaScriptCore.gypi:
     12        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
     13        * JavaScriptCore.xcodeproj/project.pbxproj: Added new file.
     14
     15        * runtime/DateInstance.cpp:
     16        (JSC::DateInstance::DateInstance):
     17        (JSC::DateInstance::getGregorianDateTime): Use the shared cache.
     18
     19        * runtime/DateInstance.h: Renamed m_cache to m_data, to avoid the confusion
     20        of a "cache cache".
     21
     22        * runtime/DatePrototype.cpp:
     23        (JSC::formatLocaleDate):
     24        (JSC::dateProtoFuncToString):
     25        (JSC::dateProtoFuncToUTCString):
     26        (JSC::dateProtoFuncToISOString):
     27        (JSC::dateProtoFuncToDateString):
     28        (JSC::dateProtoFuncToTimeString):
     29        (JSC::dateProtoFuncGetFullYear):
     30        (JSC::dateProtoFuncGetUTCFullYear):
     31        (JSC::dateProtoFuncToGMTString):
     32        (JSC::dateProtoFuncGetMonth):
     33        (JSC::dateProtoFuncGetUTCMonth):
     34        (JSC::dateProtoFuncGetDate):
     35        (JSC::dateProtoFuncGetUTCDate):
     36        (JSC::dateProtoFuncGetDay):
     37        (JSC::dateProtoFuncGetUTCDay):
     38        (JSC::dateProtoFuncGetHours):
     39        (JSC::dateProtoFuncGetUTCHours):
     40        (JSC::dateProtoFuncGetMinutes):
     41        (JSC::dateProtoFuncGetUTCMinutes):
     42        (JSC::dateProtoFuncGetSeconds):
     43        (JSC::dateProtoFuncGetUTCSeconds):
     44        (JSC::dateProtoFuncGetTimezoneOffset):
     45        (JSC::setNewValueFromTimeArgs):
     46        (JSC::setNewValueFromDateArgs):
     47        (JSC::dateProtoFuncSetYear):
     48        (JSC::dateProtoFuncGetYear): Pass an ExecState to these functions, so they
     49        can access the DateInstanceCache.
     50
     51        * runtime/JSGlobalData.h: Keep a DateInstanceCache.
     52
    1532009-10-27  James Robinson  <[email protected]>
    254
  • trunk/JavaScriptCore/GNUmakefile.am

    r49802 r50174  
    391391        JavaScriptCore/runtime/DateInstance.cpp \
    392392        JavaScriptCore/runtime/DateInstance.h \
     393        JavaScriptCore/runtime/DateInstanceCache.h \
    393394        JavaScriptCore/runtime/DatePrototype.cpp \
    394395        JavaScriptCore/runtime/DatePrototype.h \
  • trunk/JavaScriptCore/JavaScriptCore.gypi

    r49802 r50174  
    195195            'runtime/DateInstance.cpp',
    196196            'runtime/DateInstance.h',
     197            'runtime/DateInstanceCache.h',
    197198            'runtime/DatePrototype.cpp',
    198199            'runtime/DatePrototype.h',
  • trunk/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj

    r49802 r50174  
    663663                        <File
    664664                                RelativePath="..\..\runtime\DateInstance.h"
     665                                >
     666                        </File>
     667                        <File
     668                                RelativePath="..\..\runtime\DateInstanceCache.h"
    665669                                >
    666670                        </File>
  • trunk/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj

    r49802 r50174  
    158158                148F21BC107EC54D0042EC2C /* Parser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 93F0B3A909BB4DC00068FCE3 /* Parser.cpp */; };
    159159                149559EE0DDCDDF700648087 /* DebuggerCallFrame.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 149559ED0DDCDDF700648087 /* DebuggerCallFrame.cpp */; };
     160                14A1563210966365006FA260 /* DateInstanceCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 14A1563010966365006FA260 /* DateInstanceCache.h */; };
    160161                14A23D750F4E1ABB0023CDAD /* JITStubs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 14A23D6C0F4E19CE0023CDAD /* JITStubs.cpp */; };
    161162                14A42E3F0F4F60EE00599099 /* TimeoutChecker.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 14A42E3D0F4F60EE00599099 /* TimeoutChecker.cpp */; };
     
    616617                149559ED0DDCDDF700648087 /* DebuggerCallFrame.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DebuggerCallFrame.cpp; sourceTree = "<group>"; };
    617618                149B24FF0D8AF6D1009CB8C7 /* Register.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Register.h; sourceTree = "<group>"; };
     619                14A1563010966365006FA260 /* DateInstanceCache.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DateInstanceCache.h; sourceTree = "<group>"; };
    618620                14A23D6C0F4E19CE0023CDAD /* JITStubs.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JITStubs.cpp; sourceTree = "<group>"; };
    619621                14A396A60CD2933100B5B4FF /* SymbolTable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SymbolTable.h; sourceTree = "<group>"; };
     
    14171419                        isa = PBXGroup;
    14181420                        children = (
    1419                                 A7FB604B103F5EAB0017A286 /* PropertyDescriptor.h */,
    14201421                                BCF605110E203EF800B9A64D /* ArgList.cpp */,
    14211422                                BCF605120E203EF800B9A64D /* ArgList.h */,
     
    14511452                                BC1166000E1997B1008066DD /* DateInstance.cpp */,
    14521453                                BC1166010E1997B1008066DD /* DateInstance.h */,
     1454                                14A1563010966365006FA260 /* DateInstanceCache.h */,
    14531455                                BCD203470E17135E002C7E82 /* DatePrototype.cpp */,
    14541456                                BCD203480E17135E002C7E82 /* DatePrototype.h */,
     
    15141516                                F692A8620255597D01FF60F7 /* JSString.h */,
    15151517                                14ABB454099C2A0F00E2A24F /* JSType.h */,
     1518                                6507D2970E871E4A00D7D896 /* JSTypeInfo.h */,
    15161519                                F692A8870255597D01FF60F7 /* JSValue.cpp */,
    15171520                                14ABB36E099C076400E2A24F /* JSValue.h */,
     
    15241527                                F692A8680255597D01FF60F7 /* Lookup.cpp */,
    15251528                                F692A8690255597D01FF60F7 /* Lookup.h */,
     1529                                A74B3498102A5F8E0032AB98 /* MarkStack.cpp */,
     1530                                A779558F101A74D500114E55 /* MarkStack.h */,
     1531                                A7C530E3102A3813005BC741 /* MarkStackPosix.cpp */,
    15261532                                F692A86A0255597D01FF60F7 /* MathObject.cpp */,
    15271533                                F692A86B0255597D01FF60F7 /* MathObject.h */,
     
    15441550                                F692A8770255597D01FF60F7 /* Operations.cpp */,
    15451551                                F692A8780255597D01FF60F7 /* Operations.h */,
     1552                                A7FB60A3103F7DC20017A286 /* PropertyDescriptor.cpp */,
     1553                                A7FB604B103F5EAB0017A286 /* PropertyDescriptor.h */,
    15461554                                BC95437C0EBA70FD0072B6D3 /* PropertyMapHashTable.h */,
    15471555                                65400C0F0A69BAF200509887 /* PropertyNameArray.cpp */,
     
    15841592                                5D53726D0E1C546B0021E549 /* Tracing.d */,
    15851593                                5D53726E0E1C54880021E549 /* Tracing.h */,
    1586                                 6507D2970E871E4A00D7D896 /* JSTypeInfo.h */,
    15871594                                F692A8850255597D01FF60F7 /* UString.cpp */,
    15881595                                F692A8860255597D01FF60F7 /* UString.h */,
    1589                                 A779558F101A74D500114E55 /* MarkStack.h */,
    1590                                 A7C530E3102A3813005BC741 /* MarkStackPosix.cpp */,
    1591                                 A74B3498102A5F8E0032AB98 /* MarkStack.cpp */,
    1592                                 A7FB60A3103F7DC20017A286 /* PropertyDescriptor.cpp */,
    15931596                        );
    15941597                        path = runtime;
     
    19992002                                BC87CDB910712AD4000614CF /* JSONObject.lut.h in Headers */,
    20002003                                148CD1D8108CF902008163C6 /* JSContextRefPrivate.h in Headers */,
     2004                                14A1563210966365006FA260 /* DateInstanceCache.h in Headers */,
    20012005                        );
    20022006                        runOnlyForDeploymentPostprocessing = 0;
  • trunk/JavaScriptCore/runtime/DateInstance.cpp

    r49886 r50174  
    3333namespace JSC {
    3434
    35 struct DateInstance::Cache {
    36     double m_gregorianDateTimeCachedForMS;
    37     GregorianDateTime m_cachedGregorianDateTime;
    38     double m_gregorianDateTimeUTCCachedForMS;
    39     GregorianDateTime m_cachedGregorianDateTimeUTC;
    40 };
    41 
    4235const ClassInfo DateInstance::info = {"Date", 0, 0, 0};
    4336
    4437DateInstance::DateInstance(NonNullPassRefPtr<Structure> structure)
    4538    : JSWrapperObject(structure)
    46     , m_cache(0)
    4739{
    4840}
     
    5042DateInstance::DateInstance(ExecState* exec, double time)
    5143    : JSWrapperObject(exec->lexicalGlobalObject()->dateStructure())
    52     , m_cache(0)
    5344{
    5445    setInternalValue(jsNumber(exec, timeClip(time)));
    5546}
    5647
    57 DateInstance::~DateInstance()
     48bool DateInstance::getGregorianDateTime(ExecState* exec, bool outputIsUTC, GregorianDateTime& t) const
    5849{
    59     delete m_cache;
    60 }
    61 
    62 bool DateInstance::getGregorianDateTime(bool outputIsUTC, GregorianDateTime& t) const
    63 {
    64     if (!m_cache) {
    65         m_cache = new Cache;
    66         m_cache->m_gregorianDateTimeCachedForMS = NaN;
    67         m_cache->m_gregorianDateTimeUTCCachedForMS = NaN;
    68     }
    69 
    7050    double milli = internalNumber();
    7151    if (isnan(milli))
    7252        return false;
    7353
     54    if (!m_data)
     55        m_data = exec->globalData().dateInstanceCache.add(milli);
     56
    7457    if (outputIsUTC) {
    75         if (m_cache->m_gregorianDateTimeUTCCachedForMS != milli) {
    76             WTF::msToGregorianDateTime(internalNumber(), true, m_cache->m_cachedGregorianDateTimeUTC);
    77             m_cache->m_gregorianDateTimeUTCCachedForMS = milli;
     58        if (m_data->m_gregorianDateTimeUTCCachedForMS != milli) {
     59            WTF::msToGregorianDateTime(internalNumber(), true, m_data->m_cachedGregorianDateTimeUTC);
     60            m_data->m_gregorianDateTimeUTCCachedForMS = milli;
    7861        }
    79         t.copyFrom(m_cache->m_cachedGregorianDateTimeUTC);
     62        t.copyFrom(m_data->m_cachedGregorianDateTimeUTC);
    8063    } else {
    81         if (m_cache->m_gregorianDateTimeCachedForMS != milli) {
    82             WTF::msToGregorianDateTime(internalNumber(), false, m_cache->m_cachedGregorianDateTime);
    83             m_cache->m_gregorianDateTimeCachedForMS = milli;
     64        if (m_data->m_gregorianDateTimeCachedForMS != milli) {
     65            WTF::msToGregorianDateTime(internalNumber(), false, m_data->m_cachedGregorianDateTime);
     66            m_data->m_gregorianDateTimeCachedForMS = milli;
    8467        }
    85         t.copyFrom(m_cache->m_cachedGregorianDateTime);
     68        t.copyFrom(m_data->m_cachedGregorianDateTime);
    8669    }
    87    
     70
    8871    return true;
    8972}
  • trunk/JavaScriptCore/runtime/DateInstance.h

    r49886 r50174  
    3434        DateInstance(ExecState*, double);
    3535        explicit DateInstance(NonNullPassRefPtr<Structure>);
    36         virtual ~DateInstance();
    3736
    3837        double internalNumber() const { return internalValue().uncheckedGetNumber(); }
     
    4544        static JS_EXPORTDATA const ClassInfo info;
    4645
    47         bool getGregorianDateTime(bool outputIsUTC, WTF::GregorianDateTime&) const;
     46        bool getGregorianDateTime(ExecState*, bool outputIsUTC, WTF::GregorianDateTime&) const;
    4847
    4948        static PassRefPtr<Structure> createStructure(JSValue prototype)
     
    5857        virtual const ClassInfo* classInfo() const { return &info; }
    5958
    60 
    61         struct Cache;
    62         mutable Cache* m_cache;
     59        mutable RefPtr<DateInstanceData> m_data;
    6360    };
    6461
  • trunk/JavaScriptCore/runtime/DatePrototype.cpp

    r49889 r50174  
    256256    GregorianDateTime gregorianDateTime;
    257257    const bool outputIsUTC = false;
    258     if (!dateObject->getGregorianDateTime(outputIsUTC, gregorianDateTime))
     258    if (!dateObject->getGregorianDateTime(exec, outputIsUTC, gregorianDateTime))
    259259        return jsNontrivialString(exec, "Invalid Date");
    260260    return formatLocaleDate(exec, gregorianDateTime, format);
     
    427427
    428428    GregorianDateTime t;
    429     if (!thisDateObj->getGregorianDateTime(outputIsUTC, t))
     429    if (!thisDateObj->getGregorianDateTime(exec, outputIsUTC, t))
    430430        return jsNontrivialString(exec, "Invalid Date");
    431431    return jsNontrivialString(exec, formatDate(t) + " " + formatTime(t, outputIsUTC));
     
    442442
    443443    GregorianDateTime t;
    444     if (!thisDateObj->getGregorianDateTime(outputIsUTC, t))
     444    if (!thisDateObj->getGregorianDateTime(exec, outputIsUTC, t))
    445445        return jsNontrivialString(exec, "Invalid Date");
    446446    return jsNontrivialString(exec, formatDateUTCVariant(t) + " " + formatTime(t, outputIsUTC));
     
    457457   
    458458    GregorianDateTime t;
    459     if (!thisDateObj->getGregorianDateTime(outputIsUTC, t))
     459    if (!thisDateObj->getGregorianDateTime(exec, outputIsUTC, t))
    460460        return jsNontrivialString(exec, "Invalid Date");
    461461    // Maximum amount of space we need in buffer: 6 (max. digits in year) + 2 * 5 (2 characters each for month, day, hour, minute, second) + 4 (. + 3 digits for milliseconds)
     
    477477
    478478    GregorianDateTime t;
    479     if (!thisDateObj->getGregorianDateTime(outputIsUTC, t))
     479    if (!thisDateObj->getGregorianDateTime(exec, outputIsUTC, t))
    480480        return jsNontrivialString(exec, "Invalid Date");
    481481    return jsNontrivialString(exec, formatDate(t));
     
    492492
    493493    GregorianDateTime t;
    494     if (!thisDateObj->getGregorianDateTime(outputIsUTC, t))
     494    if (!thisDateObj->getGregorianDateTime(exec, outputIsUTC, t))
    495495        return jsNontrivialString(exec, "Invalid Date");
    496496    return jsNontrivialString(exec, formatTime(t, outputIsUTC));
     
    542542
    543543    GregorianDateTime t;
    544     if (!thisDateObj->getGregorianDateTime(outputIsUTC, t))
     544    if (!thisDateObj->getGregorianDateTime(exec, outputIsUTC, t))
    545545        return jsNaN(exec);
    546546    return jsNumber(exec, 1900 + t.year);
     
    557557
    558558    GregorianDateTime t;
    559     if (!thisDateObj->getGregorianDateTime(outputIsUTC, t))
     559    if (!thisDateObj->getGregorianDateTime(exec, outputIsUTC, t))
    560560        return jsNaN(exec);
    561561    return jsNumber(exec, 1900 + t.year);
     
    572572
    573573    GregorianDateTime t;
    574     if (!thisDateObj->getGregorianDateTime(outputIsUTC, t))
     574    if (!thisDateObj->getGregorianDateTime(exec, outputIsUTC, t))
    575575        return jsNontrivialString(exec, "Invalid Date");
    576576    return jsNontrivialString(exec, formatDateUTCVariant(t) + " " + formatTime(t, outputIsUTC));
     
    587587
    588588    GregorianDateTime t;
    589     if (!thisDateObj->getGregorianDateTime(outputIsUTC, t))
     589    if (!thisDateObj->getGregorianDateTime(exec, outputIsUTC, t))
    590590        return jsNaN(exec);
    591591    return jsNumber(exec, t.month);
     
    602602
    603603    GregorianDateTime t;
    604     if (!thisDateObj->getGregorianDateTime(outputIsUTC, t))
     604    if (!thisDateObj->getGregorianDateTime(exec, outputIsUTC, t))
    605605        return jsNaN(exec);
    606606    return jsNumber(exec, t.month);
     
    617617
    618618    GregorianDateTime t;
    619     if (!thisDateObj->getGregorianDateTime(outputIsUTC, t))
     619    if (!thisDateObj->getGregorianDateTime(exec, outputIsUTC, t))
    620620        return jsNaN(exec);
    621621    return jsNumber(exec, t.monthDay);
     
    632632
    633633    GregorianDateTime t;
    634     if (!thisDateObj->getGregorianDateTime(outputIsUTC, t))
     634    if (!thisDateObj->getGregorianDateTime(exec, outputIsUTC, t))
    635635        return jsNaN(exec);
    636636    return jsNumber(exec, t.monthDay);
     
    647647
    648648    GregorianDateTime t;
    649     if (!thisDateObj->getGregorianDateTime(outputIsUTC, t))
     649    if (!thisDateObj->getGregorianDateTime(exec, outputIsUTC, t))
    650650        return jsNaN(exec);
    651651    return jsNumber(exec, t.weekDay);
     
    662662
    663663    GregorianDateTime t;
    664     if (!thisDateObj->getGregorianDateTime(outputIsUTC, t))
     664    if (!thisDateObj->getGregorianDateTime(exec, outputIsUTC, t))
    665665        return jsNaN(exec);
    666666    return jsNumber(exec, t.weekDay);
     
    677677
    678678    GregorianDateTime t;
    679     if (!thisDateObj->getGregorianDateTime(outputIsUTC, t))
     679    if (!thisDateObj->getGregorianDateTime(exec, outputIsUTC, t))
    680680        return jsNaN(exec);
    681681    return jsNumber(exec, t.hour);
     
    692692
    693693    GregorianDateTime t;
    694     if (!thisDateObj->getGregorianDateTime(outputIsUTC, t))
     694    if (!thisDateObj->getGregorianDateTime(exec, outputIsUTC, t))
    695695        return jsNaN(exec);
    696696    return jsNumber(exec, t.hour);
     
    707707
    708708    GregorianDateTime t;
    709     if (!thisDateObj->getGregorianDateTime(outputIsUTC, t))
     709    if (!thisDateObj->getGregorianDateTime(exec, outputIsUTC, t))
    710710        return jsNaN(exec);
    711711    return jsNumber(exec, t.minute);
     
    722722
    723723    GregorianDateTime t;
    724     if (!thisDateObj->getGregorianDateTime(outputIsUTC, t))
     724    if (!thisDateObj->getGregorianDateTime(exec, outputIsUTC, t))
    725725        return jsNaN(exec);
    726726    return jsNumber(exec, t.minute);
     
    737737
    738738    GregorianDateTime t;
    739     if (!thisDateObj->getGregorianDateTime(outputIsUTC, t))
     739    if (!thisDateObj->getGregorianDateTime(exec, outputIsUTC, t))
    740740        return jsNaN(exec);
    741741    return jsNumber(exec, t.second);
     
    752752
    753753    GregorianDateTime t;
    754     if (!thisDateObj->getGregorianDateTime(outputIsUTC, t))
     754    if (!thisDateObj->getGregorianDateTime(exec, outputIsUTC, t))
    755755        return jsNaN(exec);
    756756    return jsNumber(exec, t.second);
     
    797797
    798798    GregorianDateTime t;
    799     if (!thisDateObj->getGregorianDateTime(outputIsUTC, t))
     799    if (!thisDateObj->getGregorianDateTime(exec, outputIsUTC, t))
    800800        return jsNaN(exec);
    801801    return jsNumber(exec, -gmtoffset(t) / minutesPerHour);
     
    833833
    834834    GregorianDateTime t;
    835     thisDateObj->getGregorianDateTime(inputIsUTC, t);
     835    thisDateObj->getGregorianDateTime(exec, inputIsUTC, t);
    836836
    837837    if (!fillStructuresUsingTimeArgs(exec, args, numArgsToUse, &ms, &t)) {
     
    869869        double secs = floor(milli / msPerSecond);
    870870        ms = milli - secs * msPerSecond;
    871         thisDateObj->getGregorianDateTime(inputIsUTC, t);
     871        thisDateObj->getGregorianDateTime(exec, inputIsUTC, t);
    872872    }
    873873   
     
    992992        double secs = floor(milli / msPerSecond);
    993993        ms = milli - secs * msPerSecond;
    994         thisDateObj->getGregorianDateTime(outputIsUTC, t);
     994        thisDateObj->getGregorianDateTime(exec, outputIsUTC, t);
    995995    }
    996996   
     
    10191019
    10201020    GregorianDateTime t;
    1021     if (!thisDateObj->getGregorianDateTime(outputIsUTC, t))
     1021    if (!thisDateObj->getGregorianDateTime(exec, outputIsUTC, t))
    10221022        return jsNaN(exec);
    10231023
  • trunk/JavaScriptCore/runtime/JSGlobalData.h

    r49328 r50174  
    3131
    3232#include "Collector.h"
     33#include "DateInstanceCache.h"
    3334#include "ExecutableAllocator.h"
    3435#include "JITStubs.h"
     
    117118        SmallStrings smallStrings;
    118119        NumericStrings numericStrings;
    119 
     120        DateInstanceCache dateInstanceCache;
     121       
    120122#if ENABLE(ASSEMBLER)
    121123        ExecutableAllocator executableAllocator;
Note: See TracChangeset for help on using the changeset viewer.