Ignore:
Timestamp:
Sep 21, 2008, 1:35:20 PM (17 years ago)
Author:
Darin Adler
Message:

2008-09-21 Judit Jasz <[email protected]>

Reviewed and tweaked by Darin Adler.

Seems to be a wash on SunSpider.

  • VM/CodeGenerator.cpp: (JSC::CodeGenerator::emitLoad): Use m_numberMap and m_stringMap to guarantee we emit the same JSValue* for identical numbers and strings.
  • VM/CodeGenerator.h: Added overload of emitLoad for const Identifier&. Add NumberMap and IdentifierStringMap types and m_numberMap and m_stringMap.
  • kjs/nodes.cpp: (JSC::StringNode::emitCode): Call the new emitLoad and let it do the JSString creation.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/JavaScriptCore/VM/CodeGenerator.h

    r36604 r36741  
    229229        RegisterID* emitLoad(RegisterID* dst, bool);
    230230        RegisterID* emitLoad(RegisterID* dst, double);
     231        RegisterID* emitLoad(RegisterID* dst, const Identifier&);
    231232        RegisterID* emitLoad(RegisterID* dst, JSValue*);
    232233        RegisterID* emitUnexpectedLoad(RegisterID* dst, bool);
     
    348349
    349350        typedef HashMap<RefPtr<UString::Rep>, int, IdentifierRepHash, HashTraits<RefPtr<UString::Rep> >, IdentifierMapIndexHashTraits> IdentifierMap;
     351        typedef HashMap<double, JSValue*> NumberMap;
     352        typedef HashMap<UString::Rep*, JSString*, IdentifierRepHash> IdentifierStringMap;
    350353
    351354        RegisterID* emitCall(OpcodeID, RegisterID*, RegisterID*, RegisterID*, ArgumentsNode*, unsigned divot, unsigned startOffset, unsigned endOffset);
     
    422425        IdentifierMap m_identifierMap;
    423426        JSValueMap m_jsValueMap;
     427        NumberMap m_numberMap;
     428        IdentifierStringMap m_stringMap;
    424429
    425430        JSGlobalData* m_globalData;
Note: See TracChangeset for help on using the changeset viewer.