Ignore:
Timestamp:
Nov 9, 2009, 7:14:26 PM (16 years ago)
Author:
[email protected]
Message:

Added a tiny cache for Date parsing.

Reviewed by Sam "Home Wrecker" Weinig.

SunSpider says 1.2% faster.

  • runtime/DateConversion.cpp:

(JSC::parseDate): Try to reuse the last parsed Date, if present.

  • runtime/JSGlobalData.cpp:

(JSC::JSGlobalData::resetDateCache):

  • runtime/JSGlobalData.h: Added storage for last parsed Date. Refactored

this code to make resetting the date cache easier.

  • runtime/JSGlobalObject.h:

(JSC::DynamicGlobalObjectScope::DynamicGlobalObjectScope): Updated for
refactoring.

  • wtf/DateMath.cpp:

(JSC::parseDateFromNullTerminatedCharacters):

  • wtf/DateMath.h: Changed ExecState to be first parameter, as is the JSC custom.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/JavaScriptCore/runtime/DateConversion.cpp

    r50608 r50705  
    4444#include "DateConversion.h"
    4545
     46#include "CallFrame.h"
    4647#include "UString.h"
    4748#include <wtf/DateMath.h>
     
    5455double parseDate(ExecState* exec, const UString &date)
    5556{
    56     return parseDateFromNullTerminatedCharacters(date.UTF8String().c_str(), exec);
     57    if (date == exec->globalData().cachedDateString)
     58        return exec->globalData().cachedDateStringValue;
     59    double value = parseDateFromNullTerminatedCharacters(exec, date.UTF8String().c_str());
     60    exec->globalData().cachedDateString = date;
     61    exec->globalData().cachedDateStringValue = value;
     62    return value;
    5763}
    5864
Note: See TracChangeset for help on using the changeset viewer.