Changeset 168914 in webkit
- Timestamp:
- May 15, 2014 4:03:06 PM (10 years ago)
- Location:
- trunk
- Files:
-
- 4 added
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r168908 r168914 1 2014-05-15 Mark Hahnenberg <mhahnenberg@apple.com> 2 3 JSDOMWindow should not claim HasImpureGetOwnPropertySlot 4 https://bugs.webkit.org/show_bug.cgi?id=132918 5 6 Reviewed by Geoffrey Garen. 7 8 We now correctly handle the impurity of JSDOMWindow's custom getOwnPropertySlot without needing the 9 blanket HasImpureGetOwnPropertySlot. We do this through the use of watchpoints and by explicitly forbidding 10 any caching beyond a certain point using PropertySlot::disableCaching. Getting rid of this flag will allow 11 us to cache many properties/methods on both the JSDOMWindow and its prototype, which are very commonly used 12 across the web. 13 14 These tests trigger inline caching of window and window prototype properties. 15 16 * js/cached-window-properties-expected.txt: Added. 17 * js/cached-window-properties.html: Added. 18 * js/cached-window-prototype-properties-expected.txt: Added. 19 * js/cached-window-prototype-properties.html: Added. 20 1 21 2014-05-15 Alexey Proskuryakov <ap@apple.com> 2 22 -
trunk/Source/JavaScriptCore/ChangeLog
r168903 r168914 1 2014-05-15 Mark Hahnenberg <mhahnenberg@apple.com> 2 3 JSDOMWindow should not claim HasImpureGetOwnPropertySlot 4 https://bugs.webkit.org/show_bug.cgi?id=132918 5 6 Reviewed by Geoffrey Garen. 7 8 * jit/Repatch.cpp: 9 (JSC::tryRepatchIn): We forgot to check for watchpoints when repatching "in". 10 1 11 2014-05-15 Alex Christensen <achristensen@webkit.org> 2 12 -
trunk/Source/JavaScriptCore/jit/Repatch.cpp
r168861 r168914 1459 1459 vm->registerWatchpointForImpureProperty(ident, stubInfo.addWatchpoint(codeBlock)); 1460 1460 1461 if (slot.watchpointSet()) 1462 slot.watchpointSet()->add(stubInfo.addWatchpoint(codeBlock)); 1463 1461 1464 Structure* currStructure = structure; 1462 1465 WriteBarrier<Structure>* it = chain->head(); -
trunk/Source/WebCore/ChangeLog
r168909 r168914 1 2014-05-15 Mark Hahnenberg <mhahnenberg@apple.com> 2 3 JSDOMWindow should not claim HasImpureGetOwnPropertySlot 4 https://bugs.webkit.org/show_bug.cgi?id=132918 5 6 Reviewed by Geoffrey Garen. 7 8 Tests: js/cached-window-properties.html 9 js/cached-window-prototype-properties.html 10 11 We now correctly handle the impurity of JSDOMWindow's custom getOwnPropertySlot without needing the 12 blanket HasImpureGetOwnPropertySlot. We do this through the use of watchpoints and by explicitly forbidding 13 any caching beyond a certain point using PropertySlot::disableCaching. Getting rid of this flag will allow 14 us to cache many properties/methods on both the JSDOMWindow and its prototype, which are very commonly used 15 across the web. 16 17 * bindings/js/JSDOMWindowCustom.cpp: 18 (WebCore::JSDOMWindow::getOwnPropertySlot): 19 * bindings/scripts/CodeGeneratorJS.pm: 20 (HasComplexGetOwnProperty): 21 (InterfaceRequiresAttributesOnInstance): 22 (InstanceOverridesGetOwnPropertySlot): 23 (GenerateHeader): 24 1 25 2014-05-15 Alexey Proskuryakov <ap@apple.com> 2 26 -
trunk/Source/WebCore/bindings/js/JSDOMWindowCustom.cpp
r168902 r168914 193 193 entry = JSDOMWindow::info()->propHashTable(exec)->entry(exec, propertyName); 194 194 if (entry) { 195 slot.setC ustom(thisObject, allowsAccess ? entry->attributes() : ReadOnly | DontDelete | DontEnum, entry->propertyGetter());195 slot.setCacheableCustom(thisObject, allowsAccess ? entry->attributes() : ReadOnly | DontDelete | DontEnum, entry->propertyGetter()); 196 196 return true; 197 197 } -
trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm
r168385 r168914 590 590 591 591 my $hasImpureNamedGetter = $namedGetterFunction 592 || $interface->extendedAttributes->{"CustomNamedGetter"} 593 || $interface->extendedAttributes->{"CustomGetOwnPropertySlot"}; 592 || $interface->extendedAttributes->{"CustomNamedGetter"}; 594 593 595 594 my $hasComplexGetter = $indexedGetterFunction 596 595 || $interface->extendedAttributes->{"JSCustomGetOwnPropertySlotAndDescriptor"} 596 || $interface->extendedAttributes->{"CustomGetOwnPropertySlot"} 597 597 || $hasImpureNamedGetter; 598 598 … … 617 617 # overrides are handled so that we get the correct semantics and lookup ordering 618 618 my $hasImpureNamedGetter = $namedGetterFunction 619 || $interface->extendedAttributes->{"CustomNamedGetter"}620 || $interface->extendedAttributes->{"CustomGetOwnPropertySlot"};621 return 1 if $hasImpureNamedGetter;619 || $interface->extendedAttributes->{"CustomNamedGetter"}; 620 return 1 if $hasImpureNamedGetter 621 || $interface->extendedAttributes->{"CustomGetOwnPropertySlot"}; 622 622 623 623 # FIXME: These two should be fixed by removing the custom override of message, etc … … 728 728 729 729 my $hasImpureNamedGetter = $namedGetterFunction 730 || $interface->extendedAttributes->{"CustomNamedGetter"} 731 || $interface->extendedAttributes->{"CustomGetOwnPropertySlot"}; 730 || $interface->extendedAttributes->{"CustomNamedGetter"}; 732 731 733 732 my $hasComplexGetter = $indexedGetterFunction 734 733 || $interface->extendedAttributes->{"JSCustomGetOwnPropertySlotAndDescriptor"} 734 || $interface->extendedAttributes->{"CustomGetOwnPropertySlot"} 735 735 || $hasImpureNamedGetter; 736 736 … … 892 892 my $indexedGetterFunction = GetIndexedGetterFunction($interface); 893 893 894 my $hasImpureNamedGetter = 895 $namedGetterFunction 896 || $interface->extendedAttributes->{"CustomNamedGetter"} 897 || $interface->extendedAttributes->{"CustomGetOwnPropertySlot"}; 894 my $hasImpureNamedGetter = $namedGetterFunction 895 || $interface->extendedAttributes->{"CustomNamedGetter"}; 898 896 899 897 my $hasComplexGetter = 900 898 $indexedGetterFunction 901 899 || $interface->extendedAttributes->{"JSCustomGetOwnPropertySlotAndDescriptor"} 900 || $interface->extendedAttributes->{"CustomGetOwnPropertySlot"} 902 901 || $hasImpureNamedGetter; 903 902
Note: See TracChangeset
for help on using the changeset viewer.