Ignore:
Timestamp:
Jan 15, 2010, 12:48:52 PM (15 years ago)
Author:
[email protected]
Message:

2010-01-14 Geoffrey Garen <[email protected]>

Reviewed by Oliver Hunt.

REGRESISON: Google maps buttons not working properly
https://bugs.webkit.org/show_bug.cgi?id=31871

REGRESSION(r52948): JavaScript exceptions thrown on Google Maps when
getting directions for a second time
https://bugs.webkit.org/show_bug.cgi?id=33446


SunSpider and v8 report no change.

  • interpreter/Interpreter.cpp: (JSC::Interpreter::tryCacheGetByID): Update our cached offset in case flattening the dictionary changed any of its offsets.
  • jit/JITStubs.cpp: (JSC::JITThunks::tryCacheGetByID): (JSC::DEFINE_STUB_FUNCTION):
  • runtime/Operations.h: (JSC::normalizePrototypeChain): ditto

2010-01-15 Geoffrey Garen <[email protected]>

Reviewed by Oliver Hunt.

REGRESISON: Google maps buttons not working properly
https://bugs.webkit.org/show_bug.cgi?id=31871

REGRESSION(r52948): JavaScript exceptions thrown on Google Maps when
getting directions for a second time
https://bugs.webkit.org/show_bug.cgi?id=33446


Added a test for these bugs.

  • fast/js/pic/undictionary-expected.txt: Added.
  • fast/js/pic/undictionary.html: Added.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/JavaScriptCore/runtime/Operations.h

    r52182 r53341  
    340340    }
    341341
    342     inline size_t normalizePrototypeChain(CallFrame* callFrame, JSValue base, JSValue slotBase)
     342    inline size_t normalizePrototypeChain(CallFrame* callFrame, JSValue base, JSValue slotBase, const Identifier& propertyName, size_t& slotOffset)
    343343    {
    344344        JSCell* cell = asCell(base);
     
    358358            // Since we're accessing a prototype in a loop, it's a good bet that it
    359359            // should not be treated as a dictionary.
    360             if (cell->structure()->isDictionary())
     360            if (cell->structure()->isDictionary()) {
    361361                asObject(cell)->flattenDictionaryObject();
     362                if (slotBase == cell)
     363                    slotOffset = cell->structure()->get(propertyName);
     364            }
    362365
    363366            ++count;
Note: See TracChangeset for help on using the changeset viewer.