[WebIDL] Interface prototype objects should define @@toStringTag
authorshvaikalesh@gmail.com <shvaikalesh@gmail.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 1 May 2020 09:48:33 +0000 (09:48 +0000)
committershvaikalesh@gmail.com <shvaikalesh@gmail.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 1 May 2020 09:48:33 +0000 (09:48 +0000)
https://bugs.webkit.org/show_bug.cgi?id=211020

Reviewed by Darin Adler.

LayoutTests/imported/w3c:

Adjust tests for `X.prototype.toString()` returning "[object X]"
instead of "[object XPrototype]", where X is WebIDL interface.

* web-platform-tests/WebIDL/ecmascript-binding/class-string-interface.any-expected.txt:
* web-platform-tests/WebIDL/ecmascript-binding/class-string-interface.any.worker-expected.txt:
* web-platform-tests/WebIDL/ecmascript-binding/class-string-named-properties-object.window-expected.txt:
* web-platform-tests/dom/nodes/Document-createEvent.https-expected.txt:
* web-platform-tests/html/browsers/the-window-object/window-prototype-chain.html: WPT revision: 50417942bbfe.
* web-platform-tests/wasm/jsapi/instance/toString.any-expected.txt:
* web-platform-tests/wasm/jsapi/instance/toString.any.worker-expected.txt:
* web-platform-tests/wasm/jsapi/memory/toString.any-expected.txt:
* web-platform-tests/wasm/jsapi/memory/toString.any.worker-expected.txt:
* web-platform-tests/wasm/jsapi/module/toString.any-expected.txt:
* web-platform-tests/wasm/jsapi/module/toString.any.worker-expected.txt:
* web-platform-tests/wasm/jsapi/table/toString.any-expected.txt:
* web-platform-tests/wasm/jsapi/table/toString.any.worker-expected.txt:

Source/JavaScriptCore:

WebIDL spec was recently updated [1] to define @@toStringTag on interface prototype objects.
This change aligns WebIDL with ECMA-262 built-ins and Blink's behavior. Gecko have also
expressed implementation commitment.

This patch implements the spec change, making `X.prototype.toString()` return "[object X]"
instead of "[object XPrototype]", where X is WebIDL interface. This behavior is proven to
be web compatible (shipping in Chrome since Q2 2016) and matches class strings of iterator
prototype objects [2] introduced in r253855.

We define @@toStringTag for all WebAssembly interfaces but Error subclasses since they
are not defined using WebIDL [3].

This change also introduces JSC_TO_STRING_TAG_WITHOUT_TRANSITION() macro that sets up
@@toStringTag using ClassInfo to avoid extra strings creation, ensuring `className` equality
between prototype and instance classes (fixing a few discrepancies), as well as correct
descriptors. It also ensures using faster jsNontrivialString() and relieves from putting
more code into CodeGeneratorJS.pm.

[1]: https://github.com/heycam/webidl/pull/357
[2]: https://heycam.github.io/webidl/#es-iterator-prototype-object
[3]: https://webassembly.github.io/spec/js-api/#error-objects

Tests: imported/w3c/web-platform-tests/wasm/jsapi/instance/toString.any.js
       imported/w3c/web-platform-tests/wasm/jsapi/memory/toString.any.js
       imported/w3c/web-platform-tests/wasm/jsapi/module/toString.any.js
       imported/w3c/web-platform-tests/wasm/jsapi/table/toString.any.js

* runtime/ArrayIteratorPrototype.cpp:
(JSC::ArrayIteratorPrototype::finishCreation):
* runtime/AsyncFunctionPrototype.cpp:
(JSC::AsyncFunctionPrototype::finishCreation):
* runtime/AsyncGeneratorFunctionPrototype.cpp:
(JSC::AsyncGeneratorFunctionPrototype::finishCreation):
* runtime/AsyncGeneratorPrototype.cpp:
(JSC::AsyncGeneratorPrototype::finishCreation):
* runtime/BigIntPrototype.cpp:
(JSC::BigIntPrototype::finishCreation):
* runtime/GeneratorFunctionPrototype.cpp:
(JSC::GeneratorFunctionPrototype::finishCreation):
* runtime/GeneratorPrototype.cpp:
(JSC::GeneratorPrototype::finishCreation):
* runtime/IntlCollatorPrototype.cpp:
(JSC::IntlCollatorPrototype::finishCreation):
* runtime/IntlDateTimeFormatPrototype.cpp:
(JSC::IntlDateTimeFormatPrototype::finishCreation):
* runtime/IntlNumberFormatPrototype.cpp:
(JSC::IntlNumberFormatPrototype::finishCreation):
* runtime/IntlPluralRulesPrototype.cpp:
(JSC::IntlPluralRulesPrototype::finishCreation):
* runtime/IntlRelativeTimeFormatPrototype.cpp:
(JSC::IntlRelativeTimeFormatPrototype::finishCreation):
* runtime/JSArrayBufferPrototype.cpp:
(JSC::JSArrayBufferPrototype::finishCreation):
* runtime/JSDataViewPrototype.cpp:
(JSC::JSDataViewPrototype::finishCreation):
* runtime/JSONObject.cpp:
(JSC::JSONObject::finishCreation):
* runtime/JSObject.h:
* runtime/JSPromisePrototype.cpp:
(JSC::JSPromisePrototype::finishCreation):
* runtime/MapIteratorPrototype.cpp:
(JSC::MapIteratorPrototype::finishCreation):
* runtime/MapPrototype.cpp:
(JSC::MapPrototype::finishCreation):
* runtime/MathObject.cpp:
(JSC::MathObject::finishCreation):
* runtime/RegExpStringIteratorPrototype.cpp:
(JSC::RegExpStringIteratorPrototype::finishCreation):
* runtime/SetIteratorPrototype.cpp:
(JSC::SetIteratorPrototype::finishCreation):
* runtime/SetPrototype.cpp:
(JSC::SetPrototype::finishCreation):
* runtime/StringIteratorPrototype.cpp:
(JSC::StringIteratorPrototype::finishCreation):
* runtime/SymbolPrototype.cpp:
(JSC::SymbolPrototype::finishCreation):
* runtime/WeakMapPrototype.cpp:
(JSC::WeakMapPrototype::finishCreation):
* runtime/WeakObjectRefPrototype.cpp:
(JSC::WeakObjectRefPrototype::finishCreation):
* runtime/WeakSetPrototype.cpp:
(JSC::WeakSetPrototype::finishCreation):
* wasm/js/WebAssemblyInstancePrototype.cpp:
(JSC::WebAssemblyInstancePrototype::finishCreation):
* wasm/js/WebAssemblyMemoryPrototype.cpp:
(JSC::WebAssemblyMemoryPrototype::finishCreation):
* wasm/js/WebAssemblyModulePrototype.cpp:
(JSC::WebAssemblyModulePrototype::finishCreation):
* wasm/js/WebAssemblyTablePrototype.cpp:
(JSC::WebAssemblyTablePrototype::finishCreation):

Source/WebCore:

WebIDL spec was recently updated [1] to define @@toStringTag on interface prototype objects.
This change aligns WebIDL with ECMA-262 built-ins and Blink's behavior. Gecko have also
expressed implementation commitment.

This patch implements the spec change, making `X.prototype.toString()` return "[object X]"
instead of "[object XPrototype]", where X is WebIDL interface. This behavior is proven to
be web compatible (shipping in Chrome since Q2 2016) and matches class strings of iterator
prototype objects [2] introduced in r253855.

[1]: https://github.com/heycam/webidl/pull/357
[2]: https://heycam.github.io/webidl/#es-iterator-prototype-object

Tests: fast/dom/prototype-chain.html
       fast/dom/wrapper-classes.html
       fast/workers/DedicatedWorkerGlobalScope-prototype-chain.html
       imported/w3c/web-platform-tests/WebIDL/ecmascript-binding/class-string-interface.any.js
       imported/w3c/web-platform-tests/WebIDL/ecmascript-binding/class-string-named-properties-object.window.js

* bindings/js/JSDOMIterator.h:
(WebCore::IteratorTraits>::finishCreation):
* bindings/js/JSDOMWindowProperties.cpp:
(WebCore::JSDOMWindowProperties::finishCreation):
* bindings/js/JSDOMWindowProperties.h:
* bindings/scripts/CodeGeneratorJS.pm:
(GenerateImplementation):
(GeneratePrototypeDeclaration):
(GenerateConstructorHelperMethods):
* bindings/scripts/test/*: Updated.

LayoutTests:

Adjust tests for `X.prototype.toString()` returning "[object X]"
instead of "[object XPrototype]", where X is WebIDL interface.

* css3/blending/background-blend-mode-property-parsing-expected.txt:
* css3/blending/background-blend-mode-property-parsing.html:
* css3/blending/blend-mode-property-parsing-expected.txt:
* css3/blending/blend-mode-property-parsing.html:
* css3/filters/backdrop/backdropfilter-property-parsing-expected.txt:
* css3/filters/backdrop/backdropfilter-property-parsing.html:
* css3/filters/filter-property-parsing-expected.txt:
* css3/filters/filter-property-parsing.html:
* fast/css/image-set-parsing-expected.txt:
* fast/css/image-set-parsing-generated-expected.txt:
* fast/css/image-set-parsing-generated.html:
* fast/css/image-set-parsing.html:
* fast/dom/DOMException/prototype-object-expected.txt:
* fast/dom/DOMException/prototype-object.html:
* fast/dom/prototype-chain-expected.txt:
* fast/dom/wrapper-classes-expected.txt:
* fast/dom/wrapper-classes.html:
* fast/events/event-view-toString-expected.txt:
* fast/workers/DedicatedWorkerGlobalScope-prototype-chain-expected.txt:
* fast/workers/DedicatedWorkerGlobalScope-prototype-chain.html:
* http/tests/xmlhttprequest/XMLHttpRequestException-expected.txt:
* inspector/model/remote-object-get-properties-expected.txt:
* platform/gtk/imported/w3c/web-platform-tests/dom/nodes/Document-createEvent.https-expected.txt:
* platform/ios-wk2/imported/w3c/web-platform-tests/dom/nodes/Document-createEvent.https-expected.txt:
* platform/wpe/imported/w3c/web-platform-tests/dom/nodes/Document-createEvent.https-expected.txt:
* resources/idlharness.js: Remove asserts that are commented out in upstream.
* svg/dom/svg2-inheritance.html:
* transforms/2d/transform-value-types-expected.txt:
* transforms/2d/transform-value-types.html:

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@260992 268f45cc-cd09-0410-ab3c-d52691b4dbfc

148 files changed:
LayoutTests/ChangeLog
LayoutTests/css3/blending/background-blend-mode-property-parsing-expected.txt
LayoutTests/css3/blending/background-blend-mode-property-parsing.html
LayoutTests/css3/blending/blend-mode-property-parsing-expected.txt
LayoutTests/css3/blending/blend-mode-property-parsing.html
LayoutTests/css3/filters/backdrop/backdropfilter-property-parsing-expected.txt
LayoutTests/css3/filters/backdrop/backdropfilter-property-parsing.html
LayoutTests/css3/filters/filter-property-parsing-expected.txt
LayoutTests/css3/filters/filter-property-parsing.html
LayoutTests/fast/css/image-set-parsing-expected.txt
LayoutTests/fast/css/image-set-parsing-generated-expected.txt
LayoutTests/fast/css/image-set-parsing-generated.html
LayoutTests/fast/css/image-set-parsing.html
LayoutTests/fast/dom/DOMException/prototype-object-expected.txt
LayoutTests/fast/dom/DOMException/prototype-object.html
LayoutTests/fast/dom/prototype-chain-expected.txt
LayoutTests/fast/dom/wrapper-classes-expected.txt
LayoutTests/fast/dom/wrapper-classes.html
LayoutTests/fast/events/event-view-toString-expected.txt
LayoutTests/fast/workers/DedicatedWorkerGlobalScope-prototype-chain-expected.txt
LayoutTests/fast/workers/DedicatedWorkerGlobalScope-prototype-chain.html
LayoutTests/http/tests/xmlhttprequest/XMLHttpRequestException-expected.txt
LayoutTests/imported/w3c/ChangeLog
LayoutTests/imported/w3c/web-platform-tests/WebIDL/ecmascript-binding/class-string-interface.any-expected.txt
LayoutTests/imported/w3c/web-platform-tests/WebIDL/ecmascript-binding/class-string-interface.any.worker-expected.txt
LayoutTests/imported/w3c/web-platform-tests/WebIDL/ecmascript-binding/class-string-named-properties-object.window-expected.txt
LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-createEvent.https-expected.txt
LayoutTests/imported/w3c/web-platform-tests/html/browsers/the-window-object/window-prototype-chain.html
LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/instance/toString.any-expected.txt
LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/instance/toString.any.worker-expected.txt
LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/memory/toString.any-expected.txt
LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/memory/toString.any.worker-expected.txt
LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/module/toString.any-expected.txt
LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/module/toString.any.worker-expected.txt
LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/table/toString.any-expected.txt
LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/table/toString.any.worker-expected.txt
LayoutTests/inspector/model/remote-object-get-properties-expected.txt
LayoutTests/platform/gtk/imported/w3c/web-platform-tests/dom/nodes/Document-createEvent.https-expected.txt
LayoutTests/platform/ios-wk2/imported/w3c/web-platform-tests/dom/nodes/Document-createEvent.https-expected.txt
LayoutTests/platform/wpe/imported/w3c/web-platform-tests/dom/nodes/Document-createEvent.https-expected.txt
LayoutTests/resources/idlharness.js
LayoutTests/svg/dom/svg2-inheritance.html
LayoutTests/transforms/2d/transform-value-types-expected.txt
LayoutTests/transforms/2d/transform-value-types.html
Source/JavaScriptCore/ChangeLog
Source/JavaScriptCore/runtime/ArrayIteratorPrototype.cpp
Source/JavaScriptCore/runtime/AsyncFunctionPrototype.cpp
Source/JavaScriptCore/runtime/AsyncGeneratorFunctionPrototype.cpp
Source/JavaScriptCore/runtime/AsyncGeneratorPrototype.cpp
Source/JavaScriptCore/runtime/BigIntPrototype.cpp
Source/JavaScriptCore/runtime/GeneratorFunctionPrototype.cpp
Source/JavaScriptCore/runtime/GeneratorPrototype.cpp
Source/JavaScriptCore/runtime/IntlCollatorPrototype.cpp
Source/JavaScriptCore/runtime/IntlDateTimeFormatPrototype.cpp
Source/JavaScriptCore/runtime/IntlNumberFormatPrototype.cpp
Source/JavaScriptCore/runtime/IntlPluralRulesPrototype.cpp
Source/JavaScriptCore/runtime/IntlRelativeTimeFormatPrototype.cpp
Source/JavaScriptCore/runtime/JSArrayBufferPrototype.cpp
Source/JavaScriptCore/runtime/JSDataViewPrototype.cpp
Source/JavaScriptCore/runtime/JSONObject.cpp
Source/JavaScriptCore/runtime/JSObject.h
Source/JavaScriptCore/runtime/JSPromisePrototype.cpp
Source/JavaScriptCore/runtime/MapIteratorPrototype.cpp
Source/JavaScriptCore/runtime/MapPrototype.cpp
Source/JavaScriptCore/runtime/MathObject.cpp
Source/JavaScriptCore/runtime/RegExpStringIteratorPrototype.cpp
Source/JavaScriptCore/runtime/SetIteratorPrototype.cpp
Source/JavaScriptCore/runtime/SetPrototype.cpp
Source/JavaScriptCore/runtime/StringIteratorPrototype.cpp
Source/JavaScriptCore/runtime/SymbolPrototype.cpp
Source/JavaScriptCore/runtime/WeakMapPrototype.cpp
Source/JavaScriptCore/runtime/WeakObjectRefPrototype.cpp
Source/JavaScriptCore/runtime/WeakSetPrototype.cpp
Source/JavaScriptCore/wasm/js/WebAssemblyInstancePrototype.cpp
Source/JavaScriptCore/wasm/js/WebAssemblyMemoryPrototype.cpp
Source/JavaScriptCore/wasm/js/WebAssemblyModulePrototype.cpp
Source/JavaScriptCore/wasm/js/WebAssemblyTablePrototype.cpp
Source/WebCore/ChangeLog
Source/WebCore/bindings/js/JSDOMIterator.h
Source/WebCore/bindings/js/JSDOMWindowProperties.cpp
Source/WebCore/bindings/js/JSDOMWindowProperties.h
Source/WebCore/bindings/scripts/CodeGeneratorJS.pm
Source/WebCore/bindings/scripts/test/JS/JSInterfaceName.cpp
Source/WebCore/bindings/scripts/test/JS/JSMapLike.cpp
Source/WebCore/bindings/scripts/test/JS/JSReadOnlyMapLike.cpp
Source/WebCore/bindings/scripts/test/JS/JSReadOnlySetLike.cpp
Source/WebCore/bindings/scripts/test/JS/JSSetLike.cpp
Source/WebCore/bindings/scripts/test/JS/JSTestActiveDOMObject.cpp
Source/WebCore/bindings/scripts/test/JS/JSTestCEReactions.cpp
Source/WebCore/bindings/scripts/test/JS/JSTestCEReactionsStringifier.cpp
Source/WebCore/bindings/scripts/test/JS/JSTestCallTracer.cpp
Source/WebCore/bindings/scripts/test/JS/JSTestCallbackInterface.cpp
Source/WebCore/bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructor.cpp
Source/WebCore/bindings/scripts/test/JS/JSTestDOMJIT.cpp
Source/WebCore/bindings/scripts/test/JS/JSTestEnabledBySetting.cpp
Source/WebCore/bindings/scripts/test/JS/JSTestEnabledForContext.cpp
Source/WebCore/bindings/scripts/test/JS/JSTestEventConstructor.cpp
Source/WebCore/bindings/scripts/test/JS/JSTestEventTarget.cpp
Source/WebCore/bindings/scripts/test/JS/JSTestException.cpp
Source/WebCore/bindings/scripts/test/JS/JSTestGenerateIsReachable.cpp
Source/WebCore/bindings/scripts/test/JS/JSTestGlobalObject.cpp
Source/WebCore/bindings/scripts/test/JS/JSTestGlobalObject.h
Source/WebCore/bindings/scripts/test/JS/JSTestIndexedSetterNoIdentifier.cpp
Source/WebCore/bindings/scripts/test/JS/JSTestIndexedSetterThrowingException.cpp
Source/WebCore/bindings/scripts/test/JS/JSTestIndexedSetterWithIdentifier.cpp
Source/WebCore/bindings/scripts/test/JS/JSTestInterface.cpp
Source/WebCore/bindings/scripts/test/JS/JSTestInterfaceLeadingUnderscore.cpp
Source/WebCore/bindings/scripts/test/JS/JSTestIterable.cpp
Source/WebCore/bindings/scripts/test/JS/JSTestJSBuiltinConstructor.cpp
Source/WebCore/bindings/scripts/test/JS/JSTestNamedAndIndexedSetterNoIdentifier.cpp
Source/WebCore/bindings/scripts/test/JS/JSTestNamedAndIndexedSetterThrowingException.cpp
Source/WebCore/bindings/scripts/test/JS/JSTestNamedAndIndexedSetterWithIdentifier.cpp
Source/WebCore/bindings/scripts/test/JS/JSTestNamedConstructor.cpp
Source/WebCore/bindings/scripts/test/JS/JSTestNamedDeleterNoIdentifier.cpp
Source/WebCore/bindings/scripts/test/JS/JSTestNamedDeleterThrowingException.cpp
Source/WebCore/bindings/scripts/test/JS/JSTestNamedDeleterWithIdentifier.cpp
Source/WebCore/bindings/scripts/test/JS/JSTestNamedDeleterWithIndexedGetter.cpp
Source/WebCore/bindings/scripts/test/JS/JSTestNamedGetterCallWith.cpp
Source/WebCore/bindings/scripts/test/JS/JSTestNamedGetterNoIdentifier.cpp
Source/WebCore/bindings/scripts/test/JS/JSTestNamedGetterWithIdentifier.cpp
Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterNoIdentifier.cpp
Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterThrowingException.cpp
Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithIdentifier.cpp
Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetter.cpp
Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetterAndSetter.cpp
Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithOverrideBuiltins.cpp
Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithUnforgableProperties.cpp
Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithUnforgablePropertiesAndOverrideBuiltins.cpp
Source/WebCore/bindings/scripts/test/JS/JSTestNode.cpp
Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp
Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp
Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructorsWithSequence.cpp
Source/WebCore/bindings/scripts/test/JS/JSTestOverrideBuiltins.cpp
Source/WebCore/bindings/scripts/test/JS/JSTestPluginInterface.cpp
Source/WebCore/bindings/scripts/test/JS/JSTestPromiseRejectionEvent.cpp
Source/WebCore/bindings/scripts/test/JS/JSTestSerialization.cpp
Source/WebCore/bindings/scripts/test/JS/JSTestSerializationIndirectInheritance.cpp
Source/WebCore/bindings/scripts/test/JS/JSTestSerializationInherit.cpp
Source/WebCore/bindings/scripts/test/JS/JSTestSerializationInheritFinal.cpp
Source/WebCore/bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp
Source/WebCore/bindings/scripts/test/JS/JSTestStringifier.cpp
Source/WebCore/bindings/scripts/test/JS/JSTestStringifierAnonymousOperation.cpp
Source/WebCore/bindings/scripts/test/JS/JSTestStringifierNamedOperation.cpp
Source/WebCore/bindings/scripts/test/JS/JSTestStringifierOperationImplementedAs.cpp
Source/WebCore/bindings/scripts/test/JS/JSTestStringifierOperationNamedToString.cpp
Source/WebCore/bindings/scripts/test/JS/JSTestStringifierReadOnlyAttribute.cpp
Source/WebCore/bindings/scripts/test/JS/JSTestStringifierReadWriteAttribute.cpp
Source/WebCore/bindings/scripts/test/JS/JSTestTypedefs.cpp

index 4dd3475..d0a61e5 100644 (file)
@@ -1,3 +1,43 @@
+2020-05-01  Alexey Shvayka  <shvaikalesh@gmail.com>
+
+        [WebIDL] Interface prototype objects should define @@toStringTag
+        https://bugs.webkit.org/show_bug.cgi?id=211020
+
+        Reviewed by Darin Adler.
+
+        Adjust tests for `X.prototype.toString()` returning "[object X]"
+        instead of "[object XPrototype]", where X is WebIDL interface.
+
+        * css3/blending/background-blend-mode-property-parsing-expected.txt:
+        * css3/blending/background-blend-mode-property-parsing.html:
+        * css3/blending/blend-mode-property-parsing-expected.txt:
+        * css3/blending/blend-mode-property-parsing.html:
+        * css3/filters/backdrop/backdropfilter-property-parsing-expected.txt:
+        * css3/filters/backdrop/backdropfilter-property-parsing.html:
+        * css3/filters/filter-property-parsing-expected.txt:
+        * css3/filters/filter-property-parsing.html:
+        * fast/css/image-set-parsing-expected.txt:
+        * fast/css/image-set-parsing-generated-expected.txt:
+        * fast/css/image-set-parsing-generated.html:
+        * fast/css/image-set-parsing.html:
+        * fast/dom/DOMException/prototype-object-expected.txt:
+        * fast/dom/DOMException/prototype-object.html:
+        * fast/dom/prototype-chain-expected.txt:
+        * fast/dom/wrapper-classes-expected.txt:
+        * fast/dom/wrapper-classes.html:
+        * fast/events/event-view-toString-expected.txt:
+        * fast/workers/DedicatedWorkerGlobalScope-prototype-chain-expected.txt:
+        * fast/workers/DedicatedWorkerGlobalScope-prototype-chain.html:
+        * http/tests/xmlhttprequest/XMLHttpRequestException-expected.txt:
+        * inspector/model/remote-object-get-properties-expected.txt:
+        * platform/gtk/imported/w3c/web-platform-tests/dom/nodes/Document-createEvent.https-expected.txt:
+        * platform/ios-wk2/imported/w3c/web-platform-tests/dom/nodes/Document-createEvent.https-expected.txt:
+        * platform/wpe/imported/w3c/web-platform-tests/dom/nodes/Document-createEvent.https-expected.txt:
+        * resources/idlharness.js: Remove asserts that are commented out in upstream.
+        * svg/dom/svg2-inheritance.html:
+        * transforms/2d/transform-value-types-expected.txt:
+        * transforms/2d/transform-value-types.html:
+
 2020-05-01  Saam Barati  <sbarati@apple.com>
 
         We can't cast toLength result to unsigned
index e9221ea..75c7bac 100644 (file)
@@ -9,7 +9,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('background-blend-mode') is 'normal'
 PASS jsWrapperClass(blendModeRule) is 'CSSPrimitiveValue'
-PASS jsWrapperClass(blendModeRule.__proto__) is 'CSSPrimitiveValuePrototype'
+PASS jsWrapperClass(blendModeRule.__proto__) is 'CSSPrimitiveValue'
 PASS jsWrapperClass(blendModeRule.constructor) is 'Function'
 
 Basic reference : multiply, screen
@@ -17,7 +17,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('background-blend-mode') is 'multiply, screen'
 PASS jsWrapperClass(blendModeRule) is 'CSSValueList'
-PASS jsWrapperClass(blendModeRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(blendModeRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(blendModeRule.constructor) is 'Function'
 
 Basic reference : screen, multiply
@@ -25,7 +25,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('background-blend-mode') is 'screen, multiply'
 PASS jsWrapperClass(blendModeRule) is 'CSSValueList'
-PASS jsWrapperClass(blendModeRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(blendModeRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(blendModeRule.constructor) is 'Function'
 
 Basic reference : overlay, normal
@@ -33,7 +33,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('background-blend-mode') is 'overlay, normal'
 PASS jsWrapperClass(blendModeRule) is 'CSSValueList'
-PASS jsWrapperClass(blendModeRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(blendModeRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(blendModeRule.constructor) is 'Function'
 
 Basic reference : darken, lighten, normal, multiply
@@ -41,7 +41,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('background-blend-mode') is 'darken, lighten, normal, multiply'
 PASS jsWrapperClass(blendModeRule) is 'CSSValueList'
-PASS jsWrapperClass(blendModeRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(blendModeRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(blendModeRule.constructor) is 'Function'
 
 Basic reference : lighten
@@ -49,7 +49,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('background-blend-mode') is 'lighten'
 PASS jsWrapperClass(blendModeRule) is 'CSSPrimitiveValue'
-PASS jsWrapperClass(blendModeRule.__proto__) is 'CSSPrimitiveValuePrototype'
+PASS jsWrapperClass(blendModeRule.__proto__) is 'CSSPrimitiveValue'
 PASS jsWrapperClass(blendModeRule.constructor) is 'Function'
 
 Basic reference : color-dodge
@@ -57,7 +57,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('background-blend-mode') is 'color-dodge'
 PASS jsWrapperClass(blendModeRule) is 'CSSPrimitiveValue'
-PASS jsWrapperClass(blendModeRule.__proto__) is 'CSSPrimitiveValuePrototype'
+PASS jsWrapperClass(blendModeRule.__proto__) is 'CSSPrimitiveValue'
 PASS jsWrapperClass(blendModeRule.constructor) is 'Function'
 
 Basic reference : color-burn
@@ -65,7 +65,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('background-blend-mode') is 'color-burn'
 PASS jsWrapperClass(blendModeRule) is 'CSSPrimitiveValue'
-PASS jsWrapperClass(blendModeRule.__proto__) is 'CSSPrimitiveValuePrototype'
+PASS jsWrapperClass(blendModeRule.__proto__) is 'CSSPrimitiveValue'
 PASS jsWrapperClass(blendModeRule.constructor) is 'Function'
 
 Basic reference : hard-light
@@ -73,7 +73,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('background-blend-mode') is 'hard-light'
 PASS jsWrapperClass(blendModeRule) is 'CSSPrimitiveValue'
-PASS jsWrapperClass(blendModeRule.__proto__) is 'CSSPrimitiveValuePrototype'
+PASS jsWrapperClass(blendModeRule.__proto__) is 'CSSPrimitiveValue'
 PASS jsWrapperClass(blendModeRule.constructor) is 'Function'
 
 Basic reference : soft-light
@@ -81,7 +81,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('background-blend-mode') is 'soft-light'
 PASS jsWrapperClass(blendModeRule) is 'CSSPrimitiveValue'
-PASS jsWrapperClass(blendModeRule.__proto__) is 'CSSPrimitiveValuePrototype'
+PASS jsWrapperClass(blendModeRule.__proto__) is 'CSSPrimitiveValue'
 PASS jsWrapperClass(blendModeRule.constructor) is 'Function'
 
 Basic reference : difference
@@ -89,7 +89,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('background-blend-mode') is 'difference'
 PASS jsWrapperClass(blendModeRule) is 'CSSPrimitiveValue'
-PASS jsWrapperClass(blendModeRule.__proto__) is 'CSSPrimitiveValuePrototype'
+PASS jsWrapperClass(blendModeRule.__proto__) is 'CSSPrimitiveValue'
 PASS jsWrapperClass(blendModeRule.constructor) is 'Function'
 
 Basic reference : exclusion
@@ -97,7 +97,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('background-blend-mode') is 'exclusion'
 PASS jsWrapperClass(blendModeRule) is 'CSSPrimitiveValue'
-PASS jsWrapperClass(blendModeRule.__proto__) is 'CSSPrimitiveValuePrototype'
+PASS jsWrapperClass(blendModeRule.__proto__) is 'CSSPrimitiveValue'
 PASS jsWrapperClass(blendModeRule.constructor) is 'Function'
 PASS successfullyParsed is true
 
index bf908b3..4bb10f8 100644 (file)
@@ -17,14 +17,10 @@ function jsWrapperClass(node)
     return string.substr(8, string.length - 9);
 }
 
-function shouldBeType(expression, className, prototypeName, constructorName)
+function shouldBeType(expression, className)
 {
-    if (!prototypeName)
-        prototypeName = className + "Prototype";
-    if (!constructorName)
-        constructorName = className + "Constructor";
     shouldBe("jsWrapperClass(" + expression + ")", "'" + className + "'");
-    shouldBe("jsWrapperClass(" + expression + ".__proto__)", "'" + prototypeName + "'");
+    shouldBe("jsWrapperClass(" + expression + ".__proto__)", "'" + className + "'");
     shouldBe("jsWrapperClass(" + expression + ".constructor)", "'Function'");
 }
 
index fed3598..40d3258 100644 (file)
@@ -9,7 +9,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('mix-blend-mode') is 'normal'
 PASS jsWrapperClass(blendModeRule) is 'CSSPrimitiveValue'
-PASS jsWrapperClass(blendModeRule.__proto__) is 'CSSPrimitiveValuePrototype'
+PASS jsWrapperClass(blendModeRule.__proto__) is 'CSSPrimitiveValue'
 PASS jsWrapperClass(blendModeRule.constructor) is 'Function'
 
 Basic reference : multiply
@@ -17,7 +17,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('mix-blend-mode') is 'multiply'
 PASS jsWrapperClass(blendModeRule) is 'CSSPrimitiveValue'
-PASS jsWrapperClass(blendModeRule.__proto__) is 'CSSPrimitiveValuePrototype'
+PASS jsWrapperClass(blendModeRule.__proto__) is 'CSSPrimitiveValue'
 PASS jsWrapperClass(blendModeRule.constructor) is 'Function'
 
 Basic reference : screen
@@ -25,7 +25,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('mix-blend-mode') is 'screen'
 PASS jsWrapperClass(blendModeRule) is 'CSSPrimitiveValue'
-PASS jsWrapperClass(blendModeRule.__proto__) is 'CSSPrimitiveValuePrototype'
+PASS jsWrapperClass(blendModeRule.__proto__) is 'CSSPrimitiveValue'
 PASS jsWrapperClass(blendModeRule.constructor) is 'Function'
 
 Basic reference : overlay
@@ -33,7 +33,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('mix-blend-mode') is 'overlay'
 PASS jsWrapperClass(blendModeRule) is 'CSSPrimitiveValue'
-PASS jsWrapperClass(blendModeRule.__proto__) is 'CSSPrimitiveValuePrototype'
+PASS jsWrapperClass(blendModeRule.__proto__) is 'CSSPrimitiveValue'
 PASS jsWrapperClass(blendModeRule.constructor) is 'Function'
 
 Basic reference : darken
@@ -41,7 +41,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('mix-blend-mode') is 'darken'
 PASS jsWrapperClass(blendModeRule) is 'CSSPrimitiveValue'
-PASS jsWrapperClass(blendModeRule.__proto__) is 'CSSPrimitiveValuePrototype'
+PASS jsWrapperClass(blendModeRule.__proto__) is 'CSSPrimitiveValue'
 PASS jsWrapperClass(blendModeRule.constructor) is 'Function'
 
 Basic reference : lighten
@@ -49,7 +49,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('mix-blend-mode') is 'lighten'
 PASS jsWrapperClass(blendModeRule) is 'CSSPrimitiveValue'
-PASS jsWrapperClass(blendModeRule.__proto__) is 'CSSPrimitiveValuePrototype'
+PASS jsWrapperClass(blendModeRule.__proto__) is 'CSSPrimitiveValue'
 PASS jsWrapperClass(blendModeRule.constructor) is 'Function'
 
 Basic reference : color-dodge
@@ -57,7 +57,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('mix-blend-mode') is 'color-dodge'
 PASS jsWrapperClass(blendModeRule) is 'CSSPrimitiveValue'
-PASS jsWrapperClass(blendModeRule.__proto__) is 'CSSPrimitiveValuePrototype'
+PASS jsWrapperClass(blendModeRule.__proto__) is 'CSSPrimitiveValue'
 PASS jsWrapperClass(blendModeRule.constructor) is 'Function'
 
 Basic reference : color-burn
@@ -65,7 +65,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('mix-blend-mode') is 'color-burn'
 PASS jsWrapperClass(blendModeRule) is 'CSSPrimitiveValue'
-PASS jsWrapperClass(blendModeRule.__proto__) is 'CSSPrimitiveValuePrototype'
+PASS jsWrapperClass(blendModeRule.__proto__) is 'CSSPrimitiveValue'
 PASS jsWrapperClass(blendModeRule.constructor) is 'Function'
 
 Basic reference : hard-light
@@ -73,7 +73,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('mix-blend-mode') is 'hard-light'
 PASS jsWrapperClass(blendModeRule) is 'CSSPrimitiveValue'
-PASS jsWrapperClass(blendModeRule.__proto__) is 'CSSPrimitiveValuePrototype'
+PASS jsWrapperClass(blendModeRule.__proto__) is 'CSSPrimitiveValue'
 PASS jsWrapperClass(blendModeRule.constructor) is 'Function'
 
 Basic reference : soft-light
@@ -81,7 +81,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('mix-blend-mode') is 'soft-light'
 PASS jsWrapperClass(blendModeRule) is 'CSSPrimitiveValue'
-PASS jsWrapperClass(blendModeRule.__proto__) is 'CSSPrimitiveValuePrototype'
+PASS jsWrapperClass(blendModeRule.__proto__) is 'CSSPrimitiveValue'
 PASS jsWrapperClass(blendModeRule.constructor) is 'Function'
 
 Basic reference : difference
@@ -89,7 +89,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('mix-blend-mode') is 'difference'
 PASS jsWrapperClass(blendModeRule) is 'CSSPrimitiveValue'
-PASS jsWrapperClass(blendModeRule.__proto__) is 'CSSPrimitiveValuePrototype'
+PASS jsWrapperClass(blendModeRule.__proto__) is 'CSSPrimitiveValue'
 PASS jsWrapperClass(blendModeRule.constructor) is 'Function'
 
 Basic reference : exclusion
@@ -97,7 +97,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('mix-blend-mode') is 'exclusion'
 PASS jsWrapperClass(blendModeRule) is 'CSSPrimitiveValue'
-PASS jsWrapperClass(blendModeRule.__proto__) is 'CSSPrimitiveValuePrototype'
+PASS jsWrapperClass(blendModeRule.__proto__) is 'CSSPrimitiveValue'
 PASS jsWrapperClass(blendModeRule.constructor) is 'Function'
 
 Basic reference : plus-darker
@@ -105,7 +105,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('mix-blend-mode') is 'plus-darker'
 PASS jsWrapperClass(blendModeRule) is 'CSSPrimitiveValue'
-PASS jsWrapperClass(blendModeRule.__proto__) is 'CSSPrimitiveValuePrototype'
+PASS jsWrapperClass(blendModeRule.__proto__) is 'CSSPrimitiveValue'
 PASS jsWrapperClass(blendModeRule.constructor) is 'Function'
 
 Basic reference : plus-lighter
@@ -113,7 +113,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('mix-blend-mode') is 'plus-lighter'
 PASS jsWrapperClass(blendModeRule) is 'CSSPrimitiveValue'
-PASS jsWrapperClass(blendModeRule.__proto__) is 'CSSPrimitiveValuePrototype'
+PASS jsWrapperClass(blendModeRule.__proto__) is 'CSSPrimitiveValue'
 PASS jsWrapperClass(blendModeRule.constructor) is 'Function'
 PASS successfullyParsed is true
 
index 1da1628..800bfc4 100644 (file)
@@ -17,14 +17,10 @@ function jsWrapperClass(node)
     return string.substr(8, string.length - 9);
 }
 
-function shouldBeType(expression, className, prototypeName, constructorName)
+function shouldBeType(expression, className)
 {
-    if (!prototypeName)
-        prototypeName = className + "Prototype";
-    if (!constructorName)
-        constructorName = className + "Constructor";
     shouldBe("jsWrapperClass(" + expression + ")", "'" + className + "'");
-    shouldBe("jsWrapperClass(" + expression + ".__proto__)", "'" + prototypeName + "'");
+    shouldBe("jsWrapperClass(" + expression + ".__proto__)", "'" + className + "'");
     shouldBe("jsWrapperClass(" + expression + ".constructor)", "'Function'");
 }
 
index 2f6374a..64b8a2f 100644 (file)
@@ -9,7 +9,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "url(\"#a\")"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.cssText is "url(\"#a\")"
@@ -19,7 +19,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "url(\"#a\")"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.cssText is "url(\"#a\")"
@@ -29,7 +29,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "url(\"#a\") url(\"#b\")"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 2
 PASS subRule.cssText is "url(\"#a\")"
@@ -40,7 +40,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "grayscale(1) url(\"#a\")"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 2
 PASS subRule.cssText is "grayscale(1)"
@@ -51,7 +51,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "grayscale(1)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.cssText is "grayscale(1)"
@@ -61,7 +61,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "grayscale(50%)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.cssText is "grayscale(50%)"
@@ -71,7 +71,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "grayscale(1)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.cssText is "grayscale(1)"
@@ -81,7 +81,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "grayscale(1)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.cssText is "grayscale(1)"
@@ -91,7 +91,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "grayscale(100%)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.cssText is "grayscale(100%)"
@@ -101,7 +101,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "grayscale(0)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.cssText is "grayscale(0)"
@@ -111,7 +111,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "grayscale()"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.cssText is "grayscale()"
@@ -121,7 +121,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "grayscale(0.5) grayscale(0.25)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 2
 PASS subRule.cssText is "grayscale(0.5)"
@@ -132,7 +132,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "sepia(1)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.cssText is "sepia(1)"
@@ -142,7 +142,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "sepia(50%)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.cssText is "sepia(50%)"
@@ -152,7 +152,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "sepia(1)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.cssText is "sepia(1)"
@@ -162,7 +162,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "sepia(1)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.cssText is "sepia(1)"
@@ -172,7 +172,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "sepia(100%)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.cssText is "sepia(100%)"
@@ -187,7 +187,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "sepia(0)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.cssText is "sepia(0)"
@@ -197,7 +197,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "sepia()"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.cssText is "sepia()"
@@ -212,7 +212,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "sepia(0.5) sepia(0.25)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 2
 PASS subRule.cssText is "sepia(0.5)"
@@ -223,7 +223,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "sepia(0.5) grayscale(0.25)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 2
 PASS subRule.cssText is "sepia(0.5)"
@@ -234,7 +234,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "saturate(1)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.cssText is "saturate(1)"
@@ -244,7 +244,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "saturate(50%)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.cssText is "saturate(50%)"
@@ -254,7 +254,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "saturate(250%)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.cssText is "saturate(250%)"
@@ -264,7 +264,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "saturate(1)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.cssText is "saturate(1)"
@@ -274,7 +274,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "saturate(5.5)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.cssText is "saturate(5.5)"
@@ -289,7 +289,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "saturate(0)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.cssText is "saturate(0)"
@@ -299,7 +299,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "saturate()"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.cssText is "saturate()"
@@ -309,7 +309,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "saturate(0.5) saturate(0.25)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 2
 PASS subRule.cssText is "saturate(0.5)"
@@ -320,7 +320,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "saturate(0.5) grayscale(0.25)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 2
 PASS subRule.cssText is "saturate(0.5)"
@@ -331,7 +331,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "hue-rotate(10deg)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.cssText is "hue-rotate(10deg)"
@@ -341,7 +341,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "hue-rotate(10deg)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.cssText is "hue-rotate(10deg)"
@@ -351,7 +351,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "hue-rotate(10rad)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.cssText is "hue-rotate(10rad)"
@@ -361,7 +361,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "hue-rotate(10grad)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.cssText is "hue-rotate(10grad)"
@@ -371,7 +371,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "hue-rotate(0.5turn)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.cssText is "hue-rotate(0.5turn)"
@@ -381,7 +381,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "hue-rotate(-370.2deg)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.cssText is "hue-rotate(-370.2deg)"
@@ -391,7 +391,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "hue-rotate(0deg)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.cssText is "hue-rotate(0deg)"
@@ -401,7 +401,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "hue-rotate()"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.cssText is "hue-rotate()"
@@ -411,7 +411,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "hue-rotate(10deg) grayscale(0.25)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 2
 PASS subRule.cssText is "hue-rotate(10deg)"
@@ -422,7 +422,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "invert(1)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.cssText is "invert(1)"
@@ -432,7 +432,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "invert(50%)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.cssText is "invert(50%)"
@@ -442,7 +442,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "invert(1)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.cssText is "invert(1)"
@@ -452,7 +452,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "invert(1)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.cssText is "invert(1)"
@@ -462,7 +462,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "invert(100%)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.cssText is "invert(100%)"
@@ -472,7 +472,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "invert(0)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.cssText is "invert(0)"
@@ -487,7 +487,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "invert()"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.cssText is "invert()"
@@ -497,7 +497,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "invert(0.5) invert(0.25)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 2
 PASS subRule.cssText is "invert(0.5)"
@@ -508,7 +508,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "invert(0.5) grayscale(0.25)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 2
 PASS subRule.cssText is "invert(0.5)"
@@ -519,7 +519,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "opacity(1)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.cssText is "opacity(1)"
@@ -529,7 +529,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "opacity(50%)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.cssText is "opacity(50%)"
@@ -539,7 +539,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "opacity(1)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.cssText is "opacity(1)"
@@ -549,7 +549,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "opacity(1)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.cssText is "opacity(1)"
@@ -559,7 +559,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "opacity(100%)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.cssText is "opacity(100%)"
@@ -574,7 +574,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "opacity(0)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.cssText is "opacity(0)"
@@ -584,7 +584,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "opacity()"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.cssText is "opacity()"
@@ -594,7 +594,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "opacity(0.5) opacity(0.25)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 2
 PASS subRule.cssText is "opacity(0.5)"
@@ -605,7 +605,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "opacity(0.5) grayscale(0.25)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 2
 PASS subRule.cssText is "opacity(0.5)"
@@ -616,7 +616,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "brightness(1)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.cssText is "brightness(1)"
@@ -626,7 +626,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "brightness(50%)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.cssText is "brightness(50%)"
@@ -636,7 +636,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "brightness(1)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.cssText is "brightness(1)"
@@ -646,7 +646,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "brightness(0)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.cssText is "brightness(0)"
@@ -661,7 +661,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "brightness()"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.cssText is "brightness()"
@@ -671,7 +671,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "brightness(0.5) brightness(0.25)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 2
 PASS subRule.cssText is "brightness(0.5)"
@@ -682,7 +682,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "brightness(0.5) grayscale(0.25)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 2
 PASS subRule.cssText is "brightness(0.5)"
@@ -703,7 +703,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "brightness(101%)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.cssText is "brightness(101%)"
@@ -713,7 +713,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "grayscale(0.25) brightness(0.5)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 2
 PASS subRule.cssText is "grayscale(0.25)"
@@ -724,7 +724,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "contrast(1)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.cssText is "contrast(1)"
@@ -734,7 +734,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "contrast(50%)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.cssText is "contrast(50%)"
@@ -744,7 +744,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "contrast(250%)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.cssText is "contrast(250%)"
@@ -754,7 +754,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "contrast(1)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.cssText is "contrast(1)"
@@ -764,7 +764,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "contrast(0)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.cssText is "contrast(0)"
@@ -779,7 +779,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "contrast()"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.cssText is "contrast()"
@@ -789,7 +789,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "contrast(2)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.cssText is "contrast(2)"
@@ -804,7 +804,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "contrast(0.5) contrast(0.25)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 2
 PASS subRule.cssText is "contrast(0.5)"
@@ -815,7 +815,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "contrast(0.5) grayscale(0.25)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 2
 PASS subRule.cssText is "contrast(0.5)"
@@ -826,7 +826,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "grayscale(0.25) contrast(0.5)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 2
 PASS subRule.cssText is "grayscale(0.25)"
@@ -837,7 +837,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "blur(0px)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.cssText is "blur(0px)"
@@ -847,7 +847,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "blur(10px)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.cssText is "blur(10px)"
@@ -857,7 +857,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "blur()"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.cssText is "blur()"
@@ -872,7 +872,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "drop-shadow(red 1px 2px 3px)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.cssText is "drop-shadow(red 1px 2px 3px)"
@@ -882,7 +882,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "drop-shadow(red 1px 2px 3px)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.cssText is "drop-shadow(red 1px 2px 3px)"
@@ -892,7 +892,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "drop-shadow(rgb(170, 187, 204) 0px 0px 0px)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.cssText is "drop-shadow(rgb(170, 187, 204) 0px 0px 0px)"
@@ -902,7 +902,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "drop-shadow(0px 0px 0px)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.cssText is "drop-shadow(0px 0px 0px)"
@@ -912,7 +912,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "drop-shadow(1px 2px)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.cssText is "drop-shadow(1px 2px)"
@@ -922,7 +922,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "grayscale(0.5) sepia(0.25) saturate(0.75) hue-rotate(35deg) invert(0.2) opacity(0.9) blur(5px) drop-shadow(green 1px 2px 3px)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 8
 PASS subRule.cssText is "grayscale(0.5)"
index e3037c2..4974c33 100644 (file)
@@ -17,14 +17,10 @@ function jsWrapperClass(node)
     return string.substr(8, string.length - 9);
 }
 
-function shouldBeType(expression, className, prototypeName, constructorName)
+function shouldBeType(expression, className)
 {
-    if (!prototypeName)
-        prototypeName = className + "Prototype";
-    if (!constructorName)
-        constructorName = className + "Constructor";
     shouldBe("jsWrapperClass(" + expression + ")", "'" + className + "'");
-    shouldBe("jsWrapperClass(" + expression + ".__proto__)", "'" + prototypeName + "'");
+    shouldBe("jsWrapperClass(" + expression + ".__proto__)", "'" + className + "'");
     shouldBe("jsWrapperClass(" + expression + ".constructor)", "'Function'");
 }
 
index 29a7755..332338d 100644 (file)
@@ -9,7 +9,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is "url(\"#a\")"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.cssText is "url(\"#a\")"
@@ -19,7 +19,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is "url(\"#a\")"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.cssText is "url(\"#a\")"
@@ -29,7 +29,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is "url(\"#a\") url(\"#b\")"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 2
 PASS subRule.cssText is "url(\"#a\")"
@@ -40,7 +40,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is "grayscale(1) url(\"#a\")"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 2
 PASS subRule.cssText is "grayscale(1)"
@@ -51,7 +51,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is "grayscale(1)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.cssText is "grayscale(1)"
@@ -61,7 +61,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is "grayscale(50%)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.cssText is "grayscale(50%)"
@@ -71,7 +71,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is "grayscale(1)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.cssText is "grayscale(1)"
@@ -81,7 +81,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is "grayscale(1)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.cssText is "grayscale(1)"
@@ -91,7 +91,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is "grayscale(100%)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.cssText is "grayscale(100%)"
@@ -101,7 +101,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is "grayscale(0)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.cssText is "grayscale(0)"
@@ -111,7 +111,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is "grayscale()"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.cssText is "grayscale()"
@@ -121,7 +121,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is "grayscale(0.5) grayscale(0.25)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 2
 PASS subRule.cssText is "grayscale(0.5)"
@@ -132,7 +132,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is "sepia(1)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.cssText is "sepia(1)"
@@ -142,7 +142,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is "sepia(50%)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.cssText is "sepia(50%)"
@@ -152,7 +152,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is "sepia(1)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.cssText is "sepia(1)"
@@ -162,7 +162,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is "sepia(1)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.cssText is "sepia(1)"
@@ -172,7 +172,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is "sepia(100%)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.cssText is "sepia(100%)"
@@ -187,7 +187,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is "sepia(0)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.cssText is "sepia(0)"
@@ -197,7 +197,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is "sepia()"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.cssText is "sepia()"
@@ -212,7 +212,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is "sepia(0.5) sepia(0.25)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 2
 PASS subRule.cssText is "sepia(0.5)"
@@ -223,7 +223,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is "sepia(0.5) grayscale(0.25)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 2
 PASS subRule.cssText is "sepia(0.5)"
@@ -234,7 +234,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is "saturate(1)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.cssText is "saturate(1)"
@@ -244,7 +244,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is "saturate(50%)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.cssText is "saturate(50%)"
@@ -254,7 +254,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is "saturate(250%)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.cssText is "saturate(250%)"
@@ -264,7 +264,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is "saturate(1)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.cssText is "saturate(1)"
@@ -274,7 +274,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is "saturate(5.5)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.cssText is "saturate(5.5)"
@@ -289,7 +289,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is "saturate(0)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.cssText is "saturate(0)"
@@ -299,7 +299,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is "saturate()"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.cssText is "saturate()"
@@ -309,7 +309,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is "saturate(0.5) saturate(0.25)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 2
 PASS subRule.cssText is "saturate(0.5)"
@@ -320,7 +320,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is "saturate(0.5) grayscale(0.25)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 2
 PASS subRule.cssText is "saturate(0.5)"
@@ -331,7 +331,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is "hue-rotate(10deg)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.cssText is "hue-rotate(10deg)"
@@ -341,7 +341,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is "hue-rotate(10deg)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.cssText is "hue-rotate(10deg)"
@@ -351,7 +351,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is "hue-rotate(10rad)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.cssText is "hue-rotate(10rad)"
@@ -361,7 +361,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is "hue-rotate(10grad)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.cssText is "hue-rotate(10grad)"
@@ -371,7 +371,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is "hue-rotate(0.5turn)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.cssText is "hue-rotate(0.5turn)"
@@ -381,7 +381,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is "hue-rotate(-370.2deg)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.cssText is "hue-rotate(-370.2deg)"
@@ -391,7 +391,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is "hue-rotate(0deg)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.cssText is "hue-rotate(0deg)"
@@ -401,7 +401,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is "hue-rotate()"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.cssText is "hue-rotate()"
@@ -411,7 +411,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is "hue-rotate(10deg) grayscale(0.25)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 2
 PASS subRule.cssText is "hue-rotate(10deg)"
@@ -422,7 +422,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is "invert(1)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.cssText is "invert(1)"
@@ -432,7 +432,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is "invert(50%)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.cssText is "invert(50%)"
@@ -442,7 +442,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is "invert(1)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.cssText is "invert(1)"
@@ -452,7 +452,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is "invert(1)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.cssText is "invert(1)"
@@ -462,7 +462,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is "invert(100%)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.cssText is "invert(100%)"
@@ -472,7 +472,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is "invert(0)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.cssText is "invert(0)"
@@ -487,7 +487,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is "invert()"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.cssText is "invert()"
@@ -497,7 +497,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is "invert(0.5) invert(0.25)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 2
 PASS subRule.cssText is "invert(0.5)"
@@ -508,7 +508,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is "invert(0.5) grayscale(0.25)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 2
 PASS subRule.cssText is "invert(0.5)"
@@ -519,7 +519,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is "opacity(1)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.cssText is "opacity(1)"
@@ -529,7 +529,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is "opacity(50%)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.cssText is "opacity(50%)"
@@ -539,7 +539,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is "opacity(1)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.cssText is "opacity(1)"
@@ -549,7 +549,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is "opacity(1)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.cssText is "opacity(1)"
@@ -559,7 +559,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is "opacity(100%)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.cssText is "opacity(100%)"
@@ -574,7 +574,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is "opacity(0)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.cssText is "opacity(0)"
@@ -584,7 +584,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is "opacity()"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.cssText is "opacity()"
@@ -594,7 +594,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is "opacity(0.5) opacity(0.25)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 2
 PASS subRule.cssText is "opacity(0.5)"
@@ -605,7 +605,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is "opacity(0.5) grayscale(0.25)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 2
 PASS subRule.cssText is "opacity(0.5)"
@@ -616,7 +616,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is "brightness(1)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.cssText is "brightness(1)"
@@ -626,7 +626,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is "brightness(50%)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.cssText is "brightness(50%)"
@@ -636,7 +636,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is "brightness(1)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.cssText is "brightness(1)"
@@ -646,7 +646,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is "brightness(0)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.cssText is "brightness(0)"
@@ -661,7 +661,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is "brightness()"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.cssText is "brightness()"
@@ -671,7 +671,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is "brightness(0.5) brightness(0.25)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 2
 PASS subRule.cssText is "brightness(0.5)"
@@ -682,7 +682,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is "brightness(0.5) grayscale(0.25)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 2
 PASS subRule.cssText is "brightness(0.5)"
@@ -703,7 +703,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is "brightness(101%)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.cssText is "brightness(101%)"
@@ -713,7 +713,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is "grayscale(0.25) brightness(0.5)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 2
 PASS subRule.cssText is "grayscale(0.25)"
@@ -724,7 +724,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is "contrast(1)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.cssText is "contrast(1)"
@@ -734,7 +734,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is "contrast(50%)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.cssText is "contrast(50%)"
@@ -744,7 +744,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is "contrast(250%)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.cssText is "contrast(250%)"
@@ -754,7 +754,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is "contrast(1)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.cssText is "contrast(1)"
@@ -764,7 +764,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is "contrast(0)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.cssText is "contrast(0)"
@@ -779,7 +779,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is "contrast()"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.cssText is "contrast()"
@@ -789,7 +789,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is "contrast(2)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.cssText is "contrast(2)"
@@ -804,7 +804,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is "contrast(0.5) contrast(0.25)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 2
 PASS subRule.cssText is "contrast(0.5)"
@@ -815,7 +815,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is "contrast(0.5) grayscale(0.25)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 2
 PASS subRule.cssText is "contrast(0.5)"
@@ -826,7 +826,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is "grayscale(0.25) contrast(0.5)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 2
 PASS subRule.cssText is "grayscale(0.25)"
@@ -837,7 +837,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is "blur(0px)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.cssText is "blur(0px)"
@@ -847,7 +847,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is "blur(10px)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.cssText is "blur(10px)"
@@ -857,7 +857,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is "blur()"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.cssText is "blur()"
@@ -872,7 +872,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is "drop-shadow(red 1px 2px 3px)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.cssText is "drop-shadow(red 1px 2px 3px)"
@@ -882,7 +882,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is "drop-shadow(red 1px 2px 3px)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.cssText is "drop-shadow(red 1px 2px 3px)"
@@ -892,7 +892,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is "drop-shadow(rgb(170, 187, 204) 0px 0px 0px)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.cssText is "drop-shadow(rgb(170, 187, 204) 0px 0px 0px)"
@@ -902,7 +902,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is "drop-shadow(0px 0px 0px)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.cssText is "drop-shadow(0px 0px 0px)"
@@ -912,7 +912,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is "drop-shadow(1px 2px)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
 PASS subRule.cssText is "drop-shadow(1px 2px)"
@@ -922,7 +922,7 @@ PASS cssRule.type is 1
 PASS declaration.length is 1
 PASS declaration.getPropertyValue('filter') is "grayscale(0.5) sepia(0.25) saturate(0.75) hue-rotate(35deg) invert(0.2) opacity(0.9) blur(5px) drop-shadow(green 1px 2px 3px)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 8
 PASS subRule.cssText is "grayscale(0.5)"
index fbd8bff..8f0ee4c 100644 (file)
@@ -17,14 +17,10 @@ function jsWrapperClass(node)
     return string.substr(8, string.length - 9);
 }
 
-function shouldBeType(expression, className, prototypeName, constructorName)
+function shouldBeType(expression, className)
 {
-    if (!prototypeName)
-        prototypeName = className + "Prototype";
-    if (!constructorName)
-        constructorName = className + "Constructor";
     shouldBe("jsWrapperClass(" + expression + ")", "'" + className + "'");
-    shouldBe("jsWrapperClass(" + expression + ".__proto__)", "'" + prototypeName + "'");
+    shouldBe("jsWrapperClass(" + expression + ".__proto__)", "'" + className + "'");
     shouldBe("jsWrapperClass(" + expression + ".constructor)", "'Function'");
 }
 
index d86c13d..2b22f99 100644 (file)
@@ -6,7 +6,7 @@ On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE
 
 Single value for background-image : url('#a') 1x
 PASS jsWrapperClass(imageSetRule) is 'CSSValueList'
-PASS jsWrapperClass(imageSetRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(imageSetRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(imageSetRule.constructor) is 'Function'
 PASS imageSetRule.length is 2
 PASS subRule is 'a'
@@ -14,7 +14,7 @@ PASS subRule.cssText is '1dppx'
 
 Multiple values for background-image : url('#a') 1x, url('#b') 2x
 PASS jsWrapperClass(imageSetRule) is 'CSSValueList'
-PASS jsWrapperClass(imageSetRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(imageSetRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(imageSetRule.constructor) is 'Function'
 PASS imageSetRule.length is 4
 PASS subRule is 'a'
@@ -24,7 +24,7 @@ PASS subRule.cssText is '2dppx'
 
 Single value for background-image without url() function : '#a' 1x
 PASS jsWrapperClass(imageSetRule) is 'CSSValueList'
-PASS jsWrapperClass(imageSetRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(imageSetRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(imageSetRule.constructor) is 'Function'
 PASS imageSetRule.length is 2
 PASS subRule is 'a'
@@ -32,7 +32,7 @@ PASS subRule.cssText is '1dppx'
 
 Multiple values for background-image without url() function : '#a' 1x, '#b' 2x
 PASS jsWrapperClass(imageSetRule) is 'CSSValueList'
-PASS jsWrapperClass(imageSetRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(imageSetRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(imageSetRule.constructor) is 'Function'
 PASS imageSetRule.length is 4
 PASS subRule is 'a'
@@ -42,7 +42,7 @@ PASS subRule.cssText is '2dppx'
 
 Mix values with and without url() function : '#a' 1x, url('#b') 2x
 PASS jsWrapperClass(imageSetRule) is 'CSSValueList'
-PASS jsWrapperClass(imageSetRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(imageSetRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(imageSetRule.constructor) is 'Function'
 PASS imageSetRule.length is 4
 PASS subRule is 'a'
@@ -52,7 +52,7 @@ PASS subRule.cssText is '2dppx'
 
 Multiple values for background-image, out of order : url('#c') 3x, url('#b') 2x, url('#a') 1x
 PASS jsWrapperClass(imageSetRule) is 'CSSValueList'
-PASS jsWrapperClass(imageSetRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(imageSetRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(imageSetRule.constructor) is 'Function'
 PASS imageSetRule.length is 6
 PASS subRule is 'c'
@@ -64,7 +64,7 @@ PASS subRule.cssText is '1dppx'
 
 Single value for content : url('#a') 1x
 PASS jsWrapperClass(imageSetRule) is 'CSSValueList'
-PASS jsWrapperClass(imageSetRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(imageSetRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(imageSetRule.constructor) is 'Function'
 PASS imageSetRule.length is 2
 PASS subRule is 'a'
@@ -72,7 +72,7 @@ PASS subRule.cssText is '1dppx'
 
 Multiple values for content : url('#a') 1x, url('#b') 2x
 PASS jsWrapperClass(imageSetRule) is 'CSSValueList'
-PASS jsWrapperClass(imageSetRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(imageSetRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(imageSetRule.constructor) is 'Function'
 PASS imageSetRule.length is 4
 PASS subRule is 'a'
@@ -82,7 +82,7 @@ PASS subRule.cssText is '2dppx'
 
 Single value for border-image : url('#a') 1x
 PASS jsWrapperClass(imageSetRule) is 'CSSValueList'
-PASS jsWrapperClass(imageSetRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(imageSetRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(imageSetRule.constructor) is 'Function'
 PASS imageSetRule.length is 2
 PASS subRule is 'a'
@@ -90,7 +90,7 @@ PASS subRule.cssText is '1dppx'
 
 Multiple values for border-image : url('#a') 1x, url('#b') 2x
 PASS jsWrapperClass(imageSetRule) is 'CSSValueList'
-PASS jsWrapperClass(imageSetRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(imageSetRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(imageSetRule.constructor) is 'Function'
 PASS imageSetRule.length is 4
 PASS subRule is 'a'
@@ -100,7 +100,7 @@ PASS subRule.cssText is '2dppx'
 
 Single value for -webkit-mask-box-image : url('#a') 1x
 PASS jsWrapperClass(imageSetRule) is 'CSSValueList'
-PASS jsWrapperClass(imageSetRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(imageSetRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(imageSetRule.constructor) is 'Function'
 PASS imageSetRule.length is 2
 PASS subRule is 'a'
@@ -108,7 +108,7 @@ PASS subRule.cssText is '1dppx'
 
 Multiple values for -webkit-mask-box-image : url('#a') 1x, url('#b') 2x
 PASS jsWrapperClass(imageSetRule) is 'CSSValueList'
-PASS jsWrapperClass(imageSetRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(imageSetRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(imageSetRule.constructor) is 'Function'
 PASS imageSetRule.length is 4
 PASS subRule is 'a'
@@ -118,7 +118,7 @@ PASS subRule.cssText is '2dppx'
 
 Single value with dppx : url('#a') 1dppx
 PASS jsWrapperClass(imageSetRule) is 'CSSValueList'
-PASS jsWrapperClass(imageSetRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(imageSetRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(imageSetRule.constructor) is 'Function'
 PASS imageSetRule.length is 2
 PASS subRule is 'a'
@@ -126,7 +126,7 @@ PASS subRule.cssText is '1dppx'
 
 Single value with dpi : url('#a') 192dpi
 PASS jsWrapperClass(imageSetRule) is 'CSSValueList'
-PASS jsWrapperClass(imageSetRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(imageSetRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(imageSetRule.constructor) is 'Function'
 PASS imageSetRule.length is 2
 PASS subRule is 'a'
@@ -134,7 +134,7 @@ PASS subRule.cssText is '192dpi'
 
 Single value with dpcm : url('#a') 102dpcm
 PASS jsWrapperClass(imageSetRule) is 'CSSValueList'
-PASS jsWrapperClass(imageSetRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(imageSetRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(imageSetRule.constructor) is 'Function'
 PASS imageSetRule.length is 2
 PASS subRule is 'a'
@@ -142,7 +142,7 @@ PASS subRule.cssText is '102dpcm'
 
 Multiple values with dpi, dppx and x : url('#a') 1x, url('#b') 2dppx, url('#c') 250dpi
 PASS jsWrapperClass(imageSetRule) is 'CSSValueList'
-PASS jsWrapperClass(imageSetRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(imageSetRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(imageSetRule.constructor) is 'Function'
 PASS imageSetRule.length is 6
 PASS subRule is 'a'
index 70b3299..a3e14dc 100755 (executable)
@@ -6,7 +6,7 @@ On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE
 
 Single value for background-image with gradient : linear-gradient(green, white) 1x
 PASS jsWrapperClass(imageSetRule) is 'CSSValueList'
-PASS jsWrapperClass(imageSetRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(imageSetRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(imageSetRule.constructor) is 'Function'
 PASS imageSetRule.length is 2
 PASS subRule.cssText is 'linear-gradient(green, white)'
@@ -14,7 +14,7 @@ PASS subRule.cssText is '1dppx'
 
 Single value for content with gradient : linear-gradient(green, white) 1x
 PASS jsWrapperClass(imageSetRule) is 'CSSValueList'
-PASS jsWrapperClass(imageSetRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(imageSetRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(imageSetRule.constructor) is 'Function'
 PASS imageSetRule.length is 2
 PASS subRule.cssText is 'linear-gradient(green, white)'
@@ -22,7 +22,7 @@ PASS subRule.cssText is '1dppx'
 
 Single value for background-image with gradients : linear-gradient(green, white) 1x, radial-gradient(blue, white) 2x
 PASS jsWrapperClass(imageSetRule) is 'CSSValueList'
-PASS jsWrapperClass(imageSetRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(imageSetRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(imageSetRule.constructor) is 'Function'
 PASS imageSetRule.length is 4
 PASS subRule.cssText is 'linear-gradient(green, white)'
@@ -32,7 +32,7 @@ PASS subRule.cssText is '2dppx'
 
 Combined gradient and URL : url('#a') 1x, linear-gradient(green, white) 2x
 PASS jsWrapperClass(imageSetRule) is 'CSSValueList'
-PASS jsWrapperClass(imageSetRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(imageSetRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(imageSetRule.constructor) is 'Function'
 PASS imageSetRule.length is 4
 PASS subRule is 'a'
@@ -42,7 +42,7 @@ PASS subRule.cssText is '2dppx'
 
 Combined gradient and URL in content : url('#a') 1x, linear-gradient(green, white) 2x
 PASS jsWrapperClass(imageSetRule) is 'CSSValueList'
-PASS jsWrapperClass(imageSetRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(imageSetRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(imageSetRule.constructor) is 'Function'
 PASS imageSetRule.length is 4
 PASS subRule is 'a'
@@ -52,7 +52,7 @@ PASS subRule.cssText is '2dppx'
 
 Combined gradient and cross-fade : -webkit-cross-fade(url('#a'), url('#b'), 70%) 1x, linear-gradient(green, white) 2x
 PASS jsWrapperClass(imageSetRule) is 'CSSValueList'
-PASS jsWrapperClass(imageSetRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(imageSetRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(imageSetRule.constructor) is 'Function'
 PASS imageSetRule.length is 4
 PASS subRule is 'a'
@@ -62,7 +62,7 @@ PASS subRule.cssText is '2dppx'
 
 Single value for background-image with gradient and dpi : linear-gradient(green, white) 192dpi
 PASS jsWrapperClass(imageSetRule) is 'CSSValueList'
-PASS jsWrapperClass(imageSetRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(imageSetRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(imageSetRule.constructor) is 'Function'
 PASS imageSetRule.length is 2
 PASS subRule.cssText is 'linear-gradient(green, white)'
index f6ea163..967c26d 100755 (executable)
@@ -17,14 +17,10 @@ function jsWrapperClass(node)
     return string.substr(8, string.length - 9);
 }
 
-function shouldBeType(expression, className, prototypeName, constructorName)
+function shouldBeType(expression, className)
 {
-    if (!prototypeName)
-        prototypeName = className + "Prototype";
-    if (!constructorName)
-        constructorName = className + "Constructor";
     shouldBe("jsWrapperClass(" + expression + ")", "'" + className + "'");
-    shouldBe("jsWrapperClass(" + expression + ".__proto__)", "'" + prototypeName + "'");
+    shouldBe("jsWrapperClass(" + expression + ".__proto__)", "'" + className + "'");
     shouldBe("jsWrapperClass(" + expression + ".constructor)", "'Function'");
 }
 
index 81b9b7c..10ba94f 100644 (file)
@@ -17,14 +17,10 @@ function jsWrapperClass(node)
     return string.substr(8, string.length - 9);
 }
 
-function shouldBeType(expression, className, prototypeName, constructorName)
+function shouldBeType(expression, className)
 {
-    if (!prototypeName)
-        prototypeName = className + "Prototype";
-    if (!constructorName)
-        constructorName = className + "Constructor";
     shouldBe("jsWrapperClass(" + expression + ")", "'" + className + "'");
-    shouldBe("jsWrapperClass(" + expression + ".__proto__)", "'" + prototypeName + "'");
+    shouldBe("jsWrapperClass(" + expression + ".__proto__)", "'" + className + "'");
     shouldBe("jsWrapperClass(" + expression + ".constructor)", "'Function'");
 }
 
index 5c8f6cd..a6ca190 100644 (file)
@@ -5,7 +5,7 @@ On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE
 
 PASS e.toString() is "HierarchyRequestError: The operation would yield an incorrect node tree."
 PASS Object.prototype.toString.call(e) is "[object DOMException]"
-PASS Object.prototype.toString.call(e.__proto__) is "[object DOMExceptionPrototype]"
+PASS Object.prototype.toString.call(e.__proto__) is "[object DOMException]"
 PASS Object.prototype.toString.call(e.__proto__.__proto__) is "[object Object]"
 PASS e.constructor.toString() is "function DOMException() {\n    [native code]\n}"
 PASS e instanceof DOMException is true
index 4d0f0ea..ba94984 100644 (file)
@@ -14,7 +14,7 @@ try {
 
 shouldBeEqualToString("e.toString()", "HierarchyRequestError: The operation would yield an incorrect node tree.");
 shouldBeEqualToString("Object.prototype.toString.call(e)", "[object DOMException]");
-shouldBeEqualToString("Object.prototype.toString.call(e.__proto__)", "[object DOMExceptionPrototype]");
+shouldBeEqualToString("Object.prototype.toString.call(e.__proto__)", "[object DOMException]");
 shouldBeEqualToString("Object.prototype.toString.call(e.__proto__.__proto__)", "[object Object]");
 shouldBeEqualToString("e.constructor.toString()", "function DOMException() {\n    [native code]\n}");
 shouldBeTrue("e instanceof DOMException");
index 2435f7e..985997b 100644 (file)
@@ -6,68 +6,68 @@ NOTE: This test will start failing if you change the layout of a related prototy
 
 [object Object]
 
-[object EventTargetPrototype]
+[object EventTarget]
 
-[object NodePrototype]
+[object Node]
 
-[object DocumentPrototype]
+[object Document]
 
-[object HTMLDocumentPrototype]
+[object HTMLDocument]
 
 ----- [object HTMLDivElement] (6 prototypes) -----
 
 [object Object]
 
-[object EventTargetPrototype]
+[object EventTarget]
 
-[object NodePrototype]
+[object Node]
 
-[object ElementPrototype]
+[object Element]
 
-[object HTMLElementPrototype]
+[object HTMLElement]
 
-[object HTMLDivElementPrototype]
+[object HTMLDivElement]
 
 ----- [object HTMLFormElement] (6 prototypes) -----
 
 [object Object]
 
-[object EventTargetPrototype]
+[object EventTarget]
 
-[object NodePrototype]
+[object Node]
 
-[object ElementPrototype]
+[object Element]
 
-[object HTMLElementPrototype]
+[object HTMLElement]
 
-[object HTMLFormElementPrototype]
+[object HTMLFormElement]
 
 ----- [object UIEvent] (3 prototypes) -----
 
 [object Object]
 
-[object EventPrototype]
+[object Event]
 
-[object UIEventPrototype]
+[object UIEvent]
 
 ----- [object MouseEvent] (4 prototypes) -----
 
 [object Object]
 
-[object EventPrototype]
+[object Event]
 
-[object UIEventPrototype]
+[object UIEvent]
 
-[object MouseEventPrototype]
+[object MouseEvent]
 
 ----- [object KeyboardEvent] (4 prototypes) -----
 
 [object Object]
 
-[object EventPrototype]
+[object Event]
 
-[object UIEventPrototype]
+[object UIEvent]
 
-[object KeyboardEventPrototype]
+[object KeyboardEvent]
 
 
index 7911e09..c19082d 100644 (file)
@@ -6,483 +6,483 @@ On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE
 Basics
 
 PASS jsWrapperClass(document.createAttribute('test')) is 'Attr'
-PASS jsWrapperClass(document.createAttribute('test').__proto__) is 'AttrPrototype'
+PASS jsWrapperClass(document.createAttribute('test').__proto__) is 'Attr'
 PASS jsWrapperClass(document.createAttribute('test').constructor) is 'Function'
 PASS jsWrapperClass(document.createComment('test')) is 'Comment'
-PASS jsWrapperClass(document.createComment('test').__proto__) is 'CommentPrototype'
+PASS jsWrapperClass(document.createComment('test').__proto__) is 'Comment'
 PASS jsWrapperClass(document.createComment('test').constructor) is 'Function'
 PASS jsWrapperClass(document.createDocumentFragment()) is 'DocumentFragment'
-PASS jsWrapperClass(document.createDocumentFragment().__proto__) is 'DocumentFragmentPrototype'
+PASS jsWrapperClass(document.createDocumentFragment().__proto__) is 'DocumentFragment'
 PASS jsWrapperClass(document.createDocumentFragment().constructor) is 'Function'
 PASS jsWrapperClass(document.implementation) is 'DOMImplementation'
-PASS jsWrapperClass(document.implementation.__proto__) is 'DOMImplementationPrototype'
+PASS jsWrapperClass(document.implementation.__proto__) is 'DOMImplementation'
 PASS jsWrapperClass(document.implementation.constructor) is 'Function'
 PASS jsWrapperClass(root.attributes) is 'NamedNodeMap'
-PASS jsWrapperClass(root.attributes.__proto__) is 'NamedNodeMapPrototype'
+PASS jsWrapperClass(root.attributes.__proto__) is 'NamedNodeMap'
 PASS jsWrapperClass(root.attributes.constructor) is 'Function'
 PASS jsWrapperClass(document.createNodeIterator(root, 0, null, false)) is 'NodeIterator'
-PASS jsWrapperClass(document.createNodeIterator(root, 0, null, false).__proto__) is 'NodeIteratorPrototype'
+PASS jsWrapperClass(document.createNodeIterator(root, 0, null, false).__proto__) is 'NodeIterator'
 PASS jsWrapperClass(document.createNodeIterator(root, 0, null, false).constructor) is 'Function'
 PASS jsWrapperClass(document.getElementsByTagName('div')) is 'HTMLCollection'
-PASS jsWrapperClass(document.getElementsByTagName('div').__proto__) is 'HTMLCollectionPrototype'
+PASS jsWrapperClass(document.getElementsByTagName('div').__proto__) is 'HTMLCollection'
 PASS jsWrapperClass(document.getElementsByTagName('div').constructor) is 'Function'
 PASS jsWrapperClass(document.createRange()) is 'Range'
-PASS jsWrapperClass(document.createRange().__proto__) is 'RangePrototype'
+PASS jsWrapperClass(document.createRange().__proto__) is 'Range'
 PASS jsWrapperClass(document.createRange().constructor) is 'Function'
 PASS jsWrapperClass(document.createTextNode('test')) is 'Text'
-PASS jsWrapperClass(document.createTextNode('test').__proto__) is 'TextPrototype'
+PASS jsWrapperClass(document.createTextNode('test').__proto__) is 'Text'
 PASS jsWrapperClass(document.createTextNode('test').constructor) is 'Function'
 PASS jsWrapperClass(document.createTreeWalker(root, 0, null, false)) is 'TreeWalker'
-PASS jsWrapperClass(document.createTreeWalker(root, 0, null, false).__proto__) is 'TreeWalkerPrototype'
+PASS jsWrapperClass(document.createTreeWalker(root, 0, null, false).__proto__) is 'TreeWalker'
 PASS jsWrapperClass(document.createTreeWalker(root, 0, null, false).constructor) is 'Function'
 
 XML
 
 PASS jsWrapperClass(xmlDocument) is 'XMLDocument'
-PASS jsWrapperClass(xmlDocument.__proto__) is 'XMLDocumentPrototype'
+PASS jsWrapperClass(xmlDocument.__proto__) is 'XMLDocument'
 PASS jsWrapperClass(xmlDocument.constructor) is 'Function'
 PASS jsWrapperClass(xmlDocument.createCDATASection('test')) is 'CDATASection'
-PASS jsWrapperClass(xmlDocument.createCDATASection('test').__proto__) is 'CDATASectionPrototype'
+PASS jsWrapperClass(xmlDocument.createCDATASection('test').__proto__) is 'CDATASection'
 PASS jsWrapperClass(xmlDocument.createCDATASection('test').constructor) is 'Function'
 PASS jsWrapperClass(xmlDocument.createElementNS('x', 'x', 'x')) is 'Element'
-PASS jsWrapperClass(xmlDocument.createElementNS('x', 'x', 'x').__proto__) is 'ElementPrototype'
+PASS jsWrapperClass(xmlDocument.createElementNS('x', 'x', 'x').__proto__) is 'Element'
 PASS jsWrapperClass(xmlDocument.createElementNS('x', 'x', 'x').constructor) is 'Function'
 PASS jsWrapperClass(xmlDocument.createProcessingInstruction('target', 'test')) is 'ProcessingInstruction'
-PASS jsWrapperClass(xmlDocument.createProcessingInstruction('target', 'test').__proto__) is 'ProcessingInstructionPrototype'
+PASS jsWrapperClass(xmlDocument.createProcessingInstruction('target', 'test').__proto__) is 'ProcessingInstruction'
 PASS jsWrapperClass(xmlDocument.createProcessingInstruction('target', 'test').constructor) is 'Function'
 
 Events
 
 PASS jsWrapperClass(document.createEvent('Event')) is 'Event'
-PASS jsWrapperClass(document.createEvent('Event').__proto__) is 'EventPrototype'
+PASS jsWrapperClass(document.createEvent('Event').__proto__) is 'Event'
 PASS jsWrapperClass(document.createEvent('Event').constructor) is 'Function'
 PASS jsWrapperClass(document.createEvent('KeyboardEvent')) is 'KeyboardEvent'
-PASS jsWrapperClass(document.createEvent('KeyboardEvent').__proto__) is 'KeyboardEventPrototype'
+PASS jsWrapperClass(document.createEvent('KeyboardEvent').__proto__) is 'KeyboardEvent'
 PASS jsWrapperClass(document.createEvent('KeyboardEvent').constructor) is 'Function'
 PASS jsWrapperClass(document.createEvent('MouseEvent')) is 'MouseEvent'
-PASS jsWrapperClass(document.createEvent('MouseEvent').__proto__) is 'MouseEventPrototype'
+PASS jsWrapperClass(document.createEvent('MouseEvent').__proto__) is 'MouseEvent'
 PASS jsWrapperClass(document.createEvent('MouseEvent').constructor) is 'Function'
 PASS jsWrapperClass(document.createEvent('MutationEvent')) is 'MutationEvent'
-PASS jsWrapperClass(document.createEvent('MutationEvent').__proto__) is 'MutationEventPrototype'
+PASS jsWrapperClass(document.createEvent('MutationEvent').__proto__) is 'MutationEvent'
 PASS jsWrapperClass(document.createEvent('MutationEvent').constructor) is 'Function'
 PASS jsWrapperClass(document.createEvent('OverflowEvent')) is 'OverflowEvent'
-PASS jsWrapperClass(document.createEvent('OverflowEvent').__proto__) is 'OverflowEventPrototype'
+PASS jsWrapperClass(document.createEvent('OverflowEvent').__proto__) is 'OverflowEvent'
 PASS jsWrapperClass(document.createEvent('OverflowEvent').constructor) is 'Function'
 PASS jsWrapperClass(document.createEvent('TextEvent')) is 'TextEvent'
-PASS jsWrapperClass(document.createEvent('TextEvent').__proto__) is 'TextEventPrototype'
+PASS jsWrapperClass(document.createEvent('TextEvent').__proto__) is 'TextEvent'
 PASS jsWrapperClass(document.createEvent('TextEvent').constructor) is 'Function'
 PASS jsWrapperClass(document.createEvent('UIEvent')) is 'UIEvent'
-PASS jsWrapperClass(document.createEvent('UIEvent').__proto__) is 'UIEventPrototype'
+PASS jsWrapperClass(document.createEvent('UIEvent').__proto__) is 'UIEvent'
 PASS jsWrapperClass(document.createEvent('UIEvent').constructor) is 'Function'
 PASS jsWrapperClass(document.createEvent('WheelEvent')) is 'WheelEvent'
-PASS jsWrapperClass(document.createEvent('WheelEvent').__proto__) is 'WheelEventPrototype'
+PASS jsWrapperClass(document.createEvent('WheelEvent').__proto__) is 'WheelEvent'
 PASS jsWrapperClass(document.createEvent('WheelEvent').constructor) is 'Function'
 
 CSS DOM
 
 PASS jsWrapperClass(document.styleSheets) is 'StyleSheetList'
-PASS jsWrapperClass(document.styleSheets.__proto__) is 'StyleSheetListPrototype'
+PASS jsWrapperClass(document.styleSheets.__proto__) is 'StyleSheetList'
 PASS jsWrapperClass(document.styleSheets.constructor) is 'Function'
 PASS jsWrapperClass(stylesheet) is 'CSSStyleSheet'
-PASS jsWrapperClass(stylesheet.__proto__) is 'CSSStyleSheetPrototype'
+PASS jsWrapperClass(stylesheet.__proto__) is 'CSSStyleSheet'
 PASS jsWrapperClass(stylesheet.constructor) is 'Function'
 PASS jsWrapperClass(stylesheet.cssRules) is 'CSSRuleList'
-PASS jsWrapperClass(stylesheet.cssRules.__proto__) is 'CSSRuleListPrototype'
+PASS jsWrapperClass(stylesheet.cssRules.__proto__) is 'CSSRuleList'
 PASS jsWrapperClass(stylesheet.cssRules.constructor) is 'Function'
 PASS jsWrapperClass(stylesheet.cssRules.item(0)) is 'CSSStyleRule'
-PASS jsWrapperClass(stylesheet.cssRules.item(0).__proto__) is 'CSSStyleRulePrototype'
+PASS jsWrapperClass(stylesheet.cssRules.item(0).__proto__) is 'CSSStyleRule'
 PASS jsWrapperClass(stylesheet.cssRules.item(0).constructor) is 'Function'
 PASS jsWrapperClass(stylesheet.cssRules.item(0).style) is 'CSSStyleDeclaration'
-PASS jsWrapperClass(stylesheet.cssRules.item(0).style.__proto__) is 'CSSStyleDeclarationPrototype'
+PASS jsWrapperClass(stylesheet.cssRules.item(0).style.__proto__) is 'CSSStyleDeclaration'
 PASS jsWrapperClass(stylesheet.cssRules.item(0).style.constructor) is 'Function'
 PASS jsWrapperClass(stylesheet.cssRules.item(0).style.getPropertyCSSValue('color')) is 'CSSPrimitiveValue'
-PASS jsWrapperClass(stylesheet.cssRules.item(0).style.getPropertyCSSValue('color').__proto__) is 'CSSPrimitiveValuePrototype'
+PASS jsWrapperClass(stylesheet.cssRules.item(0).style.getPropertyCSSValue('color').__proto__) is 'CSSPrimitiveValue'
 PASS jsWrapperClass(stylesheet.cssRules.item(0).style.getPropertyCSSValue('color').constructor) is 'Function'
 PASS jsWrapperClass(stylesheet.cssRules.item(0).style.getPropertyCSSValue('color').getRGBColorValue()) is 'RGBColor'
-PASS jsWrapperClass(stylesheet.cssRules.item(0).style.getPropertyCSSValue('color').getRGBColorValue().__proto__) is 'RGBColorPrototype'
+PASS jsWrapperClass(stylesheet.cssRules.item(0).style.getPropertyCSSValue('color').getRGBColorValue().__proto__) is 'RGBColor'
 PASS jsWrapperClass(stylesheet.cssRules.item(0).style.getPropertyCSSValue('color').getRGBColorValue().constructor) is 'Function'
 PASS jsWrapperClass(stylesheet.cssRules.item(0).style.getPropertyCSSValue('clip').getRectValue()) is 'Rect'
-PASS jsWrapperClass(stylesheet.cssRules.item(0).style.getPropertyCSSValue('clip').getRectValue().__proto__) is 'RectPrototype'
+PASS jsWrapperClass(stylesheet.cssRules.item(0).style.getPropertyCSSValue('clip').getRectValue().__proto__) is 'Rect'
 PASS jsWrapperClass(stylesheet.cssRules.item(0).style.getPropertyCSSValue('clip').getRectValue().constructor) is 'Function'
 PASS jsWrapperClass(stylesheet.cssRules.item(0).style.getPropertyCSSValue('content')) is 'CSSValueList'
-PASS jsWrapperClass(stylesheet.cssRules.item(0).style.getPropertyCSSValue('content').__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(stylesheet.cssRules.item(0).style.getPropertyCSSValue('content').__proto__) is 'CSSValueList'
 PASS jsWrapperClass(stylesheet.cssRules.item(0).style.getPropertyCSSValue('content').constructor) is 'Function'
 PASS jsWrapperClass(stylesheet.cssRules.item(0).style.getPropertyCSSValue('content').item(0).getCounterValue()) is 'Counter'
-PASS jsWrapperClass(stylesheet.cssRules.item(0).style.getPropertyCSSValue('content').item(0).getCounterValue().__proto__) is 'CounterPrototype'
+PASS jsWrapperClass(stylesheet.cssRules.item(0).style.getPropertyCSSValue('content').item(0).getCounterValue().__proto__) is 'Counter'
 PASS jsWrapperClass(stylesheet.cssRules.item(0).style.getPropertyCSSValue('content').item(0).getCounterValue().constructor) is 'Function'
 PASS jsWrapperClass(stylesheet.media) is 'MediaList'
-PASS jsWrapperClass(stylesheet.media.__proto__) is 'MediaListPrototype'
+PASS jsWrapperClass(stylesheet.media.__proto__) is 'MediaList'
 PASS jsWrapperClass(stylesheet.media.constructor) is 'Function'
 
 XPath
 
 PASS jsWrapperClass(document.createExpression('//*', document.createNSResolver(document))) is 'XPathExpression'
-PASS jsWrapperClass(document.createExpression('//*', document.createNSResolver(document)).__proto__) is 'XPathExpressionPrototype'
+PASS jsWrapperClass(document.createExpression('//*', document.createNSResolver(document)).__proto__) is 'XPathExpression'
 PASS jsWrapperClass(document.createExpression('//*', document.createNSResolver(document)).constructor) is 'Function'
 PASS jsWrapperClass(document.evaluate('//*', document, document.createNSResolver(document), 0, null)) is 'XPathResult'
-PASS jsWrapperClass(document.evaluate('//*', document, document.createNSResolver(document), 0, null).__proto__) is 'XPathResultPrototype'
+PASS jsWrapperClass(document.evaluate('//*', document, document.createNSResolver(document), 0, null).__proto__) is 'XPathResult'
 PASS jsWrapperClass(document.evaluate('//*', document, document.createNSResolver(document), 0, null).constructor) is 'Function'
 
 Other
 
 PASS jsWrapperClass(window) is 'Window'
-PASS jsWrapperClass(window.__proto__) is 'WindowPrototype'
+PASS jsWrapperClass(window.__proto__) is 'Window'
 PASS jsWrapperClass(window.constructor) is 'Function'
 
 HTML DOM
 
 PASS jsWrapperClass(root.children) is 'HTMLCollection'
-PASS jsWrapperClass(root.children.__proto__) is 'HTMLCollectionPrototype'
+PASS jsWrapperClass(root.children.__proto__) is 'HTMLCollection'
 PASS jsWrapperClass(root.children.constructor) is 'Function'
 PASS jsWrapperClass(document) is 'HTMLDocument'
-PASS jsWrapperClass(document.__proto__) is 'HTMLDocumentPrototype'
+PASS jsWrapperClass(document.__proto__) is 'HTMLDocument'
 PASS jsWrapperClass(document.constructor) is 'Function'
 PASS jsWrapperClass(document.createElement('select').options) is 'HTMLOptionsCollection'
-PASS jsWrapperClass(document.createElement('select').options.__proto__) is 'HTMLOptionsCollectionPrototype'
+PASS jsWrapperClass(document.createElement('select').options.__proto__) is 'HTMLOptionsCollection'
 PASS jsWrapperClass(document.createElement('select').options.constructor) is 'Function'
 
 HTML Elements
 
 PASS tagJSWrapperClass('a') is 'HTMLAnchorElement'
-PASS tagJSWrapperPrototypeClass('a') is 'HTMLAnchorElementPrototype'
+PASS tagJSWrapperPrototypeClass('a') is 'HTMLAnchorElement'
 PASS tagJSWrapperConstructorClass('a') is 'Function'
 PASS tagJSWrapperClass('abbr') is 'HTMLElement'
-PASS tagJSWrapperPrototypeClass('abbr') is 'HTMLElementPrototype'
+PASS tagJSWrapperPrototypeClass('abbr') is 'HTMLElement'
 PASS tagJSWrapperConstructorClass('abbr') is 'Function'
 PASS tagJSWrapperClass('acronym') is 'HTMLElement'
-PASS tagJSWrapperPrototypeClass('acronym') is 'HTMLElementPrototype'
+PASS tagJSWrapperPrototypeClass('acronym') is 'HTMLElement'
 PASS tagJSWrapperConstructorClass('acronym') is 'Function'
 PASS tagJSWrapperClass('address') is 'HTMLElement'
-PASS tagJSWrapperPrototypeClass('address') is 'HTMLElementPrototype'
+PASS tagJSWrapperPrototypeClass('address') is 'HTMLElement'
 PASS tagJSWrapperConstructorClass('address') is 'Function'
 PASS tagJSWrapperClass('applet') is 'HTMLAppletElement'
-PASS tagJSWrapperPrototypeClass('applet') is 'HTMLAppletElementPrototype'
+PASS tagJSWrapperPrototypeClass('applet') is 'HTMLAppletElement'
 PASS tagJSWrapperConstructorClass('applet') is 'Function'
 PASS tagJSWrapperClass('area') is 'HTMLAreaElement'
-PASS tagJSWrapperPrototypeClass('area') is 'HTMLAreaElementPrototype'
+PASS tagJSWrapperPrototypeClass('area') is 'HTMLAreaElement'
 PASS tagJSWrapperConstructorClass('area') is 'Function'
 PASS tagJSWrapperClass('article') is 'HTMLElement'
-PASS tagJSWrapperPrototypeClass('article') is 'HTMLElementPrototype'
+PASS tagJSWrapperPrototypeClass('article') is 'HTMLElement'
 PASS tagJSWrapperConstructorClass('article') is 'Function'
 PASS tagJSWrapperClass('aside') is 'HTMLElement'
-PASS tagJSWrapperPrototypeClass('aside') is 'HTMLElementPrototype'
+PASS tagJSWrapperPrototypeClass('aside') is 'HTMLElement'
 PASS tagJSWrapperConstructorClass('aside') is 'Function'
 PASS tagJSWrapperClass('b') is 'HTMLElement'
-PASS tagJSWrapperPrototypeClass('b') is 'HTMLElementPrototype'
+PASS tagJSWrapperPrototypeClass('b') is 'HTMLElement'
 PASS tagJSWrapperConstructorClass('b') is 'Function'
 PASS tagJSWrapperClass('base') is 'HTMLBaseElement'
-PASS tagJSWrapperPrototypeClass('base') is 'HTMLBaseElementPrototype'
+PASS tagJSWrapperPrototypeClass('base') is 'HTMLBaseElement'
 PASS tagJSWrapperConstructorClass('base') is 'Function'
 PASS tagJSWrapperClass('bdo') is 'HTMLElement'
-PASS tagJSWrapperPrototypeClass('bdo') is 'HTMLElementPrototype'
+PASS tagJSWrapperPrototypeClass('bdo') is 'HTMLElement'
 PASS tagJSWrapperConstructorClass('bdo') is 'Function'
 PASS tagJSWrapperClass('big') is 'HTMLElement'
-PASS tagJSWrapperPrototypeClass('big') is 'HTMLElementPrototype'
+PASS tagJSWrapperPrototypeClass('big') is 'HTMLElement'
 PASS tagJSWrapperConstructorClass('big') is 'Function'
 PASS tagJSWrapperClass('blockquote') is 'HTMLQuoteElement'
-PASS tagJSWrapperPrototypeClass('blockquote') is 'HTMLQuoteElementPrototype'
+PASS tagJSWrapperPrototypeClass('blockquote') is 'HTMLQuoteElement'
 PASS tagJSWrapperConstructorClass('blockquote') is 'Function'
 PASS tagJSWrapperClass('body') is 'HTMLBodyElement'
-PASS tagJSWrapperPrototypeClass('body') is 'HTMLBodyElementPrototype'
+PASS tagJSWrapperPrototypeClass('body') is 'HTMLBodyElement'
 PASS tagJSWrapperConstructorClass('body') is 'Function'
 PASS tagJSWrapperClass('br') is 'HTMLBRElement'
-PASS tagJSWrapperPrototypeClass('br') is 'HTMLBRElementPrototype'
+PASS tagJSWrapperPrototypeClass('br') is 'HTMLBRElement'
 PASS tagJSWrapperConstructorClass('br') is 'Function'
 PASS tagJSWrapperClass('button') is 'HTMLButtonElement'
-PASS tagJSWrapperPrototypeClass('button') is 'HTMLButtonElementPrototype'
+PASS tagJSWrapperPrototypeClass('button') is 'HTMLButtonElement'
 PASS tagJSWrapperConstructorClass('button') is 'Function'
 PASS tagJSWrapperClass('canvas') is 'HTMLCanvasElement'
-PASS tagJSWrapperPrototypeClass('canvas') is 'HTMLCanvasElementPrototype'
+PASS tagJSWrapperPrototypeClass('canvas') is 'HTMLCanvasElement'
 PASS tagJSWrapperConstructorClass('canvas') is 'Function'
 PASS tagJSWrapperClass('caption') is 'HTMLTableCaptionElement'
-PASS tagJSWrapperPrototypeClass('caption') is 'HTMLTableCaptionElementPrototype'
+PASS tagJSWrapperPrototypeClass('caption') is 'HTMLTableCaptionElement'
 PASS tagJSWrapperConstructorClass('caption') is 'Function'
 PASS tagJSWrapperClass('center') is 'HTMLElement'
-PASS tagJSWrapperPrototypeClass('center') is 'HTMLElementPrototype'
+PASS tagJSWrapperPrototypeClass('center') is 'HTMLElement'
 PASS tagJSWrapperConstructorClass('center') is 'Function'
 PASS tagJSWrapperClass('cite') is 'HTMLElement'
-PASS tagJSWrapperPrototypeClass('cite') is 'HTMLElementPrototype'
+PASS tagJSWrapperPrototypeClass('cite') is 'HTMLElement'
 PASS tagJSWrapperConstructorClass('cite') is 'Function'
 PASS tagJSWrapperClass('code') is 'HTMLElement'
-PASS tagJSWrapperPrototypeClass('code') is 'HTMLElementPrototype'
+PASS tagJSWrapperPrototypeClass('code') is 'HTMLElement'
 PASS tagJSWrapperConstructorClass('code') is 'Function'
 PASS tagJSWrapperClass('col') is 'HTMLTableColElement'
-PASS tagJSWrapperPrototypeClass('col') is 'HTMLTableColElementPrototype'
+PASS tagJSWrapperPrototypeClass('col') is 'HTMLTableColElement'
 PASS tagJSWrapperConstructorClass('col') is 'Function'
 PASS tagJSWrapperClass('colgroup') is 'HTMLTableColElement'
-PASS tagJSWrapperPrototypeClass('colgroup') is 'HTMLTableColElementPrototype'
+PASS tagJSWrapperPrototypeClass('colgroup') is 'HTMLTableColElement'
 PASS tagJSWrapperConstructorClass('colgroup') is 'Function'
 PASS tagJSWrapperClass('dd') is 'HTMLElement'
-PASS tagJSWrapperPrototypeClass('dd') is 'HTMLElementPrototype'
+PASS tagJSWrapperPrototypeClass('dd') is 'HTMLElement'
 PASS tagJSWrapperConstructorClass('dd') is 'Function'
 PASS tagJSWrapperClass('del') is 'HTMLModElement'
-PASS tagJSWrapperPrototypeClass('del') is 'HTMLModElementPrototype'
+PASS tagJSWrapperPrototypeClass('del') is 'HTMLModElement'
 PASS tagJSWrapperConstructorClass('del') is 'Function'
 PASS tagJSWrapperClass('dfn') is 'HTMLElement'
-PASS tagJSWrapperPrototypeClass('dfn') is 'HTMLElementPrototype'
+PASS tagJSWrapperPrototypeClass('dfn') is 'HTMLElement'
 PASS tagJSWrapperConstructorClass('dfn') is 'Function'
 PASS tagJSWrapperClass('dir') is 'HTMLDirectoryElement'
-PASS tagJSWrapperPrototypeClass('dir') is 'HTMLDirectoryElementPrototype'
+PASS tagJSWrapperPrototypeClass('dir') is 'HTMLDirectoryElement'
 PASS tagJSWrapperConstructorClass('dir') is 'Function'
 PASS tagJSWrapperClass('div') is 'HTMLDivElement'
-PASS tagJSWrapperPrototypeClass('div') is 'HTMLDivElementPrototype'
+PASS tagJSWrapperPrototypeClass('div') is 'HTMLDivElement'
 PASS tagJSWrapperConstructorClass('div') is 'Function'
 PASS tagJSWrapperClass('dl') is 'HTMLDListElement'
-PASS tagJSWrapperPrototypeClass('dl') is 'HTMLDListElementPrototype'
+PASS tagJSWrapperPrototypeClass('dl') is 'HTMLDListElement'
 PASS tagJSWrapperConstructorClass('dl') is 'Function'
 PASS tagJSWrapperClass('dt') is 'HTMLElement'
-PASS tagJSWrapperPrototypeClass('dt') is 'HTMLElementPrototype'
+PASS tagJSWrapperPrototypeClass('dt') is 'HTMLElement'
 PASS tagJSWrapperConstructorClass('dt') is 'Function'
 PASS tagJSWrapperClass('em') is 'HTMLElement'
-PASS tagJSWrapperPrototypeClass('em') is 'HTMLElementPrototype'
+PASS tagJSWrapperPrototypeClass('em') is 'HTMLElement'
 PASS tagJSWrapperConstructorClass('em') is 'Function'
 PASS tagJSWrapperClass('embed') is 'HTMLEmbedElement'
-PASS tagJSWrapperPrototypeClass('embed') is 'HTMLEmbedElementPrototype'
+PASS tagJSWrapperPrototypeClass('embed') is 'HTMLEmbedElement'
 PASS tagJSWrapperConstructorClass('embed') is 'Function'
 PASS tagJSWrapperClass('fieldset') is 'HTMLFieldSetElement'
-PASS tagJSWrapperPrototypeClass('fieldset') is 'HTMLFieldSetElementPrototype'
+PASS tagJSWrapperPrototypeClass('fieldset') is 'HTMLFieldSetElement'
 PASS tagJSWrapperConstructorClass('fieldset') is 'Function'
 PASS tagJSWrapperClass('font') is 'HTMLFontElement'
-PASS tagJSWrapperPrototypeClass('font') is 'HTMLFontElementPrototype'
+PASS tagJSWrapperPrototypeClass('font') is 'HTMLFontElement'
 PASS tagJSWrapperConstructorClass('font') is 'Function'
 PASS tagJSWrapperClass('footer') is 'HTMLElement'
-PASS tagJSWrapperPrototypeClass('footer') is 'HTMLElementPrototype'
+PASS tagJSWrapperPrototypeClass('footer') is 'HTMLElement'
 PASS tagJSWrapperConstructorClass('footer') is 'Function'
 PASS tagJSWrapperClass('form') is 'HTMLFormElement'
-PASS tagJSWrapperPrototypeClass('form') is 'HTMLFormElementPrototype'
+PASS tagJSWrapperPrototypeClass('form') is 'HTMLFormElement'
 PASS tagJSWrapperConstructorClass('form') is 'Function'
 PASS tagJSWrapperClass('frame') is 'HTMLFrameElement'
-PASS tagJSWrapperPrototypeClass('frame') is 'HTMLFrameElementPrototype'
+PASS tagJSWrapperPrototypeClass('frame') is 'HTMLFrameElement'
 PASS tagJSWrapperConstructorClass('frame') is 'Function'
 PASS tagJSWrapperClass('frameset') is 'HTMLFrameSetElement'
-PASS tagJSWrapperPrototypeClass('frameset') is 'HTMLFrameSetElementPrototype'
+PASS tagJSWrapperPrototypeClass('frameset') is 'HTMLFrameSetElement'
 PASS tagJSWrapperConstructorClass('frameset') is 'Function'
 PASS tagJSWrapperClass('head') is 'HTMLHeadElement'
-PASS tagJSWrapperPrototypeClass('head') is 'HTMLHeadElementPrototype'
+PASS tagJSWrapperPrototypeClass('head') is 'HTMLHeadElement'
 PASS tagJSWrapperConstructorClass('head') is 'Function'
 PASS tagJSWrapperClass('h1') is 'HTMLHeadingElement'
-PASS tagJSWrapperPrototypeClass('h1') is 'HTMLHeadingElementPrototype'
+PASS tagJSWrapperPrototypeClass('h1') is 'HTMLHeadingElement'
 PASS tagJSWrapperConstructorClass('h1') is 'Function'
 PASS tagJSWrapperClass('h2') is 'HTMLHeadingElement'
-PASS tagJSWrapperPrototypeClass('h2') is 'HTMLHeadingElementPrototype'
+PASS tagJSWrapperPrototypeClass('h2') is 'HTMLHeadingElement'
 PASS tagJSWrapperConstructorClass('h2') is 'Function'
 PASS tagJSWrapperClass('h3') is 'HTMLHeadingElement'
-PASS tagJSWrapperPrototypeClass('h3') is 'HTMLHeadingElementPrototype'
+PASS tagJSWrapperPrototypeClass('h3') is 'HTMLHeadingElement'
 PASS tagJSWrapperConstructorClass('h3') is 'Function'
 PASS tagJSWrapperClass('h4') is 'HTMLHeadingElement'
-PASS tagJSWrapperPrototypeClass('h4') is 'HTMLHeadingElementPrototype'
+PASS tagJSWrapperPrototypeClass('h4') is 'HTMLHeadingElement'
 PASS tagJSWrapperConstructorClass('h4') is 'Function'
 PASS tagJSWrapperClass('h5') is 'HTMLHeadingElement'
-PASS tagJSWrapperPrototypeClass('h5') is 'HTMLHeadingElementPrototype'
+PASS tagJSWrapperPrototypeClass('h5') is 'HTMLHeadingElement'
 PASS tagJSWrapperConstructorClass('h5') is 'Function'
 PASS tagJSWrapperClass('h6') is 'HTMLHeadingElement'
-PASS tagJSWrapperPrototypeClass('h6') is 'HTMLHeadingElementPrototype'
+PASS tagJSWrapperPrototypeClass('h6') is 'HTMLHeadingElement'
 PASS tagJSWrapperConstructorClass('h6') is 'Function'
 PASS tagJSWrapperClass('head') is 'HTMLHeadElement'
-PASS tagJSWrapperPrototypeClass('head') is 'HTMLHeadElementPrototype'
+PASS tagJSWrapperPrototypeClass('head') is 'HTMLHeadElement'
 PASS tagJSWrapperConstructorClass('head') is 'Function'
 PASS tagJSWrapperClass('header') is 'HTMLElement'
-PASS tagJSWrapperPrototypeClass('header') is 'HTMLElementPrototype'
+PASS tagJSWrapperPrototypeClass('header') is 'HTMLElement'
 PASS tagJSWrapperConstructorClass('header') is 'Function'
 PASS tagJSWrapperClass('hgroup') is 'HTMLElement'
-PASS tagJSWrapperPrototypeClass('hgroup') is 'HTMLElementPrototype'
+PASS tagJSWrapperPrototypeClass('hgroup') is 'HTMLElement'
 PASS tagJSWrapperConstructorClass('hgroup') is 'Function'
 PASS tagJSWrapperClass('hr') is 'HTMLHRElement'
-PASS tagJSWrapperPrototypeClass('hr') is 'HTMLHRElementPrototype'
+PASS tagJSWrapperPrototypeClass('hr') is 'HTMLHRElement'
 PASS tagJSWrapperConstructorClass('hr') is 'Function'
 PASS tagJSWrapperClass('html') is 'HTMLHtmlElement'
-PASS tagJSWrapperPrototypeClass('html') is 'HTMLHtmlElementPrototype'
+PASS tagJSWrapperPrototypeClass('html') is 'HTMLHtmlElement'
 PASS tagJSWrapperConstructorClass('html') is 'Function'
 PASS tagJSWrapperClass('i') is 'HTMLElement'
-PASS tagJSWrapperPrototypeClass('i') is 'HTMLElementPrototype'
+PASS tagJSWrapperPrototypeClass('i') is 'HTMLElement'
 PASS tagJSWrapperConstructorClass('i') is 'Function'
 PASS tagJSWrapperClass('iframe') is 'HTMLIFrameElement'
-PASS tagJSWrapperPrototypeClass('iframe') is 'HTMLIFrameElementPrototype'
+PASS tagJSWrapperPrototypeClass('iframe') is 'HTMLIFrameElement'
 PASS tagJSWrapperConstructorClass('iframe') is 'Function'
 PASS tagJSWrapperClass('image') is 'HTMLUnknownElement'
-PASS tagJSWrapperPrototypeClass('image') is 'HTMLUnknownElementPrototype'
+PASS tagJSWrapperPrototypeClass('image') is 'HTMLUnknownElement'
 PASS tagJSWrapperConstructorClass('image') is 'Function'
 PASS tagJSWrapperClass('img') is 'HTMLImageElement'
-PASS tagJSWrapperPrototypeClass('img') is 'HTMLImageElementPrototype'
+PASS tagJSWrapperPrototypeClass('img') is 'HTMLImageElement'
 PASS tagJSWrapperConstructorClass('img') is 'Function'
 PASS tagJSWrapperClass('input') is 'HTMLInputElement'
-PASS tagJSWrapperPrototypeClass('input') is 'HTMLInputElementPrototype'
+PASS tagJSWrapperPrototypeClass('input') is 'HTMLInputElement'
 PASS tagJSWrapperConstructorClass('input') is 'Function'
 PASS tagJSWrapperClass('ins') is 'HTMLModElement'
-PASS tagJSWrapperPrototypeClass('ins') is 'HTMLModElementPrototype'
+PASS tagJSWrapperPrototypeClass('ins') is 'HTMLModElement'
 PASS tagJSWrapperConstructorClass('ins') is 'Function'
 PASS tagJSWrapperClass('kbd') is 'HTMLElement'
-PASS tagJSWrapperPrototypeClass('kbd') is 'HTMLElementPrototype'
+PASS tagJSWrapperPrototypeClass('kbd') is 'HTMLElement'
 PASS tagJSWrapperConstructorClass('kbd') is 'Function'
 PASS tagJSWrapperClass('keygen') is 'HTMLKeygenElement'
-PASS tagJSWrapperPrototypeClass('keygen') is 'HTMLKeygenElementPrototype'
+PASS tagJSWrapperPrototypeClass('keygen') is 'HTMLKeygenElement'
 PASS tagJSWrapperConstructorClass('keygen') is 'Function'
 PASS tagJSWrapperClass('label') is 'HTMLLabelElement'
-PASS tagJSWrapperPrototypeClass('label') is 'HTMLLabelElementPrototype'
+PASS tagJSWrapperPrototypeClass('label') is 'HTMLLabelElement'
 PASS tagJSWrapperConstructorClass('label') is 'Function'
 PASS tagJSWrapperClass('layer') is 'HTMLElement'
-PASS tagJSWrapperPrototypeClass('layer') is 'HTMLElementPrototype'
+PASS tagJSWrapperPrototypeClass('layer') is 'HTMLElement'
 PASS tagJSWrapperConstructorClass('layer') is 'Function'
 PASS tagJSWrapperClass('legend') is 'HTMLLegendElement'
-PASS tagJSWrapperPrototypeClass('legend') is 'HTMLLegendElementPrototype'
+PASS tagJSWrapperPrototypeClass('legend') is 'HTMLLegendElement'
 PASS tagJSWrapperConstructorClass('legend') is 'Function'
 PASS tagJSWrapperClass('li') is 'HTMLLIElement'
-PASS tagJSWrapperPrototypeClass('li') is 'HTMLLIElementPrototype'
+PASS tagJSWrapperPrototypeClass('li') is 'HTMLLIElement'
 PASS tagJSWrapperConstructorClass('li') is 'Function'
 PASS tagJSWrapperClass('link') is 'HTMLLinkElement'
-PASS tagJSWrapperPrototypeClass('link') is 'HTMLLinkElementPrototype'
+PASS tagJSWrapperPrototypeClass('link') is 'HTMLLinkElement'
 PASS tagJSWrapperConstructorClass('link') is 'Function'
 PASS tagJSWrapperClass('listing') is 'HTMLPreElement'
-PASS tagJSWrapperPrototypeClass('listing') is 'HTMLPreElementPrototype'
+PASS tagJSWrapperPrototypeClass('listing') is 'HTMLPreElement'
 PASS tagJSWrapperConstructorClass('listing') is 'Function'
 PASS tagJSWrapperClass('main') is 'HTMLElement'
-PASS tagJSWrapperPrototypeClass('main') is 'HTMLElementPrototype'
+PASS tagJSWrapperPrototypeClass('main') is 'HTMLElement'
 PASS tagJSWrapperConstructorClass('main') is 'Function'
 PASS tagJSWrapperClass('map') is 'HTMLMapElement'
-PASS tagJSWrapperPrototypeClass('map') is 'HTMLMapElementPrototype'
+PASS tagJSWrapperPrototypeClass('map') is 'HTMLMapElement'
 PASS tagJSWrapperConstructorClass('map') is 'Function'
 PASS tagJSWrapperClass('marquee') is 'HTMLMarqueeElement'
-PASS tagJSWrapperPrototypeClass('marquee') is 'HTMLMarqueeElementPrototype'
+PASS tagJSWrapperPrototypeClass('marquee') is 'HTMLMarqueeElement'
 PASS tagJSWrapperConstructorClass('marquee') is 'Function'
 PASS tagJSWrapperClass('menu') is 'HTMLMenuElement'
-PASS tagJSWrapperPrototypeClass('menu') is 'HTMLMenuElementPrototype'
+PASS tagJSWrapperPrototypeClass('menu') is 'HTMLMenuElement'
 PASS tagJSWrapperConstructorClass('menu') is 'Function'
 PASS tagJSWrapperClass('meta') is 'HTMLMetaElement'
-PASS tagJSWrapperPrototypeClass('meta') is 'HTMLMetaElementPrototype'
+PASS tagJSWrapperPrototypeClass('meta') is 'HTMLMetaElement'
 PASS tagJSWrapperConstructorClass('meta') is 'Function'
 PASS tagJSWrapperClass('nav') is 'HTMLElement'
-PASS tagJSWrapperPrototypeClass('nav') is 'HTMLElementPrototype'
+PASS tagJSWrapperPrototypeClass('nav') is 'HTMLElement'
 PASS tagJSWrapperConstructorClass('nav') is 'Function'
 PASS tagJSWrapperClass('nobr') is 'HTMLElement'
-PASS tagJSWrapperPrototypeClass('nobr') is 'HTMLElementPrototype'
+PASS tagJSWrapperPrototypeClass('nobr') is 'HTMLElement'
 PASS tagJSWrapperConstructorClass('nobr') is 'Function'
 PASS tagJSWrapperClass('noembed') is 'HTMLElement'
-PASS tagJSWrapperPrototypeClass('noembed') is 'HTMLElementPrototype'
+PASS tagJSWrapperPrototypeClass('noembed') is 'HTMLElement'
 PASS tagJSWrapperConstructorClass('noembed') is 'Function'
 PASS tagJSWrapperClass('noframes') is 'HTMLElement'
-PASS tagJSWrapperPrototypeClass('noframes') is 'HTMLElementPrototype'
+PASS tagJSWrapperPrototypeClass('noframes') is 'HTMLElement'
 PASS tagJSWrapperConstructorClass('noframes') is 'Function'
 PASS tagJSWrapperClass('nolayer') is 'HTMLElement'
-PASS tagJSWrapperPrototypeClass('nolayer') is 'HTMLElementPrototype'
+PASS tagJSWrapperPrototypeClass('nolayer') is 'HTMLElement'
 PASS tagJSWrapperConstructorClass('nolayer') is 'Function'
 PASS tagJSWrapperClass('noscript') is 'HTMLElement'
-PASS tagJSWrapperPrototypeClass('noscript') is 'HTMLElementPrototype'
+PASS tagJSWrapperPrototypeClass('noscript') is 'HTMLElement'
 PASS tagJSWrapperConstructorClass('noscript') is 'Function'
 PASS tagJSWrapperClass('object') is 'HTMLObjectElement'
-PASS tagJSWrapperPrototypeClass('object') is 'HTMLObjectElementPrototype'
+PASS tagJSWrapperPrototypeClass('object') is 'HTMLObjectElement'
 PASS tagJSWrapperConstructorClass('object') is 'Function'
 PASS tagJSWrapperClass('ol') is 'HTMLOListElement'
-PASS tagJSWrapperPrototypeClass('ol') is 'HTMLOListElementPrototype'
+PASS tagJSWrapperPrototypeClass('ol') is 'HTMLOListElement'
 PASS tagJSWrapperConstructorClass('ol') is 'Function'
 PASS tagJSWrapperClass('optgroup') is 'HTMLOptGroupElement'
-PASS tagJSWrapperPrototypeClass('optgroup') is 'HTMLOptGroupElementPrototype'
+PASS tagJSWrapperPrototypeClass('optgroup') is 'HTMLOptGroupElement'
 PASS tagJSWrapperConstructorClass('optgroup') is 'Function'
 PASS tagJSWrapperClass('option') is 'HTMLOptionElement'
-PASS tagJSWrapperPrototypeClass('option') is 'HTMLOptionElementPrototype'
+PASS tagJSWrapperPrototypeClass('option') is 'HTMLOptionElement'
 PASS tagJSWrapperConstructorClass('option') is 'Function'
 PASS tagJSWrapperClass('p') is 'HTMLParagraphElement'
-PASS tagJSWrapperPrototypeClass('p') is 'HTMLParagraphElementPrototype'
+PASS tagJSWrapperPrototypeClass('p') is 'HTMLParagraphElement'
 PASS tagJSWrapperConstructorClass('p') is 'Function'
 PASS tagJSWrapperClass('param') is 'HTMLParamElement'
-PASS tagJSWrapperPrototypeClass('param') is 'HTMLParamElementPrototype'
+PASS tagJSWrapperPrototypeClass('param') is 'HTMLParamElement'
 PASS tagJSWrapperConstructorClass('param') is 'Function'
 PASS tagJSWrapperClass('plaintext') is 'HTMLElement'
-PASS tagJSWrapperPrototypeClass('plaintext') is 'HTMLElementPrototype'
+PASS tagJSWrapperPrototypeClass('plaintext') is 'HTMLElement'
 PASS tagJSWrapperConstructorClass('plaintext') is 'Function'
 PASS tagJSWrapperClass('pre') is 'HTMLPreElement'
-PASS tagJSWrapperPrototypeClass('pre') is 'HTMLPreElementPrototype'
+PASS tagJSWrapperPrototypeClass('pre') is 'HTMLPreElement'
 PASS tagJSWrapperConstructorClass('pre') is 'Function'
 PASS tagJSWrapperClass('q') is 'HTMLQuoteElement'
-PASS tagJSWrapperPrototypeClass('q') is 'HTMLQuoteElementPrototype'
+PASS tagJSWrapperPrototypeClass('q') is 'HTMLQuoteElement'
 PASS tagJSWrapperConstructorClass('q') is 'Function'
 PASS tagJSWrapperClass('rp') is 'HTMLElement'
-PASS tagJSWrapperPrototypeClass('rp') is 'HTMLElementPrototype'
+PASS tagJSWrapperPrototypeClass('rp') is 'HTMLElement'
 PASS tagJSWrapperConstructorClass('rp') is 'Function'
 PASS tagJSWrapperClass('rt') is 'HTMLElement'
-PASS tagJSWrapperPrototypeClass('rt') is 'HTMLElementPrototype'
+PASS tagJSWrapperPrototypeClass('rt') is 'HTMLElement'
 PASS tagJSWrapperConstructorClass('rt') is 'Function'
 PASS tagJSWrapperClass('ruby') is 'HTMLElement'
-PASS tagJSWrapperPrototypeClass('ruby') is 'HTMLElementPrototype'
+PASS tagJSWrapperPrototypeClass('ruby') is 'HTMLElement'
 PASS tagJSWrapperConstructorClass('ruby') is 'Function'
 PASS tagJSWrapperClass('s') is 'HTMLElement'
-PASS tagJSWrapperPrototypeClass('s') is 'HTMLElementPrototype'
+PASS tagJSWrapperPrototypeClass('s') is 'HTMLElement'
 PASS tagJSWrapperConstructorClass('s') is 'Function'
 PASS tagJSWrapperClass('samp') is 'HTMLElement'
-PASS tagJSWrapperPrototypeClass('samp') is 'HTMLElementPrototype'
+PASS tagJSWrapperPrototypeClass('samp') is 'HTMLElement'
 PASS tagJSWrapperConstructorClass('samp') is 'Function'
 PASS tagJSWrapperClass('script') is 'HTMLScriptElement'
-PASS tagJSWrapperPrototypeClass('script') is 'HTMLScriptElementPrototype'
+PASS tagJSWrapperPrototypeClass('script') is 'HTMLScriptElement'
 PASS tagJSWrapperConstructorClass('script') is 'Function'
 PASS tagJSWrapperClass('section') is 'HTMLElement'
-PASS tagJSWrapperPrototypeClass('section') is 'HTMLElementPrototype'
+PASS tagJSWrapperPrototypeClass('section') is 'HTMLElement'
 PASS tagJSWrapperConstructorClass('section') is 'Function'
 PASS tagJSWrapperClass('select') is 'HTMLSelectElement'
-PASS tagJSWrapperPrototypeClass('select') is 'HTMLSelectElementPrototype'
+PASS tagJSWrapperPrototypeClass('select') is 'HTMLSelectElement'
 PASS tagJSWrapperConstructorClass('select') is 'Function'
 PASS tagJSWrapperClass('small') is 'HTMLElement'
-PASS tagJSWrapperPrototypeClass('small') is 'HTMLElementPrototype'
+PASS tagJSWrapperPrototypeClass('small') is 'HTMLElement'
 PASS tagJSWrapperConstructorClass('small') is 'Function'
 PASS tagJSWrapperClass('span') is 'HTMLSpanElement'
-PASS tagJSWrapperPrototypeClass('span') is 'HTMLSpanElementPrototype'
+PASS tagJSWrapperPrototypeClass('span') is 'HTMLSpanElement'
 PASS tagJSWrapperConstructorClass('span') is 'Function'
 PASS tagJSWrapperClass('strike') is 'HTMLElement'
-PASS tagJSWrapperPrototypeClass('strike') is 'HTMLElementPrototype'
+PASS tagJSWrapperPrototypeClass('strike') is 'HTMLElement'
 PASS tagJSWrapperConstructorClass('strike') is 'Function'
 PASS tagJSWrapperClass('strong') is 'HTMLElement'
-PASS tagJSWrapperPrototypeClass('strong') is 'HTMLElementPrototype'
+PASS tagJSWrapperPrototypeClass('strong') is 'HTMLElement'
 PASS tagJSWrapperConstructorClass('strong') is 'Function'
 PASS tagJSWrapperClass('style') is 'HTMLStyleElement'
-PASS tagJSWrapperPrototypeClass('style') is 'HTMLStyleElementPrototype'
+PASS tagJSWrapperPrototypeClass('style') is 'HTMLStyleElement'
 PASS tagJSWrapperConstructorClass('style') is 'Function'
 PASS tagJSWrapperClass('sub') is 'HTMLElement'
-PASS tagJSWrapperPrototypeClass('sub') is 'HTMLElementPrototype'
+PASS tagJSWrapperPrototypeClass('sub') is 'HTMLElement'
 PASS tagJSWrapperConstructorClass('sub') is 'Function'
 PASS tagJSWrapperClass('sup') is 'HTMLElement'
-PASS tagJSWrapperPrototypeClass('sup') is 'HTMLElementPrototype'
+PASS tagJSWrapperPrototypeClass('sup') is 'HTMLElement'
 PASS tagJSWrapperConstructorClass('sup') is 'Function'
 PASS tagJSWrapperClass('table') is 'HTMLTableElement'
-PASS tagJSWrapperPrototypeClass('table') is 'HTMLTableElementPrototype'
+PASS tagJSWrapperPrototypeClass('table') is 'HTMLTableElement'
 PASS tagJSWrapperConstructorClass('table') is 'Function'
 PASS tagJSWrapperClass('tbody') is 'HTMLTableSectionElement'
-PASS tagJSWrapperPrototypeClass('tbody') is 'HTMLTableSectionElementPrototype'
+PASS tagJSWrapperPrototypeClass('tbody') is 'HTMLTableSectionElement'
 PASS tagJSWrapperConstructorClass('tbody') is 'Function'
 PASS tagJSWrapperClass('td') is 'HTMLTableCellElement'
-PASS tagJSWrapperPrototypeClass('td') is 'HTMLTableCellElementPrototype'
+PASS tagJSWrapperPrototypeClass('td') is 'HTMLTableCellElement'
 PASS tagJSWrapperConstructorClass('td') is 'Function'
 PASS tagJSWrapperClass('textarea') is 'HTMLTextAreaElement'
-PASS tagJSWrapperPrototypeClass('textarea') is 'HTMLTextAreaElementPrototype'
+PASS tagJSWrapperPrototypeClass('textarea') is 'HTMLTextAreaElement'
 PASS tagJSWrapperConstructorClass('textarea') is 'Function'
 PASS tagJSWrapperClass('tfoot') is 'HTMLTableSectionElement'
-PASS tagJSWrapperPrototypeClass('tfoot') is 'HTMLTableSectionElementPrototype'
+PASS tagJSWrapperPrototypeClass('tfoot') is 'HTMLTableSectionElement'
 PASS tagJSWrapperConstructorClass('tfoot') is 'Function'
 PASS tagJSWrapperClass('th') is 'HTMLTableCellElement'
-PASS tagJSWrapperPrototypeClass('th') is 'HTMLTableCellElementPrototype'
+PASS tagJSWrapperPrototypeClass('th') is 'HTMLTableCellElement'
 PASS tagJSWrapperConstructorClass('th') is 'Function'
 PASS tagJSWrapperClass('thead') is 'HTMLTableSectionElement'
-PASS tagJSWrapperPrototypeClass('thead') is 'HTMLTableSectionElementPrototype'
+PASS tagJSWrapperPrototypeClass('thead') is 'HTMLTableSectionElement'
 PASS tagJSWrapperConstructorClass('thead') is 'Function'
 PASS tagJSWrapperClass('title') is 'HTMLTitleElement'
-PASS tagJSWrapperPrototypeClass('title') is 'HTMLTitleElementPrototype'
+PASS tagJSWrapperPrototypeClass('title') is 'HTMLTitleElement'
 PASS tagJSWrapperConstructorClass('title') is 'Function'
 PASS tagJSWrapperClass('tr') is 'HTMLTableRowElement'
-PASS tagJSWrapperPrototypeClass('tr') is 'HTMLTableRowElementPrototype'
+PASS tagJSWrapperPrototypeClass('tr') is 'HTMLTableRowElement'
 PASS tagJSWrapperConstructorClass('tr') is 'Function'
 PASS tagJSWrapperClass('tt') is 'HTMLElement'
-PASS tagJSWrapperPrototypeClass('tt') is 'HTMLElementPrototype'
+PASS tagJSWrapperPrototypeClass('tt') is 'HTMLElement'
 PASS tagJSWrapperConstructorClass('tt') is 'Function'
 PASS tagJSWrapperClass('u') is 'HTMLElement'
-PASS tagJSWrapperPrototypeClass('u') is 'HTMLElementPrototype'
+PASS tagJSWrapperPrototypeClass('u') is 'HTMLElement'
 PASS tagJSWrapperConstructorClass('u') is 'Function'
 PASS tagJSWrapperClass('ul') is 'HTMLUListElement'
-PASS tagJSWrapperPrototypeClass('ul') is 'HTMLUListElementPrototype'
+PASS tagJSWrapperPrototypeClass('ul') is 'HTMLUListElement'
 PASS tagJSWrapperConstructorClass('ul') is 'Function'
 PASS tagJSWrapperClass('var') is 'HTMLElement'
-PASS tagJSWrapperPrototypeClass('var') is 'HTMLElementPrototype'
+PASS tagJSWrapperPrototypeClass('var') is 'HTMLElement'
 PASS tagJSWrapperConstructorClass('var') is 'Function'
 PASS tagJSWrapperClass('wbr') is 'HTMLElement'
-PASS tagJSWrapperPrototypeClass('wbr') is 'HTMLElementPrototype'
+PASS tagJSWrapperPrototypeClass('wbr') is 'HTMLElement'
 PASS tagJSWrapperConstructorClass('wbr') is 'Function'
 PASS tagJSWrapperClass('xmp') is 'HTMLPreElement'
-PASS tagJSWrapperPrototypeClass('xmp') is 'HTMLPreElementPrototype'
+PASS tagJSWrapperPrototypeClass('xmp') is 'HTMLPreElement'
 PASS tagJSWrapperConstructorClass('xmp') is 'Function'
 
index 50ad4f9..65dd2ba 100644 (file)
@@ -38,25 +38,17 @@ function tagJSWrapperConstructorClass(tagName)
     return jsWrapperClass(document.createElement(tagName).constructor);
 }
 
-function testTag(tagName, className, prototypeName, constructorName)
+function testTag(tagName, className)
 {
-    if (!prototypeName)
-        prototypeName = className + "Prototype";
-    if (!constructorName)
-        constructorName = className + "Constructor";
     shouldBe("tagJSWrapperClass('" + tagName + "')", "'" + className + "'");
-    shouldBe("tagJSWrapperPrototypeClass('" + tagName + "')", "'" + prototypeName + "'");
+    shouldBe("tagJSWrapperPrototypeClass('" + tagName + "')", "'" + className + "'");
     shouldBe("tagJSWrapperConstructorClass('" + tagName + "')", "'Function'");
 }
 
-function test(expression, className, prototypeName, constructorName)
+function test(expression, className)
 {
-    if (!prototypeName)
-        prototypeName = className + "Prototype";
-    if (!constructorName)
-        constructorName = className + "Constructor";
     shouldBe("jsWrapperClass(" + expression + ")", "'" + className + "'");
-    shouldBe("jsWrapperClass(" + expression + ".__proto__)", "'" + prototypeName + "'");
+    shouldBe("jsWrapperClass(" + expression + ".__proto__)", "'" + className + "'");
     shouldBe("jsWrapperClass(" + expression + ".constructor)", "'Function'");
 }
 
index 5f3201c..294fce4 100644 (file)
@@ -2,6 +2,6 @@ Test for toString on event.view. This test simulates a click when run via DumpRe
 
 event.view :
 document: [object HTMLDocument]
-proto: [object WindowPrototype]
+proto: [object Window]
 Success getting [object Window]
 
index 5a5ff63..c926162 100644 (file)
@@ -3,9 +3,9 @@ Tests that DedicatedWorkerGlobalScope's prototype chain is correct.
 On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
 
 
-DedicatedWorkerGlobalScope.prototype.toString() === "[object DedicatedWorkerGlobalScopePrototype]": true
+DedicatedWorkerGlobalScope.prototype.toString() === "[object DedicatedWorkerGlobalScope]": true
 Object.getPrototypeOf(DedicatedWorkerGlobalScope.prototype) === WorkerGlobalScope.prototype: true
-WorkerGlobalScope.prototype.toString() === "[object WorkerGlobalScopePrototype]": true
+WorkerGlobalScope.prototype.toString() === "[object WorkerGlobalScope]": true
 Object.getPrototypeOf(WorkerGlobalScope.prototype) === EventTarget.prototype: true
 PASS successfullyParsed is true
 
index 285da33..668cd96 100644 (file)
@@ -8,9 +8,9 @@ var jsTestIsAsync = true;
 description("Tests that DedicatedWorkerGlobalScope's prototype chain is correct.");
 
 var worker = createWorker();
-worker.postMessage("eval DedicatedWorkerGlobalScope.prototype.toString() === \"[object DedicatedWorkerGlobalScopePrototype]\"");
+worker.postMessage("eval DedicatedWorkerGlobalScope.prototype.toString() === \"[object DedicatedWorkerGlobalScope]\"");
 worker.postMessage("eval Object.getPrototypeOf(DedicatedWorkerGlobalScope.prototype) === WorkerGlobalScope.prototype");
-worker.postMessage("eval WorkerGlobalScope.prototype.toString() === \"[object WorkerGlobalScopePrototype]\"");
+worker.postMessage("eval WorkerGlobalScope.prototype.toString() === \"[object WorkerGlobalScope]\"");
 worker.postMessage("eval Object.getPrototypeOf(WorkerGlobalScope.prototype) === EventTarget.prototype");
 worker.postMessage("eval DONE");
 
index 80f7f9e..3e57713 100644 (file)
@@ -2,7 +2,7 @@ Tests the properties of the exceptions related to XMLHttpRequest.
 
 PASS e.toString() is "NetworkError:  A network error occurred."
 PASS Object.prototype.toString.call(e) is "[object DOMException]"
-FAIL Object.prototype.toString.call(e.__proto__) is not "[object DOMException]". Was "[object DOMExceptionPrototype]"
+PASS Object.prototype.toString.call(e.__proto__) is "[object DOMException]"
 PASS e.constructor.toString() is "function DOMException() {
     [native code]
 }"
index d5983e7..464e9d0 100644 (file)
@@ -1,3 +1,27 @@
+2020-05-01  Alexey Shvayka  <shvaikalesh@gmail.com>
+
+        [WebIDL] Interface prototype objects should define @@toStringTag
+        https://bugs.webkit.org/show_bug.cgi?id=211020
+
+        Reviewed by Darin Adler.
+
+        Adjust tests for `X.prototype.toString()` returning "[object X]"
+        instead of "[object XPrototype]", where X is WebIDL interface.
+
+        * web-platform-tests/WebIDL/ecmascript-binding/class-string-interface.any-expected.txt:
+        * web-platform-tests/WebIDL/ecmascript-binding/class-string-interface.any.worker-expected.txt:
+        * web-platform-tests/WebIDL/ecmascript-binding/class-string-named-properties-object.window-expected.txt:
+        * web-platform-tests/dom/nodes/Document-createEvent.https-expected.txt:
+        * web-platform-tests/html/browsers/the-window-object/window-prototype-chain.html: WPT revision: 50417942bbfe.
+        * web-platform-tests/wasm/jsapi/instance/toString.any-expected.txt:
+        * web-platform-tests/wasm/jsapi/instance/toString.any.worker-expected.txt:
+        * web-platform-tests/wasm/jsapi/memory/toString.any-expected.txt:
+        * web-platform-tests/wasm/jsapi/memory/toString.any.worker-expected.txt:
+        * web-platform-tests/wasm/jsapi/module/toString.any-expected.txt:
+        * web-platform-tests/wasm/jsapi/module/toString.any.worker-expected.txt:
+        * web-platform-tests/wasm/jsapi/table/toString.any-expected.txt:
+        * web-platform-tests/wasm/jsapi/table/toString.any.worker-expected.txt:
+
 2020-04-30  Sergio Villar Senin  <svillar@igalia.com>
 
         [WebXR] Import latest changes from webxr/resources in tests
index 2cdab40..6caef71 100644 (file)
@@ -1,10 +1,10 @@
 
-FAIL @@toStringTag exists on the prototype with the appropriate descriptor assert_own_property: expected property symbol "Symbol(Symbol.toStringTag)" missing
+PASS @@toStringTag exists on the prototype with the appropriate descriptor 
 PASS @@toStringTag must not exist on the instance 
-FAIL Object.prototype.toString applied to the prototype assert_equals: expected "[object Blob]" but got "[object BlobPrototype]"
+PASS Object.prototype.toString applied to the prototype 
 PASS Object.prototype.toString applied to an instance 
-FAIL Object.prototype.toString applied after modifying the prototype's @@toStringTag assert_own_property: Precondition for this test: @@toStringTag on the prototype expected property symbol "Symbol(Symbol.toStringTag)" missing
+PASS Object.prototype.toString applied after modifying the prototype's @@toStringTag 
 PASS Object.prototype.toString applied to the instance after modifying the instance's @@toStringTag 
 FAIL Object.prototype.toString applied to a null-prototype instance assert_equals: expected "[object Object]" but got "[object Blob]"
-FAIL Object.prototype.toString applied after deleting @@toStringTag assert_equals: prototype expected "[object Object]" but got "[object BlobPrototype]"
+FAIL Object.prototype.toString applied after deleting @@toStringTag assert_equals: prototype expected "[object Object]" but got "[object Blob]"
 
index 2cdab40..6caef71 100644 (file)
@@ -1,10 +1,10 @@
 
-FAIL @@toStringTag exists on the prototype with the appropriate descriptor assert_own_property: expected property symbol "Symbol(Symbol.toStringTag)" missing
+PASS @@toStringTag exists on the prototype with the appropriate descriptor 
 PASS @@toStringTag must not exist on the instance 
-FAIL Object.prototype.toString applied to the prototype assert_equals: expected "[object Blob]" but got "[object BlobPrototype]"
+PASS Object.prototype.toString applied to the prototype 
 PASS Object.prototype.toString applied to an instance 
-FAIL Object.prototype.toString applied after modifying the prototype's @@toStringTag assert_own_property: Precondition for this test: @@toStringTag on the prototype expected property symbol "Symbol(Symbol.toStringTag)" missing
+PASS Object.prototype.toString applied after modifying the prototype's @@toStringTag 
 PASS Object.prototype.toString applied to the instance after modifying the instance's @@toStringTag 
 FAIL Object.prototype.toString applied to a null-prototype instance assert_equals: expected "[object Object]" but got "[object Blob]"
-FAIL Object.prototype.toString applied after deleting @@toStringTag assert_equals: prototype expected "[object Object]" but got "[object BlobPrototype]"
+FAIL Object.prototype.toString applied after deleting @@toStringTag assert_equals: prototype expected "[object Object]" but got "[object Blob]"
 
index ecb7d2f..29f8003 100644 (file)
@@ -1,6 +1,6 @@
 
-FAIL @@toStringTag exists with the appropriate descriptor assert_own_property: expected property symbol "Symbol(Symbol.toStringTag)" missing
+PASS @@toStringTag exists with the appropriate descriptor 
 PASS Object.prototype.toString 
-FAIL Object.prototype.toString applied after modifying @@toStringTag assert_own_property: Precondition for this test: @@toStringTag exists expected property symbol "Symbol(Symbol.toStringTag)" missing
-FAIL Object.prototype.toString applied after deleting @@toStringTag assert_equals: prototype expected "[object EventTarget]" but got "[object WindowProperties]"
+PASS Object.prototype.toString applied after modifying @@toStringTag 
+PASS Object.prototype.toString applied after deleting @@toStringTag 
 
index 0a631a7..86a6a0d 100644 (file)
@@ -114,11 +114,11 @@ PASS svgevents should be an alias for Event.
 PASS createEvent('svgevents') should be initialized correctly. 
 PASS SVGEVENTS should be an alias for Event. 
 PASS createEvent('SVGEVENTS') should be initialized correctly. 
-FAIL TextEvent should be an alias for CompositionEvent. assert_equals: expected object "[object CompositionEventPrototype]" but got object "[object TextEventPrototype]"
+FAIL TextEvent should be an alias for CompositionEvent. assert_equals: expected object "[object CompositionEvent]" but got object "[object TextEvent]"
 PASS createEvent('TextEvent') should be initialized correctly. 
-FAIL textevent should be an alias for CompositionEvent. assert_equals: expected object "[object CompositionEventPrototype]" but got object "[object TextEventPrototype]"
+FAIL textevent should be an alias for CompositionEvent. assert_equals: expected object "[object CompositionEvent]" but got object "[object TextEvent]"
 PASS createEvent('textevent') should be initialized correctly. 
-FAIL TEXTEVENT should be an alias for CompositionEvent. assert_equals: expected object "[object CompositionEventPrototype]" but got object "[object TextEventPrototype]"
+FAIL TEXTEVENT should be an alias for CompositionEvent. assert_equals: expected object "[object CompositionEvent]" but got object "[object TextEvent]"
 PASS createEvent('TEXTEVENT') should be initialized correctly. 
 PASS Should throw NOT_SUPPORTED_ERR for pluralized legacy event interface "TextEvents" 
 FAIL TouchEvent should be an alias for TouchEvent. The operation is not supported.
index d29a8e1..4cad948 100644 (file)
@@ -15,7 +15,6 @@ test(function() {
 }, "window object");
 test(function() {
   var proto = Object.getPrototypeOf(window);
-  assert_class_string(proto, "WindowPrototype");
   assert_equals(proto, Window.prototype);
 }, "Window.prototype");
 test(function() {
@@ -24,12 +23,10 @@ test(function() {
 }, "Global scope polluter");
 test(function() {
   var protoproto = Object.getPrototypeOf(Object.getPrototypeOf(Object.getPrototypeOf(window)));
-  assert_class_string(protoproto, "EventTargetPrototype");
   assert_equals(protoproto, EventTarget.prototype);
 }, "EventTarget.prototype");
 test(function() {
   var protoprotoproto = Object.getPrototypeOf(Object.getPrototypeOf(Object.getPrototypeOf(Object.getPrototypeOf(window))));
-  assert_class_string(protoprotoproto, "Object");
   assert_equals(protoprotoproto, Object.prototype);
 }, "Object.prototype");
 </script>
index a381c59..73913e1 100644 (file)
@@ -1,4 +1,4 @@
 
 PASS Object.prototype.toString on an Instance 
-FAIL @@toStringTag exists on the prototype with the appropriate descriptor assert_own_property: expected property symbol "Symbol(Symbol.toStringTag)" missing
+PASS @@toStringTag exists on the prototype with the appropriate descriptor 
 
index a381c59..73913e1 100644 (file)
@@ -1,4 +1,4 @@
 
 PASS Object.prototype.toString on an Instance 
-FAIL @@toStringTag exists on the prototype with the appropriate descriptor assert_own_property: expected property symbol "Symbol(Symbol.toStringTag)" missing
+PASS @@toStringTag exists on the prototype with the appropriate descriptor 
 
index d20f3b5..b01563e 100644 (file)
@@ -1,4 +1,4 @@
 
 PASS Object.prototype.toString on an Memory 
-FAIL @@toStringTag exists on the prototype with the appropriate descriptor assert_own_property: expected property symbol "Symbol(Symbol.toStringTag)" missing
+PASS @@toStringTag exists on the prototype with the appropriate descriptor 
 
index d20f3b5..b01563e 100644 (file)
@@ -1,4 +1,4 @@
 
 PASS Object.prototype.toString on an Memory 
-FAIL @@toStringTag exists on the prototype with the appropriate descriptor assert_own_property: expected property symbol "Symbol(Symbol.toStringTag)" missing
+PASS @@toStringTag exists on the prototype with the appropriate descriptor 
 
index e3f4e0a..70a371b 100644 (file)
@@ -1,4 +1,4 @@
 
 PASS Object.prototype.toString on an Module 
-FAIL @@toStringTag exists on the prototype with the appropriate descriptor assert_own_property: expected property symbol "Symbol(Symbol.toStringTag)" missing
+PASS @@toStringTag exists on the prototype with the appropriate descriptor 
 
index e3f4e0a..70a371b 100644 (file)
@@ -1,4 +1,4 @@
 
 PASS Object.prototype.toString on an Module 
-FAIL @@toStringTag exists on the prototype with the appropriate descriptor assert_own_property: expected property symbol "Symbol(Symbol.toStringTag)" missing
+PASS @@toStringTag exists on the prototype with the appropriate descriptor 
 
index b047d31..8f9027a 100644 (file)
@@ -1,4 +1,4 @@
 
 PASS Object.prototype.toString on an Table 
-FAIL @@toStringTag exists on the prototype with the appropriate descriptor assert_own_property: expected property symbol "Symbol(Symbol.toStringTag)" missing
+PASS @@toStringTag exists on the prototype with the appropriate descriptor 
 
index b047d31..8f9027a 100644 (file)
@@ -1,4 +1,4 @@
 
 PASS Object.prototype.toString on an Table 
-FAIL @@toStringTag exists on the prototype with the appropriate descriptor assert_own_property: expected property symbol "Symbol(Symbol.toStringTag)" missing
+PASS @@toStringTag exists on the prototype with the appropriate descriptor 
 
index ffbd105..f5ae3f6 100644 (file)
@@ -277,6 +277,7 @@ ALL PROPERTIES:
     CAPTURING_PHASE
     AT_TARGET
     BUBBLING_PHASE
+    Symbol(Symbol.toStringTag)
     toString
     toLocaleString
     valueOf
@@ -520,6 +521,7 @@ ALL PROPERTIES:
     item
     namedItem
     Symbol(Symbol.iterator)
+    Symbol(Symbol.toStringTag)
     toString
     toLocaleString
     valueOf
index c2de43d..3ded6b5 100644 (file)
@@ -114,11 +114,11 @@ PASS svgevents should be an alias for Event.
 PASS createEvent('svgevents') should be initialized correctly. 
 PASS SVGEVENTS should be an alias for Event. 
 PASS createEvent('SVGEVENTS') should be initialized correctly. 
-FAIL TextEvent should be an alias for CompositionEvent. assert_equals: expected object "[object CompositionEventPrototype]" but got object "[object TextEventPrototype]"
+FAIL TextEvent should be an alias for CompositionEvent. assert_equals: expected object "[object CompositionEvent]" but got object "[object TextEvent]"
 PASS createEvent('TextEvent') should be initialized correctly. 
-FAIL textevent should be an alias for CompositionEvent. assert_equals: expected object "[object CompositionEventPrototype]" but got object "[object TextEventPrototype]"
+FAIL textevent should be an alias for CompositionEvent. assert_equals: expected object "[object CompositionEvent]" but got object "[object TextEvent]"
 PASS createEvent('textevent') should be initialized correctly. 
-FAIL TEXTEVENT should be an alias for CompositionEvent. assert_equals: expected object "[object CompositionEventPrototype]" but got object "[object TextEventPrototype]"
+FAIL TEXTEVENT should be an alias for CompositionEvent. assert_equals: expected object "[object CompositionEvent]" but got object "[object TextEvent]"
 PASS createEvent('TEXTEVENT') should be initialized correctly. 
 PASS Should throw NOT_SUPPORTED_ERR for pluralized legacy event interface "TextEvents" 
 PASS TouchEvent should be an alias for TouchEvent. 
index 5ac49df..525c398 100644 (file)
@@ -114,11 +114,11 @@ PASS svgevents should be an alias for Event.
 PASS createEvent('svgevents') should be initialized correctly. 
 PASS SVGEVENTS should be an alias for Event. 
 PASS createEvent('SVGEVENTS') should be initialized correctly. 
-FAIL TextEvent should be an alias for CompositionEvent. assert_equals: expected object "[object CompositionEventPrototype]" but got object "[object TextEventPrototype]"
+FAIL TextEvent should be an alias for CompositionEvent. assert_equals: expected object "[object CompositionEvent]" but got object "[object TextEvent]"
 PASS createEvent('TextEvent') should be initialized correctly. 
-FAIL textevent should be an alias for CompositionEvent. assert_equals: expected object "[object CompositionEventPrototype]" but got object "[object TextEventPrototype]"
+FAIL textevent should be an alias for CompositionEvent. assert_equals: expected object "[object CompositionEvent]" but got object "[object TextEvent]"
 PASS createEvent('textevent') should be initialized correctly. 
-FAIL TEXTEVENT should be an alias for CompositionEvent. assert_equals: expected object "[object CompositionEventPrototype]" but got object "[object TextEventPrototype]"
+FAIL TEXTEVENT should be an alias for CompositionEvent. assert_equals: expected object "[object CompositionEvent]" but got object "[object TextEvent]"
 PASS createEvent('TEXTEVENT') should be initialized correctly. 
 PASS Should throw NOT_SUPPORTED_ERR for pluralized legacy event interface "TextEvents" 
 FAIL TouchEvent should be an alias for TouchEvent. The operation is not supported.
index c2de43d..3ded6b5 100644 (file)
@@ -114,11 +114,11 @@ PASS svgevents should be an alias for Event.
 PASS createEvent('svgevents') should be initialized correctly. 
 PASS SVGEVENTS should be an alias for Event. 
 PASS createEvent('SVGEVENTS') should be initialized correctly. 
-FAIL TextEvent should be an alias for CompositionEvent. assert_equals: expected object "[object CompositionEventPrototype]" but got object "[object TextEventPrototype]"
+FAIL TextEvent should be an alias for CompositionEvent. assert_equals: expected object "[object CompositionEvent]" but got object "[object TextEvent]"
 PASS createEvent('TextEvent') should be initialized correctly. 
-FAIL textevent should be an alias for CompositionEvent. assert_equals: expected object "[object CompositionEventPrototype]" but got object "[object TextEventPrototype]"
+FAIL textevent should be an alias for CompositionEvent. assert_equals: expected object "[object CompositionEvent]" but got object "[object TextEvent]"
 PASS createEvent('textevent') should be initialized correctly. 
-FAIL TEXTEVENT should be an alias for CompositionEvent. assert_equals: expected object "[object CompositionEventPrototype]" but got object "[object TextEventPrototype]"
+FAIL TEXTEVENT should be an alias for CompositionEvent. assert_equals: expected object "[object CompositionEvent]" but got object "[object TextEvent]"
 PASS createEvent('TEXTEVENT') should be initialized correctly. 
 PASS Should throw NOT_SUPPORTED_ERR for pluralized legacy event interface "TextEvents" 
 PASS TouchEvent should be an alias for TouchEvent. 
index a52228e..25b9af5 100644 (file)
@@ -1021,18 +1021,6 @@ IdlInterface.prototype.test_self = function()
                                     '.prototype is not "' + inherit_interface + 'Prototype"');
             }
         }
-
-        // "The class string of an interface prototype object is the
-        // concatenation of the interface’s identifier and the string
-        // “Prototype”."
-        assert_class_string(self[this.name].prototype, this.name + "Prototype",
-                            "class string of " + this.name + ".prototype");
-        // String() should end up calling {}.toString if nothing defines a
-        // stringifier.
-        if (!this.has_stringifier()) {
-            assert_equals(String(self[this.name].prototype), "[object " + this.name + "Prototype]",
-                    "String(" + this.name + ".prototype)");
-        }
     }.bind(this), this.name + " interface: existence and properties of interface prototype object");
 
     test(function()
index 267908a..295bfa1 100644 (file)
@@ -10,9 +10,7 @@ description("Validates the SVG2 inheritance model.");
 
 function interfaceName(prototype)
 {
-    var parts = prototype.toString().split(" ");
-    var lastPart = parts[parts.length - 1];
-    return lastPart.substring(0, lastPart.length - 10);
+    return prototype.toString().slice(8, -1);
 }
 
 function checkParent(type, expectedParent)
index 1cd31f9..c90823e 100644 (file)
@@ -1,8 +1,8 @@
 PASS jsWrapperClass(transformRule) is 'CSSValueList'
-PASS jsWrapperClass(transformRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(transformRule.__proto__) is 'CSSValueList'
 PASS jsWrapperClass(transformRule.constructor) is 'Function'
 PASS jsWrapperClass(transformRule[0]) is 'CSSValue'
-PASS jsWrapperClass(transformRule[0].__proto__) is 'CSSValuePrototype'
+PASS jsWrapperClass(transformRule[0].__proto__) is 'CSSValue'
 PASS jsWrapperClass(transformRule[0].constructor) is 'Function'
 PASS transformRule[0].cssText is 'translate(10px)'
 PASS transformRule[1].cssText is 'translateX(10px)'
index e7ee1c1..e34577f 100644 (file)
       return string.substr(8, string.length - 9);
   }
 
-  function test(expression, className, prototypeName, constructorName)
+  function test(expression, className)
   {
-      if (!prototypeName)
-          prototypeName = className + "Prototype";
-      if (!constructorName)
-          constructorName = className + "Constructor";
       shouldBe("jsWrapperClass(" + expression + ")", "'" + className + "'");
-      shouldBe("jsWrapperClass(" + expression + ".__proto__)", "'" + prototypeName + "'");
+      shouldBe("jsWrapperClass(" + expression + ".__proto__)", "'" + className + "'");
       shouldBe("jsWrapperClass(" + expression + ".constructor)", "'Function'");
   }
 
index ea27167..715ae27 100644 (file)
@@ -1,3 +1,101 @@
+2020-05-01  Alexey Shvayka  <shvaikalesh@gmail.com>
+
+        [WebIDL] Interface prototype objects should define @@toStringTag
+        https://bugs.webkit.org/show_bug.cgi?id=211020
+
+        Reviewed by Darin Adler.
+
+        WebIDL spec was recently updated [1] to define @@toStringTag on interface prototype objects.
+        This change aligns WebIDL with ECMA-262 built-ins and Blink's behavior. Gecko have also
+        expressed implementation commitment.
+
+        This patch implements the spec change, making `X.prototype.toString()` return "[object X]"
+        instead of "[object XPrototype]", where X is WebIDL interface. This behavior is proven to
+        be web compatible (shipping in Chrome since Q2 2016) and matches class strings of iterator
+        prototype objects [2] introduced in r253855.
+
+        We define @@toStringTag for all WebAssembly interfaces but Error subclasses since they
+        are not defined using WebIDL [3].
+
+        This change also introduces JSC_TO_STRING_TAG_WITHOUT_TRANSITION() macro that sets up
+        @@toStringTag using ClassInfo to avoid extra strings creation, ensuring `className` equality
+        between prototype and instance classes (fixing a few discrepancies), as well as correct
+        descriptors. It also ensures using faster jsNontrivialString() and relieves from putting
+        more code into CodeGeneratorJS.pm.
+
+        [1]: https://github.com/heycam/webidl/pull/357
+        [2]: https://heycam.github.io/webidl/#es-iterator-prototype-object
+        [3]: https://webassembly.github.io/spec/js-api/#error-objects
+
+        Tests: imported/w3c/web-platform-tests/wasm/jsapi/instance/toString.any.js
+               imported/w3c/web-platform-tests/wasm/jsapi/memory/toString.any.js
+               imported/w3c/web-platform-tests/wasm/jsapi/module/toString.any.js
+               imported/w3c/web-platform-tests/wasm/jsapi/table/toString.any.js
+
+        * runtime/ArrayIteratorPrototype.cpp:
+        (JSC::ArrayIteratorPrototype::finishCreation):
+        * runtime/AsyncFunctionPrototype.cpp:
+        (JSC::AsyncFunctionPrototype::finishCreation):
+        * runtime/AsyncGeneratorFunctionPrototype.cpp:
+        (JSC::AsyncGeneratorFunctionPrototype::finishCreation):
+        * runtime/AsyncGeneratorPrototype.cpp:
+        (JSC::AsyncGeneratorPrototype::finishCreation):
+        * runtime/BigIntPrototype.cpp:
+        (JSC::BigIntPrototype::finishCreation):
+        * runtime/GeneratorFunctionPrototype.cpp:
+        (JSC::GeneratorFunctionPrototype::finishCreation):
+        * runtime/GeneratorPrototype.cpp:
+        (JSC::GeneratorPrototype::finishCreation):
+        * runtime/IntlCollatorPrototype.cpp:
+        (JSC::IntlCollatorPrototype::finishCreation):
+        * runtime/IntlDateTimeFormatPrototype.cpp:
+        (JSC::IntlDateTimeFormatPrototype::finishCreation):
+        * runtime/IntlNumberFormatPrototype.cpp:
+        (JSC::IntlNumberFormatPrototype::finishCreation):
+        * runtime/IntlPluralRulesPrototype.cpp:
+        (JSC::IntlPluralRulesPrototype::finishCreation):
+        * runtime/IntlRelativeTimeFormatPrototype.cpp:
+        (JSC::IntlRelativeTimeFormatPrototype::finishCreation):
+        * runtime/JSArrayBufferPrototype.cpp:
+        (JSC::JSArrayBufferPrototype::finishCreation):
+        * runtime/JSDataViewPrototype.cpp:
+        (JSC::JSDataViewPrototype::finishCreation):
+        * runtime/JSONObject.cpp:
+        (JSC::JSONObject::finishCreation):
+        * runtime/JSObject.h:
+        * runtime/JSPromisePrototype.cpp:
+        (JSC::JSPromisePrototype::finishCreation):
+        * runtime/MapIteratorPrototype.cpp:
+        (JSC::MapIteratorPrototype::finishCreation):
+        * runtime/MapPrototype.cpp:
+        (JSC::MapPrototype::finishCreation):
+        * runtime/MathObject.cpp:
+        (JSC::MathObject::finishCreation):
+        * runtime/RegExpStringIteratorPrototype.cpp:
+        (JSC::RegExpStringIteratorPrototype::finishCreation):
+        * runtime/SetIteratorPrototype.cpp:
+        (JSC::SetIteratorPrototype::finishCreation):
+        * runtime/SetPrototype.cpp:
+        (JSC::SetPrototype::finishCreation):
+        * runtime/StringIteratorPrototype.cpp:
+        (JSC::StringIteratorPrototype::finishCreation):
+        * runtime/SymbolPrototype.cpp:
+        (JSC::SymbolPrototype::finishCreation):
+        * runtime/WeakMapPrototype.cpp:
+        (JSC::WeakMapPrototype::finishCreation):
+        * runtime/WeakObjectRefPrototype.cpp:
+        (JSC::WeakObjectRefPrototype::finishCreation):
+        * runtime/WeakSetPrototype.cpp:
+        (JSC::WeakSetPrototype::finishCreation):
+        * wasm/js/WebAssemblyInstancePrototype.cpp:
+        (JSC::WebAssemblyInstancePrototype::finishCreation):
+        * wasm/js/WebAssemblyMemoryPrototype.cpp:
+        (JSC::WebAssemblyMemoryPrototype::finishCreation):
+        * wasm/js/WebAssemblyModulePrototype.cpp:
+        (JSC::WebAssemblyModulePrototype::finishCreation):
+        * wasm/js/WebAssemblyTablePrototype.cpp:
+        (JSC::WebAssemblyTablePrototype::finishCreation):
+
 2020-05-01  Saam Barati  <sbarati@apple.com>
 
         We can't cast toLength result to unsigned
index 9ca5204..229e506 100644 (file)
@@ -43,8 +43,8 @@ void ArrayIteratorPrototype::finishCreation(VM& vm, JSGlobalObject* globalObject
 {
     Base::finishCreation(vm);
     ASSERT(inherits(vm, info()));
-    putDirectWithoutTransition(vm, vm.propertyNames->toStringTagSymbol, jsNontrivialString(vm, "Array Iterator"_s), PropertyAttribute::DontEnum | PropertyAttribute::ReadOnly);
     JSC_BUILTIN_FUNCTION_WITHOUT_TRANSITION(vm.propertyNames->next, arrayIteratorPrototypeNextCodeGenerator, static_cast<unsigned>(PropertyAttribute::DontEnum));
+    JSC_TO_STRING_TAG_WITHOUT_TRANSITION();
 }
 
 } // namespace JSC
index 6142b5a..e15ff5c 100644 (file)
@@ -50,7 +50,7 @@ void AsyncFunctionPrototype::finishCreation(VM& vm)
     Base::finishCreation(vm);
     ASSERT(inherits(vm, info()));
     putDirectWithoutTransition(vm, vm.propertyNames->length, jsNumber(0), PropertyAttribute::DontDelete | PropertyAttribute::ReadOnly | PropertyAttribute::DontEnum);
-    putDirectWithoutTransition(vm, vm.propertyNames->toStringTagSymbol, jsNontrivialString(vm, "AsyncFunction"_s), PropertyAttribute::DontEnum | PropertyAttribute::ReadOnly);
+    JSC_TO_STRING_TAG_WITHOUT_TRANSITION();
 }
 
 } // namespace JSC
index a2820ee..8253a3b 100644 (file)
@@ -38,7 +38,7 @@
 
 namespace JSC {
 
-const ClassInfo AsyncGeneratorFunctionPrototype::s_info = { "AsyncGenerator", &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(AsyncGeneratorFunctionPrototype) };
+const ClassInfo AsyncGeneratorFunctionPrototype::s_info = { "AsyncGeneratorFunction", &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(AsyncGeneratorFunctionPrototype) };
 
 AsyncGeneratorFunctionPrototype::AsyncGeneratorFunctionPrototype(VM& vm, Structure* structure)
     : JSC::JSNonFinalObject(vm, structure)
@@ -50,7 +50,7 @@ void AsyncGeneratorFunctionPrototype::finishCreation(VM& vm)
     Base::finishCreation(vm);
     ASSERT(inherits(vm, info()));
     putDirectWithoutTransition(vm, vm.propertyNames->length, jsNumber(0), PropertyAttribute::DontDelete | PropertyAttribute::ReadOnly | PropertyAttribute::DontEnum);
-    putDirectWithoutTransition(vm, vm.propertyNames->toStringTagSymbol, jsNontrivialString(vm, "AsyncGeneratorFunction"_s), PropertyAttribute::DontEnum | PropertyAttribute::ReadOnly);
+    JSC_TO_STRING_TAG_WITHOUT_TRANSITION();
 }
 
 } // namespace JSC
index a0101d3..60128da 100644 (file)
@@ -49,7 +49,7 @@ void AsyncGeneratorPrototype::finishCreation(VM& vm)
 {
     Base::finishCreation(vm);
     ASSERT(inherits(vm, info()));
-    putDirectWithoutTransition(vm, vm.propertyNames->toStringTagSymbol, jsNontrivialString(vm, "AsyncGenerator"_s), PropertyAttribute::DontEnum | PropertyAttribute::ReadOnly);
+    JSC_TO_STRING_TAG_WITHOUT_TRANSITION();
 }
 
 } // namespace JSC
index 9a14f66..7b0b8a3 100644 (file)
@@ -74,7 +74,7 @@ void BigIntPrototype::finishCreation(VM& vm, JSGlobalObject*)
 {
     Base::finishCreation(vm);
     ASSERT(inherits(vm, info()));
-    putDirectWithoutTransition(vm, vm.propertyNames->toStringTagSymbol, jsNontrivialString(vm, "BigInt"_s), PropertyAttribute::DontEnum | PropertyAttribute::ReadOnly);
+    JSC_TO_STRING_TAG_WITHOUT_TRANSITION();
 }
 
 // ------------------------------ Functions ---------------------------
index e40d850..34d2b2b 100644 (file)
@@ -52,7 +52,7 @@ void GeneratorFunctionPrototype::finishCreation(VM& vm)
     Base::finishCreation(vm);
     ASSERT(inherits(vm, info()));
     putDirectWithoutTransition(vm, vm.propertyNames->length, jsNumber(0), PropertyAttribute::ReadOnly | PropertyAttribute::DontEnum);
-    putDirectWithoutTransition(vm, vm.propertyNames->toStringTagSymbol, jsNontrivialString(vm, "GeneratorFunction"_s), PropertyAttribute::DontEnum | PropertyAttribute::ReadOnly);
+    JSC_TO_STRING_TAG_WITHOUT_TRANSITION();
 }
 
 } // namespace JSC
index 827f638..593ac44 100644 (file)
@@ -49,7 +49,7 @@ void GeneratorPrototype::finishCreation(VM& vm)
 {
     Base::finishCreation(vm);
     ASSERT(inherits(vm, info()));
-    putDirectWithoutTransition(vm, vm.propertyNames->toStringTagSymbol, jsNontrivialString(vm, "Generator"_s), PropertyAttribute::DontEnum | PropertyAttribute::ReadOnly);
+    JSC_TO_STRING_TAG_WITHOUT_TRANSITION();
 }
 
 } // namespace JSC
index ead8437..ca5753a 100644 (file)
@@ -72,8 +72,8 @@ IntlCollatorPrototype::IntlCollatorPrototype(VM& vm, Structure* structure)
 void IntlCollatorPrototype::finishCreation(VM& vm)
 {
     Base::finishCreation(vm);
-
-    putDirectWithoutTransition(vm, vm.propertyNames->toStringTagSymbol, jsNontrivialString(vm, "Object"_s), PropertyAttribute::DontEnum | PropertyAttribute::ReadOnly);
+    ASSERT(inherits(vm, info()));
+    JSC_TO_STRING_TAG_WITHOUT_TRANSITION();
 }
 
 static EncodedJSValue JSC_HOST_CALL IntlCollatorFuncCompare(JSGlobalObject* globalObject, CallFrame* callFrame)
index 4a522dc..1f2f9e3 100644 (file)
@@ -79,7 +79,8 @@ IntlDateTimeFormatPrototype::IntlDateTimeFormatPrototype(VM& vm, Structure* stru
 void IntlDateTimeFormatPrototype::finishCreation(VM& vm)
 {
     Base::finishCreation(vm);
-    putDirectWithoutTransition(vm, vm.propertyNames->toStringTagSymbol, jsNontrivialString(vm, "Object"_s), PropertyAttribute::DontEnum | PropertyAttribute::ReadOnly);
+    ASSERT(inherits(vm, info()));
+    JSC_TO_STRING_TAG_WITHOUT_TRANSITION();
 }
 
 static EncodedJSValue JSC_HOST_CALL IntlDateTimeFormatFuncFormatDateTime(JSGlobalObject* globalObject, CallFrame* callFrame)
index e9b5465..10de62b 100644 (file)
@@ -77,7 +77,8 @@ IntlNumberFormatPrototype::IntlNumberFormatPrototype(VM& vm, Structure* structur
 void IntlNumberFormatPrototype::finishCreation(VM& vm)
 {
     Base::finishCreation(vm);
-    putDirectWithoutTransition(vm, vm.propertyNames->toStringTagSymbol, jsNontrivialString(vm, "Object"_s), PropertyAttribute::DontEnum | PropertyAttribute::ReadOnly);
+    ASSERT(inherits(vm, info()));
+    JSC_TO_STRING_TAG_WITHOUT_TRANSITION();
 }
 
 // https://tc39.es/ecma402/#sec-number-format-functions
index 3c71cde..0b39aab 100644 (file)
@@ -72,8 +72,8 @@ IntlPluralRulesPrototype::IntlPluralRulesPrototype(VM& vm, Structure* structure)
 void IntlPluralRulesPrototype::finishCreation(VM& vm)
 {
     Base::finishCreation(vm);
-
-    putDirectWithoutTransition(vm, vm.propertyNames->toStringTagSymbol, jsNontrivialString(vm, "Object"_s), PropertyAttribute::DontEnum | PropertyAttribute::ReadOnly);
+    ASSERT(inherits(vm, info()));
+    JSC_TO_STRING_TAG_WITHOUT_TRANSITION();
 }
 
 EncodedJSValue JSC_HOST_CALL IntlPluralRulesPrototypeFuncSelect(JSGlobalObject* globalObject, CallFrame* callFrame)
index b4a4d66..f44bea6 100644 (file)
@@ -43,7 +43,7 @@ static EncodedJSValue JSC_HOST_CALL IntlRelativeTimeFormatPrototypeFuncResolvedO
 
 namespace JSC {
 
-const ClassInfo IntlRelativeTimeFormatPrototype::s_info = { "Object", &Base::s_info, &relativeTimeFormatPrototypeTable, nullptr, CREATE_METHOD_TABLE(IntlRelativeTimeFormatPrototype) };
+const ClassInfo IntlRelativeTimeFormatPrototype::s_info = { "Intl.RelativeTimeFormat", &Base::s_info, &relativeTimeFormatPrototypeTable, nullptr, CREATE_METHOD_TABLE(IntlRelativeTimeFormatPrototype) };
 
 /* Source for IntlRelativeTimeFormatPrototype.lut.h
 @begin relativeTimeFormatPrototypeTable
@@ -73,7 +73,8 @@ IntlRelativeTimeFormatPrototype::IntlRelativeTimeFormatPrototype(VM& vm, Structu
 void IntlRelativeTimeFormatPrototype::finishCreation(VM& vm)
 {
     Base::finishCreation(vm);
-    putDirectWithoutTransition(vm, vm.propertyNames->toStringTagSymbol, jsNontrivialString(vm, "Intl.RelativeTimeFormat"_s), PropertyAttribute::DontEnum | PropertyAttribute::ReadOnly);
+    ASSERT(inherits(vm, info()));
+    JSC_TO_STRING_TAG_WITHOUT_TRANSITION();
 }
 
 // https://tc39.es/ecma402/#sec-Intl.RelativeTimeFormat.prototype.format
index b77d664..906f1cd 100644 (file)
@@ -102,7 +102,7 @@ static EncodedJSValue JSC_HOST_CALL sharedArrayBufferProtoGetterFuncByteLength(J
 }
 
 const ClassInfo JSArrayBufferPrototype::s_info = {
-    "ArrayBufferPrototype", &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSArrayBufferPrototype)
+    "ArrayBuffer", &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSArrayBufferPrototype)
 };
 
 JSArrayBufferPrototype::JSArrayBufferPrototype(VM& vm, Structure* structure)
@@ -115,7 +115,7 @@ void JSArrayBufferPrototype::finishCreation(VM& vm, JSGlobalObject* globalObject
     Base::finishCreation(vm);
     
     JSC_NATIVE_FUNCTION_WITHOUT_TRANSITION(vm.propertyNames->slice, arrayBufferProtoFuncSlice, static_cast<unsigned>(PropertyAttribute::DontEnum), 2);
-    putDirectWithoutTransition(vm, vm.propertyNames->toStringTagSymbol, jsString(vm, arrayBufferSharingModeName(sharingMode)), PropertyAttribute::DontEnum | PropertyAttribute::ReadOnly);
+    JSC_TO_STRING_TAG_WITHOUT_TRANSITION();
     if (sharingMode == ArrayBufferSharingMode::Default)
         JSC_NATIVE_GETTER_WITHOUT_TRANSITION(vm.propertyNames->byteLength, arrayBufferProtoGetterFuncByteLength, PropertyAttribute::DontEnum | PropertyAttribute::ReadOnly);
     else
index 73d81b0..bd5b576 100644 (file)
@@ -88,7 +88,7 @@ EncodedJSValue JSC_HOST_CALL dataViewProtoGetterByteOffset(JSGlobalObject*, Call
 namespace JSC {
 
 const ClassInfo JSDataViewPrototype::s_info = {
-    "DataViewPrototype", &Base::s_info, &dataViewTable, nullptr,
+    "DataView", &Base::s_info, &dataViewTable, nullptr,
     CREATE_METHOD_TABLE(JSDataViewPrototype)
 };
 
@@ -109,7 +109,8 @@ JSDataViewPrototype* JSDataViewPrototype::create(VM& vm, Structure* structure)
 void JSDataViewPrototype::finishCreation(JSC::VM& vm)
 {
     Base::finishCreation(vm);
-    putDirectWithoutTransition(vm, vm.propertyNames->toStringTagSymbol, jsNontrivialString(vm, "DataView"_s), PropertyAttribute::DontEnum | PropertyAttribute::ReadOnly);
+    ASSERT(inherits(vm, info()));
+    JSC_TO_STRING_TAG_WITHOUT_TRANSITION();
 }
 
 Structure* JSDataViewPrototype::createStructure(
index 33b9768..5ce5597 100644 (file)
@@ -64,8 +64,7 @@ void JSONObject::finishCreation(VM& vm)
 {
     Base::finishCreation(vm);
     ASSERT(inherits(vm, info()));
-
-    putDirectWithoutTransition(vm, vm.propertyNames->toStringTagSymbol, jsNontrivialString(vm, "JSON"_s), PropertyAttribute::DontEnum | PropertyAttribute::ReadOnly);
+    JSC_TO_STRING_TAG_WITHOUT_TRANSITION();
 }
 
 // PropertyNameForFunctionCall objects must be on the stack, since the JSValue that they create is not marked.
index 49a9b0c..4c6f995 100644 (file)
@@ -1639,6 +1639,10 @@ JS_EXPORT_PRIVATE NEVER_INLINE bool ordinarySetSlow(JSGlobalObject*, JSObject*,
     putDirectBuiltinFunctionWithoutTransition(\
         vm, globalObject, makeIdentifier(vm, (jsName)), (generatorName)(vm), (attributes))
 
+#define JSC_TO_STRING_TAG_WITHOUT_TRANSITION() \
+    putDirectWithoutTransition(vm, vm.propertyNames->toStringTagSymbol, \
+        jsNontrivialString(vm, info()->className), PropertyAttribute::DontEnum | PropertyAttribute::ReadOnly)
+
 // Helper for defining native getters on properties.
 #define JSC_NATIVE_INTRINSIC_GETTER(jsName, cppName, attributes, intrinsic)  \
     putDirectNativeIntrinsicGetter(\
index dbc231e..dfeda40 100644 (file)
@@ -45,7 +45,7 @@ STATIC_ASSERT_IS_TRIVIALLY_DESTRUCTIBLE(JSPromisePrototype);
 
 namespace JSC {
 
-const ClassInfo JSPromisePrototype::s_info = { "PromisePrototype", &Base::s_info, &promisePrototypeTable, nullptr, CREATE_METHOD_TABLE(JSPromisePrototype) };
+const ClassInfo JSPromisePrototype::s_info = { "Promise", &Base::s_info, &promisePrototypeTable, nullptr, CREATE_METHOD_TABLE(JSPromisePrototype) };
 
 /* Source for JSPromisePrototype.lut.h
 @begin promisePrototypeTable
@@ -76,7 +76,7 @@ void JSPromisePrototype::finishCreation(VM& vm, JSGlobalObject* globalObject)
 {
     Base::finishCreation(vm);
     putDirectWithoutTransition(vm, vm.propertyNames->builtinNames().thenPublicName(), globalObject->promiseProtoThenFunction(), static_cast<unsigned>(PropertyAttribute::DontEnum));
-    putDirectWithoutTransition(vm, vm.propertyNames->toStringTagSymbol, jsNontrivialString(vm, "Promise"_s), PropertyAttribute::DontEnum | PropertyAttribute::ReadOnly);
+    JSC_TO_STRING_TAG_WITHOUT_TRANSITION();
 }
 
 void JSPromisePrototype::addOwnInternalSlots(VM& vm, JSGlobalObject* globalObject)
index 488ba27..6ac587b 100644 (file)
@@ -38,8 +38,8 @@ void MapIteratorPrototype::finishCreation(VM& vm, JSGlobalObject* globalObject)
     Base::finishCreation(vm);
     ASSERT(inherits(vm, info()));
 
-    putDirectWithoutTransition(vm, vm.propertyNames->toStringTagSymbol, jsNontrivialString(vm, "Map Iterator"_s), PropertyAttribute::DontEnum | PropertyAttribute::ReadOnly);
     JSC_BUILTIN_FUNCTION_WITHOUT_TRANSITION(vm.propertyNames->next, mapIteratorPrototypeNextCodeGenerator, static_cast<unsigned>(PropertyAttribute::DontEnum));
+    JSC_TO_STRING_TAG_WITHOUT_TRANSITION();
 }
 
 }
index 095fbd6..af74c6d 100644 (file)
@@ -77,7 +77,7 @@ void MapPrototype::finishCreation(VM& vm, JSGlobalObject* globalObject)
     JSFunction* entries = JSFunction::create(vm, globalObject, 0, vm.propertyNames->builtinNames().entriesPublicName().string(), mapProtoFuncEntries, JSMapEntriesIntrinsic);
     putDirectWithoutTransition(vm, vm.propertyNames->builtinNames().entriesPublicName(), entries, static_cast<unsigned>(PropertyAttribute::DontEnum));
     putDirectWithoutTransition(vm, vm.propertyNames->iteratorSymbol, entries, static_cast<unsigned>(PropertyAttribute::DontEnum));
-    putDirectWithoutTransition(vm, vm.propertyNames->toStringTagSymbol, jsNontrivialString(vm, vm.propertyNames->Map.string()), PropertyAttribute::DontEnum | PropertyAttribute::ReadOnly);
+    JSC_TO_STRING_TAG_WITHOUT_TRANSITION();
 
     JSC_NATIVE_GETTER_WITHOUT_TRANSITION(vm.propertyNames->size, mapProtoFuncSize, PropertyAttribute::DontEnum | PropertyAttribute::Accessor);
 
index 9689e3f..f0e0418 100644 (file)
@@ -86,7 +86,7 @@ void MathObject::finishCreation(VM& vm, JSGlobalObject* globalObject)
     putDirectWithoutTransition(vm, Identifier::fromString(vm, "PI"), jsNumber(piDouble), PropertyAttribute::DontDelete | PropertyAttribute::DontEnum | PropertyAttribute::ReadOnly);
     putDirectWithoutTransition(vm, Identifier::fromString(vm, "SQRT1_2"), jsNumber(sqrt(0.5)), PropertyAttribute::DontDelete | PropertyAttribute::DontEnum | PropertyAttribute::ReadOnly);
     putDirectWithoutTransition(vm, Identifier::fromString(vm, "SQRT2"), jsNumber(sqrt(2.0)), PropertyAttribute::DontDelete | PropertyAttribute::DontEnum | PropertyAttribute::ReadOnly);
-    putDirectWithoutTransition(vm, vm.propertyNames->toStringTagSymbol, jsNontrivialString(vm, "Math"_s), PropertyAttribute::DontEnum | PropertyAttribute::ReadOnly);
+    JSC_TO_STRING_TAG_WITHOUT_TRANSITION();
 
     putDirectNativeFunctionWithoutTransition(vm, globalObject, Identifier::fromString(vm, "abs"), 1, mathProtoFuncAbs, AbsIntrinsic, static_cast<unsigned>(PropertyAttribute::DontEnum));
     putDirectNativeFunctionWithoutTransition(vm, globalObject, Identifier::fromString(vm, "acos"), 1, mathProtoFuncACos, ACosIntrinsic, static_cast<unsigned>(PropertyAttribute::DontEnum));
index 21ccace..24e686a 100644 (file)
@@ -44,8 +44,8 @@ void RegExpStringIteratorPrototype::finishCreation(VM& vm, JSGlobalObject* globa
 {
     Base::finishCreation(vm);
     ASSERT(inherits(vm, info()));
-    putDirectWithoutTransition(vm, vm.propertyNames->toStringTagSymbol, jsNontrivialString(vm, "RegExp String Iterator"_s), PropertyAttribute::DontEnum | PropertyAttribute::ReadOnly);
     JSC_BUILTIN_FUNCTION_WITHOUT_TRANSITION(vm.propertyNames->next, regExpStringIteratorPrototypeNextCodeGenerator, static_cast<unsigned>(PropertyAttribute::DontEnum));
+    JSC_TO_STRING_TAG_WITHOUT_TRANSITION();
 }
 
 } // namespace JSC
index dae1513..3fab6e3 100644 (file)
@@ -38,8 +38,8 @@ void SetIteratorPrototype::finishCreation(VM& vm, JSGlobalObject* globalObject)
     Base::finishCreation(vm);
     ASSERT(inherits(vm, info()));
 
-    JSC_BUILTIN_FUNCTION_WITHOUT_TRANSITION("next", setIteratorPrototypeNextCodeGenerator, static_cast<unsigned>(PropertyAttribute::DontEnum));
-    putDirectWithoutTransition(vm, vm.propertyNames->toStringTagSymbol, jsNontrivialString(vm, "Set Iterator"_s), PropertyAttribute::DontEnum | PropertyAttribute::ReadOnly);
+    JSC_BUILTIN_FUNCTION_WITHOUT_TRANSITION(vm.propertyNames->next, setIteratorPrototypeNextCodeGenerator, static_cast<unsigned>(PropertyAttribute::DontEnum));
+    JSC_TO_STRING_TAG_WITHOUT_TRANSITION();
 }
 
 }
index 00bfabe..00df909 100644 (file)
@@ -73,7 +73,7 @@ void SetPrototype::finishCreation(VM& vm, JSGlobalObject* globalObject)
     putDirectWithoutTransition(vm, vm.propertyNames->builtinNames().valuesPublicName(), values, static_cast<unsigned>(PropertyAttribute::DontEnum));
     putDirectWithoutTransition(vm, vm.propertyNames->builtinNames().keysPublicName(), values, static_cast<unsigned>(PropertyAttribute::DontEnum));
     putDirectWithoutTransition(vm, vm.propertyNames->iteratorSymbol, values, static_cast<unsigned>(PropertyAttribute::DontEnum));
-    putDirectWithoutTransition(vm, vm.propertyNames->toStringTagSymbol, jsNontrivialString(vm, vm.propertyNames->builtinNames().SetPublicName().string()), PropertyAttribute::DontEnum | PropertyAttribute::ReadOnly);
+    JSC_TO_STRING_TAG_WITHOUT_TRANSITION();
 
     JSC_NATIVE_GETTER_WITHOUT_TRANSITION(vm.propertyNames->size, setProtoFuncSize, PropertyAttribute::DontEnum | PropertyAttribute::Accessor);
 
index cf26edb..592ae60 100644 (file)
@@ -41,8 +41,8 @@ void StringIteratorPrototype::finishCreation(VM& vm, JSGlobalObject* globalObjec
 {
     Base::finishCreation(vm);
     ASSERT(inherits(vm, info()));
-    putDirectWithoutTransition(vm, vm.propertyNames->toStringTagSymbol, jsNontrivialString(vm, "String Iterator"_s), PropertyAttribute::DontEnum | PropertyAttribute::ReadOnly);
     JSC_BUILTIN_FUNCTION_WITHOUT_TRANSITION(vm.propertyNames->next, stringIteratorPrototypeNextCodeGenerator, static_cast<unsigned>(PropertyAttribute::DontEnum));
+    JSC_TO_STRING_TAG_WITHOUT_TRANSITION();
 }
 
 } // namespace JSC
index e1806c2..ae10648 100644 (file)
@@ -63,11 +63,11 @@ SymbolPrototype::SymbolPrototype(VM& vm, Structure* structure)
 void SymbolPrototype::finishCreation(VM& vm, JSGlobalObject* globalObject)
 {
     Base::finishCreation(vm);
-    putDirectWithoutTransition(vm, vm.propertyNames->toStringTagSymbol, jsNontrivialString(vm, "Symbol"_s), PropertyAttribute::DontEnum | PropertyAttribute::ReadOnly);
     ASSERT(inherits(vm, info()));
 
     JSFunction* toPrimitiveFunction = JSFunction::create(vm, globalObject, 1, "[Symbol.toPrimitive]"_s, symbolProtoFuncValueOf, NoIntrinsic);
     putDirectWithoutTransition(vm, vm.propertyNames->toPrimitiveSymbol, toPrimitiveFunction, PropertyAttribute::DontEnum | PropertyAttribute::ReadOnly);
+    JSC_TO_STRING_TAG_WITHOUT_TRANSITION();
 }
 
 // ------------------------------ Functions ---------------------------
index cbba223..568873f 100644 (file)
@@ -48,7 +48,7 @@ void WeakMapPrototype::finishCreation(VM& vm, JSGlobalObject* globalObject)
     JSC_NATIVE_INTRINSIC_FUNCTION_WITHOUT_TRANSITION(vm.propertyNames->has, protoFuncWeakMapHas, static_cast<unsigned>(PropertyAttribute::DontEnum), 1, JSWeakMapHasIntrinsic);
     JSC_NATIVE_INTRINSIC_FUNCTION_WITHOUT_TRANSITION(vm.propertyNames->set, protoFuncWeakMapSet, static_cast<unsigned>(PropertyAttribute::DontEnum), 2, JSWeakMapSetIntrinsic);
 
-    putDirectWithoutTransition(vm, vm.propertyNames->toStringTagSymbol, jsNontrivialString(vm, "WeakMap"_s), PropertyAttribute::DontEnum | PropertyAttribute::ReadOnly);
+    JSC_TO_STRING_TAG_WITHOUT_TRANSITION();
 }
 
 ALWAYS_INLINE static JSWeakMap* getWeakMap(JSGlobalObject* globalObject, JSValue value)
index a23b991..7e500f5 100644 (file)
@@ -44,7 +44,7 @@ void WeakObjectRefPrototype::finishCreation(VM& vm, JSGlobalObject* globalObject
     // FIXME: It wouldn't be hard to make this an intrinsic.
     JSC_NATIVE_FUNCTION_WITHOUT_TRANSITION(vm.propertyNames->deref, protoFuncWeakRefDeref, static_cast<unsigned>(PropertyAttribute::DontEnum), 0);
 
-    putDirectWithoutTransition(vm, vm.propertyNames->toStringTagSymbol, jsNontrivialString(vm, "WeakRef"_s), PropertyAttribute::DontEnum | PropertyAttribute::ReadOnly);
+    JSC_TO_STRING_TAG_WITHOUT_TRANSITION();
 }
 
 ALWAYS_INLINE static JSWeakObjectRef* getWeakRef(JSGlobalObject* globalObject, JSValue value)
index 2c1fd9d..a3d2460 100644 (file)
@@ -46,7 +46,7 @@ void WeakSetPrototype::finishCreation(VM& vm, JSGlobalObject* globalObject)
     JSC_NATIVE_INTRINSIC_FUNCTION_WITHOUT_TRANSITION(vm.propertyNames->has, protoFuncWeakSetHas, static_cast<unsigned>(PropertyAttribute::DontEnum), 1, JSWeakSetHasIntrinsic);
     JSC_NATIVE_INTRINSIC_FUNCTION_WITHOUT_TRANSITION(vm.propertyNames->add, protoFuncWeakSetAdd, static_cast<unsigned>(PropertyAttribute::DontEnum), 1, JSWeakSetAddIntrinsic);
 
-    putDirectWithoutTransition(vm, vm.propertyNames->toStringTagSymbol, jsNontrivialString(vm, "WeakSet"_s), PropertyAttribute::DontEnum | PropertyAttribute::ReadOnly);
+    JSC_TO_STRING_TAG_WITHOUT_TRANSITION();
 }
 
 ALWAYS_INLINE static JSWeakSet* getWeakSet(JSGlobalObject* globalObject, JSValue value)
index d8eef38..afc8daa 100644 (file)
@@ -86,6 +86,8 @@ Structure* WebAssemblyInstancePrototype::createStructure(VM& vm, JSGlobalObject*
 void WebAssemblyInstancePrototype::finishCreation(VM& vm)
 {
     Base::finishCreation(vm);
+    ASSERT(inherits(vm, info()));
+    JSC_TO_STRING_TAG_WITHOUT_TRANSITION();
 }
 
 WebAssemblyInstancePrototype::WebAssemblyInstancePrototype(VM& vm, Structure* structure)
index d954e87..1b49d49 100644 (file)
@@ -109,6 +109,7 @@ void WebAssemblyMemoryPrototype::finishCreation(VM& vm)
 {
     Base::finishCreation(vm);
     ASSERT(inherits(vm, info()));
+    JSC_TO_STRING_TAG_WITHOUT_TRANSITION();
 }
 
 WebAssemblyMemoryPrototype::WebAssemblyMemoryPrototype(VM& vm, Structure* structure)
index 94d6158..35068ba 100644 (file)
@@ -56,6 +56,8 @@ Structure* WebAssemblyModulePrototype::createStructure(VM& vm, JSGlobalObject* g
 void WebAssemblyModulePrototype::finishCreation(VM& vm)
 {
     Base::finishCreation(vm);
+    ASSERT(inherits(vm, info()));
+    JSC_TO_STRING_TAG_WITHOUT_TRANSITION();
 }
 
 WebAssemblyModulePrototype::WebAssemblyModulePrototype(VM& vm, Structure* structure)
index 9789186..93d44b8 100644 (file)
@@ -166,6 +166,7 @@ void WebAssemblyTablePrototype::finishCreation(VM& vm)
 {
     Base::finishCreation(vm);
     ASSERT(inherits(vm, info()));
+    JSC_TO_STRING_TAG_WITHOUT_TRANSITION();
 }
 
 WebAssemblyTablePrototype::WebAssemblyTablePrototype(VM& vm, Structure* structure)
index 1be9300..51b960a 100644 (file)
@@ -1,3 +1,39 @@
+2020-05-01  Alexey Shvayka  <shvaikalesh@gmail.com>
+
+        [WebIDL] Interface prototype objects should define @@toStringTag
+        https://bugs.webkit.org/show_bug.cgi?id=211020
+
+        Reviewed by Darin Adler.
+
+        WebIDL spec was recently updated [1] to define @@toStringTag on interface prototype objects.
+        This change aligns WebIDL with ECMA-262 built-ins and Blink's behavior. Gecko have also
+        expressed implementation commitment.
+
+        This patch implements the spec change, making `X.prototype.toString()` return "[object X]"
+        instead of "[object XPrototype]", where X is WebIDL interface. This behavior is proven to
+        be web compatible (shipping in Chrome since Q2 2016) and matches class strings of iterator
+        prototype objects [2] introduced in r253855.
+
+        [1]: https://github.com/heycam/webidl/pull/357
+        [2]: https://heycam.github.io/webidl/#es-iterator-prototype-object
+
+        Tests: fast/dom/prototype-chain.html
+               fast/dom/wrapper-classes.html
+               fast/workers/DedicatedWorkerGlobalScope-prototype-chain.html
+               imported/w3c/web-platform-tests/WebIDL/ecmascript-binding/class-string-interface.any.js
+               imported/w3c/web-platform-tests/WebIDL/ecmascript-binding/class-string-named-properties-object.window.js
+
+        * bindings/js/JSDOMIterator.h:
+        (WebCore::IteratorTraits>::finishCreation):
+        * bindings/js/JSDOMWindowProperties.cpp:
+        (WebCore::JSDOMWindowProperties::finishCreation):
+        * bindings/js/JSDOMWindowProperties.h:
+        * bindings/scripts/CodeGeneratorJS.pm:
+        (GenerateImplementation):
+        (GeneratePrototypeDeclaration):
+        (GenerateConstructorHelperMethods):
+        * bindings/scripts/test/*: Updated.
+
 2020-05-01  Saam Barati  <sbarati@apple.com>
 
         We can't cast toLength result to unsigned
index b0373a6..4dc8bbe 100644 (file)
@@ -262,8 +262,8 @@ void JSDOMIteratorPrototype<JSWrapper, IteratorTraits>::finishCreation(JSC::VM&
     Base::finishCreation(vm);
     ASSERT(inherits(vm, info()));
 
-    putDirectWithoutTransition(vm, vm.propertyNames->toStringTagSymbol, jsString(vm, info()->className), JSC::PropertyAttribute::DontEnum | JSC::PropertyAttribute::ReadOnly);
     JSC_NATIVE_INTRINSIC_FUNCTION_WITHOUT_TRANSITION(vm.propertyNames->next, next, 0, 0, JSC::NoIntrinsic);
+    JSC_TO_STRING_TAG_WITHOUT_TRANSITION();
 }
 
 }
index c14d98c..56f8e13 100644 (file)
@@ -82,6 +82,13 @@ static bool jsDOMWindowPropertiesGetOwnPropertySlotNamedItemGetter(JSDOMWindowPr
     return false;
 }
 
+void JSDOMWindowProperties::finishCreation(VM& vm)
+{
+    Base::finishCreation(vm);
+    ASSERT(inherits(vm, info()));
+    JSC_TO_STRING_TAG_WITHOUT_TRANSITION();
+}
+
 bool JSDOMWindowProperties::getOwnPropertySlot(JSObject* object, JSGlobalObject* lexicalGlobalObject, PropertyName propertyName, PropertySlot& slot)
 {
     auto* thisObject = jsCast<JSDOMWindowProperties*>(object);
index 318c660..cb7aa97 100644 (file)
@@ -65,6 +65,7 @@ private:
     {
     }
 
+    void finishCreation(JSC::VM&);
     static JSC::IsoSubspace* subspaceForImpl(JSC::VM&);
 };
 
index 4daf948..2165c13 100644 (file)
@@ -4298,17 +4298,14 @@ sub GenerateImplementation
 
     $object->GenerateHashTable($className, $hashName, $hashSize, \@hashKeys, \@hashSpecials, \@hashValue1, \@hashValue2, \%conditionals, \%readWriteConditionals, $justGenerateValueArray);
 
-    if ($justGenerateValueArray) {
-        push(@implContent, "const ClassInfo ${className}Prototype::s_info = { \"${visibleInterfaceName}Prototype\", &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(${className}Prototype) };\n\n");
-    } else {
-        push(@implContent, "const ClassInfo ${className}Prototype::s_info = { \"${visibleInterfaceName}Prototype\", &Base::s_info, &${className}PrototypeTable, nullptr, CREATE_METHOD_TABLE(${className}Prototype) };\n\n");
-    }
+    my $hashTable = $justGenerateValueArray ? "nullptr" : "&${className}PrototypeTable";
+    push(@implContent, "const ClassInfo ${className}Prototype::s_info = { \"${visibleInterfaceName}\", &Base::s_info, ${hashTable}, nullptr, CREATE_METHOD_TABLE(${className}Prototype) };\n\n");
 
-    if (PrototypeHasStaticPropertyTable($interface) && !IsGlobalInterface($interface)) {
+    if (PrototypeHasStaticPropertyTable($interface) || IsGlobalInterface($interface)) {
         push(@implContent, "void ${className}Prototype::finishCreation(VM& vm)\n");
         push(@implContent, "{\n");
         push(@implContent, "    Base::finishCreation(vm);\n");
-        push(@implContent, "    reifyStaticProperties(vm, ${className}::info(), ${className}PrototypeTableValues, *this);\n");
+        push(@implContent, "    reifyStaticProperties(vm, ${className}::info(), ${className}PrototypeTableValues, *this);\n") if !IsGlobalInterface($interface);
 
         my @runtimeEnabledProperties = @runtimeEnabledOperations;
         push(@runtimeEnabledProperties, @runtimeEnabledAttributes);
@@ -4378,6 +4375,8 @@ sub GenerateImplementation
 
         addUnscopableProperties($interface);
 
+        assert("JSC_TO_STRING_TAG_WITHOUT_TRANSITION() requires strings two or more characters long") if length($visibleInterfaceName) < 2;
+        push(@implContent, "    JSC_TO_STRING_TAG_WITHOUT_TRANSITION();\n");
         push(@implContent, "}\n\n");
     }
 
@@ -7340,13 +7339,11 @@ sub GeneratePrototypeDeclaration
     push(@$outputArray, "    {\n");
     push(@$outputArray, "    }\n");
 
-    if (PrototypeHasStaticPropertyTable($interface)) {
-        if (IsGlobalInterface($interface)) {
-            $structureFlags{"JSC::HasStaticPropertyTable"} = 1;
-        } else {
-            push(@$outputArray, "\n");
-            push(@$outputArray, "    void finishCreation(JSC::VM&);\n");
-        }
+    if (PrototypeHasStaticPropertyTable($interface) || IsGlobalInterface($interface)) {
+        $structureFlags{"JSC::HasStaticPropertyTable"} = 1 if IsGlobalInterface($interface);
+
+        push(@$outputArray, "\n");
+        push(@$outputArray, "    void finishCreation(JSC::VM&);\n");
     }
 
     # FIXME: Should this override putByIndex as well?
@@ -7611,7 +7608,8 @@ sub GenerateConstructorHelperMethods
         push(@$outputArray, "    putDirect(vm, vm.propertyNames->prototype, ${className}::prototype(vm, globalObject), JSC::PropertyAttribute::DontDelete | JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);\n");
     }
 
-    push(@$outputArray, "    putDirect(vm, vm.propertyNames->name, jsNontrivialString(vm, String(\"$visibleInterfaceName\"_s)), JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);\n");
+    assert("jsNontrivialString() requires strings two or more characters long") if length($visibleInterfaceName) < 2;
+    push(@$outputArray, "    putDirect(vm, vm.propertyNames->name, jsNontrivialString(vm, \"$visibleInterfaceName\"_s), JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);\n");
 
     if ($interface->extendedAttributes->{ConstructorEnabledBySetting}) {
         my $runtimeEnableConditionalString = GenerateRuntimeEnableConditionalString($interface, $interface, "&globalObject");
index be3d677..fdf60b4 100644 (file)
@@ -90,7 +90,7 @@ template<> JSValue JSInterfaceNameConstructor::prototypeForStructure(JSC::VM& vm
 template<> void JSInterfaceNameConstructor::initializeProperties(VM& vm, JSDOMGlobalObject& globalObject)
 {
     putDirect(vm, vm.propertyNames->prototype, JSInterfaceName::prototype(vm, globalObject), JSC::PropertyAttribute::DontDelete | JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
-    putDirect(vm, vm.propertyNames->name, jsNontrivialString(vm, String("InterfaceName"_s)), JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
+    putDirect(vm, vm.propertyNames->name, jsNontrivialString(vm, "InterfaceName"_s), JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
     putDirect(vm, vm.propertyNames->length, jsNumber(0), JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
 }
 
@@ -103,12 +103,13 @@ static const HashTableValue JSInterfaceNamePrototypeTableValues[] =
     { "constructor", static_cast<unsigned>(JSC::PropertyAttribute::DontEnum), NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsInterfaceNameConstructor), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSInterfaceNameConstructor) } },
 };
 
-const ClassInfo JSInterfaceNamePrototype::s_info = { "InterfaceNamePrototype", &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSInterfaceNamePrototype) };
+const ClassInfo JSInterfaceNamePrototype::s_info = { "InterfaceName", &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSInterfaceNamePrototype) };
 
 void JSInterfaceNamePrototype::finishCreation(VM& vm)
 {
     Base::finishCreation(vm);
     reifyStaticProperties(vm, JSInterfaceName::info(), JSInterfaceNamePrototypeTableValues, *this);
+    JSC_TO_STRING_TAG_WITHOUT_TRANSITION();
 }
 
 const ClassInfo JSInterfaceName::s_info = { "InterfaceName", &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSInterfaceName) };
index cc9447d..5083844 100644 (file)
@@ -109,7 +109,7 @@ template<> JSValue JSMapLikeConstructor::prototypeForStructure(JSC::VM& vm, cons
 template<> void JSMapLikeConstructor::initializeProperties(VM& vm, JSDOMGlobalObject& globalObject)
 {
     putDirect(vm, vm.propertyNames->prototype, JSMapLike::prototype(vm, globalObject), JSC::PropertyAttribute::DontDelete | JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
-    putDirect(vm, vm.propertyNames->name, jsNontrivialString(vm, String("MapLike"_s)), JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
+    putDirect(vm, vm.propertyNames->name, jsNontrivialString(vm, "MapLike"_s), JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
     putDirect(vm, vm.propertyNames->length, jsNumber(0), JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
 }
 
@@ -132,13 +132,14 @@ static const HashTableValue JSMapLikePrototypeTableValues[] =
     { "delete", static_cast<unsigned>(JSC::PropertyAttribute::DontEnum | JSC::PropertyAttribute::Function), NoIntrinsic, { (intptr_t)static_cast<RawNativeFunction>(jsMapLikePrototypeFunctionDelete), (intptr_t) (1) } },
 };
 
-const ClassInfo JSMapLikePrototype::s_info = { "MapLikePrototype", &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSMapLikePrototype) };
+const ClassInfo JSMapLikePrototype::s_info = { "MapLike", &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSMapLikePrototype) };
 
 void JSMapLikePrototype::finishCreation(VM& vm)
 {
     Base::finishCreation(vm);
     reifyStaticProperties(vm, JSMapLike::info(), JSMapLikePrototypeTableValues, *this);
     putDirect(vm, vm.propertyNames->iteratorSymbol, getDirect(vm, vm.propertyNames->builtinNames().entriesPublicName()), static_cast<unsigned>(JSC::PropertyAttribute::DontEnum));
+    JSC_TO_STRING_TAG_WITHOUT_TRANSITION();
 }
 
 const ClassInfo JSMapLike::s_info = { "MapLike", &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSMapLike) };
index 5c5dfb6..93046ec 100644 (file)
@@ -106,7 +106,7 @@ template<> JSValue JSReadOnlyMapLikeConstructor::prototypeForStructure(JSC::VM&
 template<> void JSReadOnlyMapLikeConstructor::initializeProperties(VM& vm, JSDOMGlobalObject& globalObject)
 {
     putDirect(vm, vm.propertyNames->prototype, JSReadOnlyMapLike::prototype(vm, globalObject), JSC::PropertyAttribute::DontDelete | JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
-    putDirect(vm, vm.propertyNames->name, jsNontrivialString(vm, String("ReadOnlyMapLike"_s)), JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
+    putDirect(vm, vm.propertyNames->name, jsNontrivialString(vm, "ReadOnlyMapLike"_s), JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
     putDirect(vm, vm.propertyNames->length, jsNumber(0), JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
 }
 
@@ -126,13 +126,14 @@ static const HashTableValue JSReadOnlyMapLikePrototypeTableValues[] =
     { "forEach", static_cast<unsigned>(JSC::PropertyAttribute::Function), NoIntrinsic, { (intptr_t)static_cast<RawNativeFunction>(jsReadOnlyMapLikePrototypeFunctionForEach), (intptr_t) (1) } },
 };
 
-const ClassInfo JSReadOnlyMapLikePrototype::s_info = { "ReadOnlyMapLikePrototype", &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSReadOnlyMapLikePrototype) };
+const ClassInfo JSReadOnlyMapLikePrototype::s_info = { "ReadOnlyMapLike", &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSReadOnlyMapLikePrototype) };
 
 void JSReadOnlyMapLikePrototype::finishCreation(VM& vm)
 {
     Base::finishCreation(vm);
     reifyStaticProperties(vm, JSReadOnlyMapLike::info(), JSReadOnlyMapLikePrototypeTableValues, *this);
     putDirect(vm, vm.propertyNames->iteratorSymbol, getDirect(vm, vm.propertyNames->builtinNames().entriesPublicName()), static_cast<unsigned>(JSC::PropertyAttribute::DontEnum));
+    JSC_TO_STRING_TAG_WITHOUT_TRANSITION();
 }
 
 const ClassInfo JSReadOnlyMapLike::s_info = { "ReadOnlyMapLike", &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSReadOnlyMapLike) };
index 6be8fb4..af70fd2 100644 (file)
@@ -105,7 +105,7 @@ template<> JSValue JSReadOnlySetLikeConstructor::prototypeForStructure(JSC::VM&
 template<> void JSReadOnlySetLikeConstructor::initializeProperties(VM& vm, JSDOMGlobalObject& globalObject)
 {
     putDirect(vm, vm.propertyNames->prototype, JSReadOnlySetLike::prototype(vm, globalObject), JSC::PropertyAttribute::DontDelete | JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
-    putDirect(vm, vm.propertyNames->name, jsNontrivialString(vm, String("ReadOnlySetLike"_s)), JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
+    putDirect(vm, vm.propertyNames->name, jsNontrivialString(vm, "ReadOnlySetLike"_s), JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
     putDirect(vm, vm.propertyNames->length, jsNumber(0), JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
 }
 
@@ -124,13 +124,14 @@ static const HashTableValue JSReadOnlySetLikePrototypeTableValues[] =
     { "forEach", static_cast<unsigned>(JSC::PropertyAttribute::DontEnum | JSC::PropertyAttribute::Function), NoIntrinsic, { (intptr_t)static_cast<RawNativeFunction>(jsReadOnlySetLikePrototypeFunctionForEach), (intptr_t) (1) } },
 };
 
-const ClassInfo JSReadOnlySetLikePrototype::s_info = { "ReadOnlySetLikePrototype", &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSReadOnlySetLikePrototype) };
+const ClassInfo JSReadOnlySetLikePrototype::s_info = { "ReadOnlySetLike", &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSReadOnlySetLikePrototype) };
 
 void JSReadOnlySetLikePrototype::finishCreation(VM& vm)
 {
     Base::finishCreation(vm);
     reifyStaticProperties(vm, JSReadOnlySetLike::info(), JSReadOnlySetLikePrototypeTableValues, *this);
     putDirect(vm, vm.propertyNames->iteratorSymbol, getDirect(vm, vm.propertyNames->builtinNames().entriesPublicName()), static_cast<unsigned>(JSC::PropertyAttribute::DontEnum));
+    JSC_TO_STRING_TAG_WITHOUT_TRANSITION();
 }
 
 const ClassInfo JSReadOnlySetLike::s_info = { "ReadOnlySetLike", &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSReadOnlySetLike) };
index c55c4bf..7b6284e 100644 (file)
@@ -108,7 +108,7 @@ template<> JSValue JSSetLikeConstructor::prototypeForStructure(JSC::VM& vm, cons
 template<> void JSSetLikeConstructor::initializeProperties(VM& vm, JSDOMGlobalObject& globalObject)
 {
     putDirect(vm, vm.propertyNames->prototype, JSSetLike::prototype(vm, globalObject), JSC::PropertyAttribute::DontDelete | JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
-    putDirect(vm, vm.propertyNames->name, jsNontrivialString(vm, String("SetLike"_s)), JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
+    putDirect(vm, vm.propertyNames->name, jsNontrivialString(vm, "SetLike"_s), JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
     putDirect(vm, vm.propertyNames->length, jsNumber(0), JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
 }
 
@@ -130,13 +130,14 @@ static const HashTableValue JSSetLikePrototypeTableValues[] =
     { "delete", static_cast<unsigned>(JSC::PropertyAttribute::DontEnum | JSC::PropertyAttribute::Function), NoIntrinsic, { (intptr_t)static_cast<RawNativeFunction>(jsSetLikePrototypeFunctionDelete), (intptr_t) (1) } },
 };
 
-const ClassInfo JSSetLikePrototype::s_info = { "SetLikePrototype", &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSSetLikePrototype) };
+const ClassInfo JSSetLikePrototype::s_info = { "SetLike", &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSSetLikePrototype) };
 
 void JSSetLikePrototype::finishCreation(VM& vm)
 {
     Base::finishCreation(vm);
     reifyStaticProperties(vm, JSSetLike::info(), JSSetLikePrototypeTableValues, *this);
     putDirect(vm, vm.propertyNames->iteratorSymbol, getDirect(vm, vm.propertyNames->builtinNames().entriesPublicName()), static_cast<unsigned>(JSC::PropertyAttribute::DontEnum));
+    JSC_TO_STRING_TAG_WITHOUT_TRANSITION();
 }
 
 const ClassInfo JSSetLike::s_info = { "SetLike", &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSSetLike) };
index 31d722b..1b889b6 100644 (file)
@@ -119,7 +119,7 @@ template<> JSValue JSTestActiveDOMObjectConstructor::prototypeForStructure(JSC::
 template<> void JSTestActiveDOMObjectConstructor::initializeProperties(VM& vm, JSDOMGlobalObject& globalObject)
 {
     putDirect(vm, vm.propertyNames->prototype, JSTestActiveDOMObject::prototype(vm, globalObject), JSC::PropertyAttribute::DontDelete | JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
-    putDirect(vm, vm.propertyNames->name, jsNontrivialString(vm, String("TestActiveDOMObject"_s)), JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
+    putDirect(vm, vm.propertyNames->name, jsNontrivialString(vm, "TestActiveDOMObject"_s), JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
     putDirect(vm, vm.propertyNames->length, jsNumber(0), JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
 }
 
@@ -135,12 +135,13 @@ static const HashTableValue JSTestActiveDOMObjectPrototypeTableValues[] =
     { "overloadedMethod", static_cast<unsigned>(JSC::PropertyAttribute::Function), NoIntrinsic, { (intptr_t)static_cast<RawNativeFunction>(jsTestActiveDOMObjectPrototypeFunctionOverloadedMethod), (intptr_t) (1) } },
 };
 
-const ClassInfo JSTestActiveDOMObjectPrototype::s_info = { "TestActiveDOMObjectPrototype", &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSTestActiveDOMObjectPrototype) };
+const ClassInfo JSTestActiveDOMObjectPrototype::s_info = { "TestActiveDOMObject", &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSTestActiveDOMObjectPrototype) };
 
 void JSTestActiveDOMObjectPrototype::finishCreation(VM& vm)
 {
     Base::finishCreation(vm);
     reifyStaticProperties(vm, JSTestActiveDOMObject::info(), JSTestActiveDOMObjectPrototypeTableValues, *this);
+    JSC_TO_STRING_TAG_WITHOUT_TRANSITION();
 }
 
 const ClassInfo JSTestActiveDOMObject::s_info = { "TestActiveDOMObject", &Base::s_info, &JSTestActiveDOMObjectTable, nullptr, CREATE_METHOD_TABLE(JSTestActiveDOMObject) };
index e2146d1..15e792b 100644 (file)
@@ -115,7 +115,7 @@ template<> JSValue JSTestCEReactionsConstructor::prototypeForStructure(JSC::VM&
 template<> void JSTestCEReactionsConstructor::initializeProperties(VM& vm, JSDOMGlobalObject& globalObject)
 {
     putDirect(vm, vm.propertyNames->prototype, JSTestCEReactions::prototype(vm, globalObject), JSC::PropertyAttribute::DontDelete | JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
-    putDirect(vm, vm.propertyNames->name, jsNontrivialString(vm, String("TestCEReactions"_s)), JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
+    putDirect(vm, vm.propertyNames->name, jsNontrivialString(vm, "TestCEReactions"_s), JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
     putDirect(vm, vm.propertyNames->length, jsNumber(0), JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
 }
 
@@ -136,12 +136,13 @@ static const HashTableValue JSTestCEReactionsPrototypeTableValues[] =
     { "methodWithCEReactionsNotNeeded", static_cast<unsigned>(JSC::PropertyAttribute::Function), NoIntrinsic, { (intptr_t)static_cast<RawNativeFunction>(jsTestCEReactionsPrototypeFunctionMethodWithCEReactionsNotNeeded), (intptr_t) (0) } },
 };
 
-const ClassInfo JSTestCEReactionsPrototype::s_info = { "TestCEReactionsPrototype", &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSTestCEReactionsPrototype) };
+const ClassInfo JSTestCEReactionsPrototype::s_info = { "TestCEReactions", &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSTestCEReactionsPrototype) };
 
 void JSTestCEReactionsPrototype::finishCreation(VM& vm)
 {
     Base::finishCreation(vm);
     reifyStaticProperties(vm, JSTestCEReactions::info(), JSTestCEReactionsPrototypeTableValues, *this);
+    JSC_TO_STRING_TAG_WITHOUT_TRANSITION();
 }
 
 const ClassInfo JSTestCEReactions::s_info = { "TestCEReactions", &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSTestCEReactions) };
index 6732c40..27447b4 100644 (file)
@@ -102,7 +102,7 @@ template<> JSValue JSTestCEReactionsStringifierConstructor::prototypeForStructur
 template<> void JSTestCEReactionsStringifierConstructor::initializeProperties(VM& vm, JSDOMGlobalObject& globalObject)
 {
     putDirect(vm, vm.propertyNames->prototype, JSTestCEReactionsStringifier::prototype(vm, globalObject), JSC::PropertyAttribute::DontDelete | JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
-    putDirect(vm, vm.propertyNames->name, jsNontrivialString(vm, String("TestCEReactionsStringifier"_s)), JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
+    putDirect(vm, vm.propertyNames->name, jsNontrivialString(vm, "TestCEReactionsStringifier"_s), JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
     putDirect(vm, vm.propertyNames->length, jsNumber(0), JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
 }
 
@@ -118,12 +118,13 @@ static const HashTableValue JSTestCEReactionsStringifierPrototypeTableValues[] =
     { "toString", static_cast<unsigned>(JSC::PropertyAttribute::Function), NoIntrinsic, { (intptr_t)static_cast<RawNativeFunction>(jsTestCEReactionsStringifierPrototypeFunctionToString), (intptr_t) (0) } },
 };
 
-const ClassInfo JSTestCEReactionsStringifierPrototype::s_info = { "TestCEReactionsStringifierPrototype", &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSTestCEReactionsStringifierPrototype) };
+const ClassInfo JSTestCEReactionsStringifierPrototype::s_info = { "TestCEReactionsStringifier", &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSTestCEReactionsStringifierPrototype) };
 
 void JSTestCEReactionsStringifierPrototype::finishCreation(VM& vm)
 {
     Base::finishCreation(vm);
     reifyStaticProperties(vm, JSTestCEReactionsStringifier::info(), JSTestCEReactionsStringifierPrototypeTableValues, *this);
+    JSC_TO_STRING_TAG_WITHOUT_TRANSITION();
 }
 
 const ClassInfo JSTestCEReactionsStringifier::s_info = { "TestCEReactionsStringifier", &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSTestCEReactionsStringifier) };
index 7ce63ef..e565592 100644 (file)
@@ -129,7 +129,7 @@ template<> JSValue JSTestCallTracerConstructor::prototypeForStructure(JSC::VM& v
 template<> void JSTestCallTracerConstructor::initializeProperties(VM& vm, JSDOMGlobalObject& globalObject)
 {
     putDirect(vm, vm.propertyNames->prototype, JSTestCallTracer::prototype(vm, globalObject), JSC::PropertyAttribute::DontDelete | JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
-    putDirect(vm, vm.propertyNames->name, jsNontrivialString(vm, String("TestCallTracer"_s)), JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
+    putDirect(vm, vm.propertyNames->name, jsNontrivialString(vm, "TestCallTracer"_s), JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
     putDirect(vm, vm.propertyNames->length, jsNumber(0), JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
     reifyStaticProperties(vm, JSTestCallTracer::info(), JSTestCallTracerConstructorTableValues, *this);
 }
@@ -156,12 +156,13 @@ static const HashTableValue JSTestCallTracerPrototypeTableValues[] =
     { "testConstValue", JSC::PropertyAttribute::DontDelete | JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::ConstantInteger, NoIntrinsic, { (long long)(false) } },
 };
 
-const ClassInfo JSTestCallTracerPrototype::s_info = { "TestCallTracerPrototype", &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSTestCallTracerPrototype) };
+const ClassInfo JSTestCallTracerPrototype::s_info = { "TestCallTracer", &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSTestCallTracerPrototype) };
 
 void JSTestCallTracerPrototype::finishCreation(VM& vm)
 {
     Base::finishCreation(vm);
     reifyStaticProperties(vm, JSTestCallTracer::info(), JSTestCallTracerPrototypeTableValues, *this);
+    JSC_TO_STRING_TAG_WITHOUT_TRANSITION();
 }
 
 const ClassInfo JSTestCallTracer::s_info = { "TestCallTracer", &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSTestCallTracer) };
index 7b1586b..c07c682 100644 (file)
@@ -160,7 +160,7 @@ template<> JSValue JSTestCallbackInterfaceConstructor::prototypeForStructure(JSC
 template<> void JSTestCallbackInterfaceConstructor::initializeProperties(VM& vm, JSDOMGlobalObject& globalObject)
 {
     UNUSED_PARAM(globalObject);
-    putDirect(vm, vm.propertyNames->name, jsNontrivialString(vm, String("TestCallbackInterface"_s)), JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
+    putDirect(vm, vm.propertyNames->name, jsNontrivialString(vm, "TestCallbackInterface"_s), JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
     putDirect(vm, vm.propertyNames->length, jsNumber(0), JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
     reifyStaticProperties(vm, nullptr, JSTestCallbackInterfaceConstructorTableValues, *this);
 }
index a484770..bb43b5e 100644 (file)
@@ -91,7 +91,7 @@ template<> JSValue JSTestClassWithJSBuiltinConstructorConstructor::prototypeForS
 template<> void JSTestClassWithJSBuiltinConstructorConstructor::initializeProperties(VM& vm, JSDOMGlobalObject& globalObject)
 {
     putDirect(vm, vm.propertyNames->prototype, JSTestClassWithJSBuiltinConstructor::prototype(vm, globalObject), JSC::PropertyAttribute::DontDelete | JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
-    putDirect(vm, vm.propertyNames->name, jsNontrivialString(vm, String("TestClassWithJSBuiltinConstructor"_s)), JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
+    putDirect(vm, vm.propertyNames->name, jsNontrivialString(vm, "TestClassWithJSBuiltinConstructor"_s), JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
     putDirect(vm, vm.propertyNames->length, jsNumber(0), JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
 }
 
@@ -109,12 +109,13 @@ static const HashTableValue JSTestClassWithJSBuiltinConstructorPrototypeTableVal
     { "constructor", static_cast<unsigned>(JSC::PropertyAttribute::DontEnum), NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestClassWithJSBuiltinConstructorConstructor), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestClassWithJSBuiltinConstructorConstructor) } },
 };
 
-const ClassInfo JSTestClassWithJSBuiltinConstructorPrototype::s_info = { "TestClassWithJSBuiltinConstructorPrototype", &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSTestClassWithJSBuiltinConstructorPrototype) };
+const ClassInfo JSTestClassWithJSBuiltinConstructorPrototype::s_info = { "TestClassWithJSBuiltinConstructor", &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSTestClassWithJSBuiltinConstructorPrototype) };
 
 void JSTestClassWithJSBuiltinConstructorPrototype::finishCreation(VM& vm)
 {
     Base::finishCreation(vm);
     reifyStaticProperties(vm, JSTestClassWithJSBuiltinConstructor::info(), JSTestClassWithJSBuiltinConstructorPrototypeTableValues, *this);
+    JSC_TO_STRING_TAG_WITHOUT_TRANSITION();
 }
 
 const ClassInfo JSTestClassWithJSBuiltinConstructor::s_info = { "TestClassWithJSBuiltinConstructor", &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSTestClassWithJSBuiltinConstructor) };
index fce1d68..8da2a82 100644 (file)
@@ -512,7 +512,7 @@ template<> JSValue JSTestDOMJITConstructor::prototypeForStructure(JSC::VM& vm, c
 template<> void JSTestDOMJITConstructor::initializeProperties(VM& vm, JSDOMGlobalObject& globalObject)
 {
     putDirect(vm, vm.propertyNames->prototype, JSTestDOMJIT::prototype(vm, globalObject), JSC::PropertyAttribute::DontDelete | JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
-    putDirect(vm, vm.propertyNames->name, jsNontrivialString(vm, String("TestDOMJIT"_s)), JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
+    putDirect(vm, vm.propertyNames->name, jsNontrivialString(vm, "TestDOMJIT"_s), JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
     putDirect(vm, vm.propertyNames->length, jsNumber(0), JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
 }
 
@@ -565,12 +565,13 @@ static const HashTableValue JSTestDOMJITPrototypeTableValues[] =
     { "getElementsByName", static_cast<unsigned>(JSC::PropertyAttribute::Function | JSC::PropertyAttribute::DOMJITFunction), NoIntrinsic, { (intptr_t)static_cast<RawNativeFunction>(jsTestDOMJITPrototypeFunctionGetElementsByName), (intptr_t) static_cast<const JSC::DOMJIT::Signature*>(&DOMJITSignatureForTestDOMJITGetElementsByName) } },
 };
 
-const ClassInfo JSTestDOMJITPrototype::s_info = { "TestDOMJITPrototype", &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSTestDOMJITPrototype) };
+const ClassInfo JSTestDOMJITPrototype::s_info = { "TestDOMJIT", &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSTestDOMJITPrototype) };
 
 void JSTestDOMJITPrototype::finishCreation(VM& vm)
 {
     Base::finishCreation(vm);
     reifyStaticProperties(vm, JSTestDOMJIT::info(), JSTestDOMJITPrototypeTableValues, *this);
+    JSC_TO_STRING_TAG_WITHOUT_TRANSITION();
 }
 
 const ClassInfo JSTestDOMJIT::s_info = { "TestDOMJIT", &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSTestDOMJIT) };
index babde15..62b0329 100644 (file)
@@ -111,7 +111,7 @@ template<> JSValue JSTestEnabledBySettingConstructor::prototypeForStructure(JSC:
 template<> void JSTestEnabledBySettingConstructor::initializeProperties(VM& vm, JSDOMGlobalObject& globalObject)
 {
     putDirect(vm, vm.propertyNames->prototype, JSTestEnabledBySetting::prototype(vm, globalObject), JSC::PropertyAttribute::DontDelete | JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
-    putDirect(vm, vm.propertyNames->name, jsNontrivialString(vm, String("TestEnabledBySetting"_s)), JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
+    putDirect(vm, vm.propertyNames->name, jsNontrivialString(vm, "TestEnabledBySetting"_s), JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
     putDirect(vm, vm.propertyNames->length, jsNumber(0), JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
 }
 
@@ -134,7 +134,7 @@ static const HashTableValue JSTestEnabledBySettingPrototypeTableValues[] =
 #endif
 };
 
-const ClassInfo JSTestEnabledBySettingPrototype::s_info = { "TestEnabledBySettingPrototype", &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSTestEnabledBySettingPrototype) };
+const ClassInfo JSTestEnabledBySettingPrototype::s_info = { "TestEnabledBySetting", &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSTestEnabledBySettingPrototype) };
 
 void JSTestEnabledBySettingPrototype::finishCreation(VM& vm)
 {
@@ -161,6 +161,7 @@ void JSTestEnabledBySettingPrototype::finishCreation(VM& vm)
 #endif
     if (hasDisabledRuntimeProperties && structure()->isDictionary())
         flattenDictionaryObject(vm);
+    JSC_TO_STRING_TAG_WITHOUT_TRANSITION();
 }
 
 const ClassInfo JSTestEnabledBySetting::s_info = { "TestEnabledBySetting", &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSTestEnabledBySetting) };
index 75227bd..eab6c2a 100644 (file)
@@ -96,7 +96,7 @@ template<> JSValue JSTestEnabledForContextConstructor::prototypeForStructure(JSC
 template<> void JSTestEnabledForContextConstructor::initializeProperties(VM& vm, JSDOMGlobalObject& globalObject)
 {
     putDirect(vm, vm.propertyNames->prototype, JSTestEnabledForContext::prototype(vm, globalObject), JSC::PropertyAttribute::DontDelete | JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
-    putDirect(vm, vm.propertyNames->name, jsNontrivialString(vm, String("TestEnabledForContext"_s)), JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
+    putDirect(vm, vm.propertyNames->name, jsNontrivialString(vm, "TestEnabledForContext"_s), JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
     putDirect(vm, vm.propertyNames->length, jsNumber(0), JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
 }
 
@@ -109,12 +109,13 @@ static const HashTableValue JSTestEnabledForContextPrototypeTableValues[] =
     { "constructor", static_cast<unsigned>(JSC::PropertyAttribute::DontEnum), NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestEnabledForContextConstructor), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestEnabledForContextConstructor) } },
 };
 
-const ClassInfo JSTestEnabledForContextPrototype::s_info = { "TestEnabledForContextPrototype", &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSTestEnabledForContextPrototype) };
+const ClassInfo JSTestEnabledForContextPrototype::s_info = { "TestEnabledForContext", &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSTestEnabledForContextPrototype) };
 
 void JSTestEnabledForContextPrototype::finishCreation(VM& vm)
 {
     Base::finishCreation(vm);
     reifyStaticProperties(vm, JSTestEnabledForContext::info(), JSTestEnabledForContextPrototypeTableValues, *this);
+    JSC_TO_STRING_TAG_WITHOUT_TRANSITION();
 }
 
 const ClassInfo JSTestEnabledForContext::s_info = { "TestEnabledForContext", &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSTestEnabledForContext) };
index 75ac0bf..02c7341 100644 (file)
@@ -194,7 +194,7 @@ template<> JSValue JSTestEventConstructorConstructor::prototypeForStructure(JSC:
 template<> void JSTestEventConstructorConstructor::initializeProperties(VM& vm, JSDOMGlobalObject& globalObject)
 {
     putDirect(vm, vm.propertyNames->prototype, JSTestEventConstructor::prototype(vm, globalObject), JSC::PropertyAttribute::DontDelete | JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
-    putDirect(vm, vm.propertyNames->name, jsNontrivialString(vm, String("TestEventConstructor"_s)), JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
+    putDirect(vm, vm.propertyNames->name, jsNontrivialString(vm, "TestEventConstructor"_s), JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
     putDirect(vm, vm.propertyNames->length, jsNumber(1), JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
 }
 
@@ -214,12 +214,13 @@ static const HashTableValue JSTestEventConstructorPrototypeTableValues[] =
 #endif
 };
 
-const ClassInfo JSTestEventConstructorPrototype::s_info = { "TestEventConstructorPrototype", &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSTestEventConstructorPrototype) };
+const ClassInfo JSTestEventConstructorPrototype::s_info = { "TestEventConstructor", &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSTestEventConstructorPrototype) };
 
 void JSTestEventConstructorPrototype::finishCreation(VM& vm)
 {
     Base::finishCreation(vm);
     reifyStaticProperties(vm, JSTestEventConstructor::info(), JSTestEventConstructorPrototypeTableValues, *this);
+    JSC_TO_STRING_TAG_WITHOUT_TRANSITION();
 }
 
 const ClassInfo JSTestEventConstructor::s_info = { "TestEventConstructor", &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSTestEventConstructor) };
index 0b94418..2c0366c 100644 (file)
@@ -99,7 +99,7 @@ template<> JSValue JSTestEventTargetConstructor::prototypeForStructure(JSC::VM&
 template<> void JSTestEventTargetConstructor::initializeProperties(VM& vm, JSDOMGlobalObject& globalObject)
 {
     putDirect(vm, vm.propertyNames->prototype, JSTestEventTarget::prototype(vm, globalObject), JSC::PropertyAttribute::DontDelete | JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
-    putDirect(vm, vm.propertyNames->name, jsNontrivialString(vm, String("TestEventTarget"_s)), JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
+    putDirect(vm, vm.propertyNames->name, jsNontrivialString(vm, "TestEventTarget"_s), JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
     putDirect(vm, vm.propertyNames->length, jsNumber(0), JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
 }
 
@@ -113,12 +113,13 @@ static const HashTableValue JSTestEventTargetPrototypeTableValues[] =
     { "item", static_cast<unsigned>(JSC::PropertyAttribute::Function), NoIntrinsic, { (intptr_t)static_cast<RawNativeFunction>(jsTestEventTargetPrototypeFunctionItem), (intptr_t) (1) } },
 };
 
-const ClassInfo JSTestEventTargetPrototype::s_info = { "TestEventTargetPrototype", &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSTestEventTargetPrototype) };
+const ClassInfo JSTestEventTargetPrototype::s_info = { "TestEventTarget", &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSTestEventTargetPrototype) };
 
 void JSTestEventTargetPrototype::finishCreation(VM& vm)
 {
     Base::finishCreation(vm);
     reifyStaticProperties(vm, JSTestEventTarget::info(), JSTestEventTargetPrototypeTableValues, *this);
+    JSC_TO_STRING_TAG_WITHOUT_TRANSITION();
 }
 
 const ClassInfo JSTestEventTarget::s_info = { "TestEventTarget", &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSTestEventTarget) };
index a0e0454..3270ca7 100644 (file)
@@ -93,7 +93,7 @@ template<> JSValue JSTestExceptionConstructor::prototypeForStructure(JSC::VM& vm
 template<> void JSTestExceptionConstructor::initializeProperties(VM& vm, JSDOMGlobalObject& globalObject)
 {
     putDirect(vm, vm.propertyNames->prototype, JSTestException::prototype(vm, globalObject), JSC::PropertyAttribute::DontDelete | JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
-    putDirect(vm, vm.propertyNames->name, jsNontrivialString(vm, String("TestException"_s)), JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
+    putDirect(vm, vm.propertyNames->name, jsNontrivialString(vm, "TestException"_s), JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
     putDirect(vm, vm.propertyNames->length, jsNumber(0), JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
 }
 
@@ -107,12 +107,13 @@ static const HashTableValue JSTestExceptionPrototypeTableValues[] =
     { "name", static_cast<unsigned>(JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::CustomAccessor | JSC::PropertyAttribute::DOMAttribute), NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestExceptionName), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(0) } },
 };
 
-const ClassInfo JSTestExceptionPrototype::s_info = { "TestExceptionPrototype", &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSTestExceptionPrototype) };
+const ClassInfo JSTestExceptionPrototype::s_info = { "TestException", &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSTestExceptionPrototype) };
 
 void JSTestExceptionPrototype::finishCreation(VM& vm)
 {
     Base::finishCreation(vm);
     reifyStaticProperties(vm, JSTestException::info(), JSTestExceptionPrototypeTableValues, *this);
+    JSC_TO_STRING_TAG_WITHOUT_TRANSITION();
 }
 
 const ClassInfo JSTestException::s_info = { "TestException", &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSTestException) };
index ff3bcb2..05c87a5 100644 (file)
@@ -93,7 +93,7 @@ template<> JSValue JSTestGenerateIsReachableConstructor::prototypeForStructure(J
 template<> void JSTestGenerateIsReachableConstructor::initializeProperties(VM& vm, JSDOMGlobalObject& globalObject)
 {
     putDirect(vm, vm.propertyNames->prototype, JSTestGenerateIsReachable::prototype(vm, globalObject), JSC::PropertyAttribute::DontDelete | JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
-    putDirect(vm, vm.propertyNames->name, jsNontrivialString(vm, String("TestGenerateIsReachable"_s)), JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
+    putDirect(vm, vm.propertyNames->name, jsNontrivialString(vm, "TestGenerateIsReachable"_s), JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
     putDirect(vm, vm.propertyNames->length, jsNumber(0), JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
 }
 
@@ -107,7 +107,7 @@ static const HashTableValue JSTestGenerateIsReachablePrototypeTableValues[] =
     { "aSecretAttribute", static_cast<unsigned>(JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::CustomAccessor | JSC::PropertyAttribute::DOMAttribute), NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestGenerateIsReachableASecretAttribute), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(0) } },
 };
 
-const ClassInfo JSTestGenerateIsReachablePrototype::s_info = { "TestGenerateIsReachablePrototype", &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSTestGenerateIsReachablePrototype) };
+const ClassInfo JSTestGenerateIsReachablePrototype::s_info = { "TestGenerateIsReachable", &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSTestGenerateIsReachablePrototype) };
 
 void JSTestGenerateIsReachablePrototype::finishCreation(VM& vm)
 {
@@ -123,6 +123,7 @@ void JSTestGenerateIsReachablePrototype::finishCreation(VM& vm)
     }
     if (hasDisabledRuntimeProperties && structure()->isDictionary())
         flattenDictionaryObject(vm);
+    JSC_TO_STRING_TAG_WITHOUT_TRANSITION();
 }
 
 const ClassInfo JSTestGenerateIsReachable::s_info = { "TestGenerateIsReachable", &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSTestGenerateIsReachable) };
index 06cc856..4e24b7a 100644 (file)
@@ -674,7 +674,7 @@ template<> JSValue JSTestGlobalObjectConstructor::prototypeForStructure(JSC::VM&
 template<> void JSTestGlobalObjectConstructor::initializeProperties(VM& vm, JSDOMGlobalObject& globalObject)
 {
     putDirect(vm, vm.propertyNames->prototype, globalObject.getPrototypeDirect(vm), JSC::PropertyAttribute::DontDelete | JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
-    putDirect(vm, vm.propertyNames->name, jsNontrivialString(vm, String("TestGlobalObject"_s)), JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
+    putDirect(vm, vm.propertyNames->name, jsNontrivialString(vm, "TestGlobalObject"_s), JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
     putDirect(vm, vm.propertyNames->length, jsNumber(0), JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
     reifyStaticProperties(vm, JSTestGlobalObject::info(), JSTestGlobalObjectConstructorTableValues, *this);
 }
@@ -695,7 +695,16 @@ static const HashTableValue JSTestGlobalObjectPrototypeTableValues[] =
 };
 
 static const HashTable JSTestGlobalObjectPrototypeTable = { 1, 1, true, JSTestGlobalObject::info(), JSTestGlobalObjectPrototypeTableValues, JSTestGlobalObjectPrototypeTableIndex };
-const ClassInfo JSTestGlobalObjectPrototype::s_info = { "TestGlobalObjectPrototype", &Base::s_info, &JSTestGlobalObjectPrototypeTable, nullptr, CREATE_METHOD_TABLE(JSTestGlobalObjectPrototype) };
+const ClassInfo JSTestGlobalObjectPrototype::s_info = { "TestGlobalObject", &Base::s_info, &JSTestGlobalObjectPrototypeTable, nullptr, CREATE_METHOD_TABLE(JSTestGlobalObjectPrototype) };
+
+void JSTestGlobalObjectPrototype::finishCreation(VM& vm)
+{
+    Base::finishCreation(vm);
+#if ENABLE(TEST_FEATURE)
+    putDirect(vm, static_cast<JSVMClientData*>(vm.clientData)->builtinNames().testPrivateFunctionPrivateName(), JSFunction::create(vm, globalObject(), 0, String(), jsTestGlobalObjectInstanceFunctionTestPrivateFunction), JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
+#endif
+    JSC_TO_STRING_TAG_WITHOUT_TRANSITION();
+}
 
 const ClassInfo JSTestGlobalObject::s_info = { "TestGlobalObject", &Base::s_info, &JSTestGlobalObjectTable, nullptr, CREATE_METHOD_TABLE(JSTestGlobalObject) };
 
index 97522aa..b1795b0 100644 (file)
@@ -114,6 +114,8 @@ private:
         : JSC::JSNonFinalObject(vm, structure)
     {
     }
+
+    void finishCreation(JSC::VM&);
 public:
     static constexpr unsigned StructureFlags = Base::StructureFlags | JSC::HasStaticPropertyTable;
 };
index 94881b1..567be17 100644 (file)
@@ -92,7 +92,7 @@ template<> JSValue JSTestIndexedSetterNoIdentifierConstructor::prototypeForStruc
 template<> void JSTestIndexedSetterNoIdentifierConstructor::initializeProperties(VM& vm, JSDOMGlobalObject& globalObject)
 {
     putDirect(vm, vm.propertyNames->prototype, JSTestIndexedSetterNoIdentifier::prototype(vm, globalObject), JSC::PropertyAttribute::DontDelete | JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
-    putDirect(vm, vm.propertyNames->name, jsNontrivialString(vm, String("TestIndexedSetterNoIdentifier"_s)), JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
+    putDirect(vm, vm.propertyNames->name, jsNontrivialString(vm, "TestIndexedSetterNoIdentifier"_s), JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
     putDirect(vm, vm.propertyNames->length, jsNumber(0), JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
 }
 
@@ -105,12 +105,13 @@ static const HashTableValue JSTestIndexedSetterNoIdentifierPrototypeTableValues[
     { "constructor", static_cast<unsigned>(JSC::PropertyAttribute::DontEnum), NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestIndexedSetterNoIdentifierConstructor), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestIndexedSetterNoIdentifierConstructor) } },
 };
 
-const ClassInfo JSTestIndexedSetterNoIdentifierPrototype::s_info = { "TestIndexedSetterNoIdentifierPrototype", &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSTestIndexedSetterNoIdentifierPrototype) };
+const ClassInfo JSTestIndexedSetterNoIdentifierPrototype::s_info = { "TestIndexedSetterNoIdentifier", &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSTestIndexedSetterNoIdentifierPrototype) };
 
 void JSTestIndexedSetterNoIdentifierPrototype::finishCreation(VM& vm)
 {
     Base::finishCreation(vm);
     reifyStaticProperties(vm, JSTestIndexedSetterNoIdentifier::info(), JSTestIndexedSetterNoIdentifierPrototypeTableValues, *this);
+    JSC_TO_STRING_TAG_WITHOUT_TRANSITION();
 }
 
 const ClassInfo JSTestIndexedSetterNoIdentifier::s_info = { "TestIndexedSetterNoIdentifier", &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSTestIndexedSetterNoIdentifier) };
index 7cb0a73..0a7a1a9 100644 (file)
@@ -92,7 +92,7 @@ template<> JSValue JSTestIndexedSetterThrowingExceptionConstructor::prototypeFor
 template<> void JSTestIndexedSetterThrowingExceptionConstructor::initializeProperties(VM& vm, JSDOMGlobalObject& globalObject)
 {
     putDirect(vm, vm.propertyNames->prototype, JSTestIndexedSetterThrowingException::prototype(vm, globalObject), JSC::PropertyAttribute::DontDelete | JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
-    putDirect(vm, vm.propertyNames->name, jsNontrivialString(vm, String("TestIndexedSetterThrowingException"_s)), JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
+    putDirect(vm, vm.propertyNames->name, jsNontrivialString(vm, "TestIndexedSetterThrowingException"_s), JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
     putDirect(vm, vm.propertyNames->length, jsNumber(0), JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
 }
 
@@ -105,12 +105,13 @@ static const HashTableValue JSTestIndexedSetterThrowingExceptionPrototypeTableVa
     { "constructor", static_cast<unsigned>(JSC::PropertyAttribute::DontEnum), NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestIndexedSetterThrowingExceptionConstructor), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestIndexedSetterThrowingExceptionConstructor) } },
 };
 
-const ClassInfo JSTestIndexedSetterThrowingExceptionPrototype::s_info = { "TestIndexedSetterThrowingExceptionPrototype", &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSTestIndexedSetterThrowingExceptionPrototype) };
+const ClassInfo JSTestIndexedSetterThrowingExceptionPrototype::s_info = { "TestIndexedSetterThrowingException", &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSTestIndexedSetterThrowingExceptionPrototype) };
 
 void JSTestIndexedSetterThrowingExceptionPrototype::finishCreation(VM& vm)
 {
     Base::finishCreation(vm);
     reifyStaticProperties(vm, JSTestIndexedSetterThrowingException::info(), JSTestIndexedSetterThrowingExceptionPrototypeTableValues, *this);
+    JSC_TO_STRING_TAG_WITHOUT_TRANSITION();
 }
 
 const ClassInfo JSTestIndexedSetterThrowingException::s_info = { "TestIndexedSetterThrowingException", &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSTestIndexedSetterThrowingException) };
index 74c0b4b..edc7771 100644 (file)
@@ -98,7 +98,7 @@ template<> JSValue JSTestIndexedSetterWithIdentifierConstructor::prototypeForStr
 template<> void JSTestIndexedSetterWithIdentifierConstructor::initializeProperties(VM& vm, JSDOMGlobalObject& globalObject)
 {
     putDirect(vm, vm.propertyNames->prototype, JSTestIndexedSetterWithIdentifier::prototype(vm, globalObject), JSC::PropertyAttribute::DontDelete | JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
-    putDirect(vm, vm.propertyNames->name, jsNontrivialString(vm, String("TestIndexedSetterWithIdentifier"_s)), JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
+    putDirect(vm, vm.propertyNames->name, jsNontrivialString(vm, "TestIndexedSetterWithIdentifier"_s), JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
     putDirect(vm, vm.propertyNames->length, jsNumber(0), JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
 }
 
@@ -112,12 +112,13 @@ static const HashTableValue JSTestIndexedSetterWithIdentifierPrototypeTableValue
     { "indexedSetter", static_cast<unsigned>(JSC::PropertyAttribute::Function), NoIntrinsic, { (intptr_t)static_cast<RawNativeFunction>(jsTestIndexedSetterWithIdentifierPrototypeFunctionIndexedSetter), (intptr_t) (2) } },
 };
 
-const ClassInfo JSTestIndexedSetterWithIdentifierPrototype::s_info = { "TestIndexedSetterWithIdentifierPrototype", &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSTestIndexedSetterWithIdentifierPrototype) };
+const ClassInfo JSTestIndexedSetterWithIdentifierPrototype::s_info = { "TestIndexedSetterWithIdentifier", &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSTestIndexedSetterWithIdentifierPrototype) };
 
 void JSTestIndexedSetterWithIdentifierPrototype::finishCreation(VM& vm)
 {
     Base::finishCreation(vm);
     reifyStaticProperties(vm, JSTestIndexedSetterWithIdentifier::info(), JSTestIndexedSetterWithIdentifierPrototypeTableValues, *this);
+    JSC_TO_STRING_TAG_WITHOUT_TRANSITION();
 }
 
 const ClassInfo JSTestIndexedSetterWithIdentifier::s_info = { "TestIndexedSetterWithIdentifier", &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSTestIndexedSetterWithIdentifier) };
index 3fdccec..e670e0f 100644 (file)
@@ -298,7 +298,7 @@ template<> JSValue JSTestInterfaceConstructor::prototypeForStructure(JSC::VM& vm
 template<> void JSTestInterfaceConstructor::initializeProperties(VM& vm, JSDOMGlobalObject& globalObject)
 {
     putDirect(vm, vm.propertyNames->prototype, JSTestInterface::prototype(vm, globalObject), JSC::PropertyAttribute::DontDelete | JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
-    putDirect(vm, vm.propertyNames->name, jsNontrivialString(vm, String("TestInterface"_s)), JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
+    putDirect(vm, vm.propertyNames->name, jsNontrivialString(vm, "TestInterface"_s), JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
     putDirect(vm, vm.propertyNames->length, jsNumber(1), JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
     reifyStaticProperties(vm, JSTestInterface::info(), JSTestInterfaceConstructorTableValues, *this);
 }
@@ -426,13 +426,14 @@ static const HashTableValue JSTestInterfacePrototypeTableValues[] =
 #endif
 };
 
-const ClassInfo JSTestInterfacePrototype::s_info = { "TestInterfacePrototype", &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSTestInterfacePrototype) };
+const ClassInfo JSTestInterfacePrototype::s_info = { "TestInterface", &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSTestInterfacePrototype) };
 
 void JSTestInterfacePrototype::finishCreation(VM& vm)
 {
     Base::finishCreation(vm);
     reifyStaticProperties(vm, JSTestInterface::info(), JSTestInterfacePrototypeTableValues, *this);
     putDirect(vm, vm.propertyNames->iteratorSymbol, getDirect(vm, vm.propertyNames->builtinNames().entriesPublicName()), static_cast<unsigned>(JSC::PropertyAttribute::DontEnum));
+    JSC_TO_STRING_TAG_WITHOUT_TRANSITION();
 }
 
 const ClassInfo JSTestInterface::s_info = { "TestInterface", &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSTestInterface) };
index 1b2046b..522968b 100644 (file)
@@ -93,7 +93,7 @@ template<> JSValue JSTestInterfaceLeadingUnderscoreConstructor::prototypeForStru
 template<> void JSTestInterfaceLeadingUnderscoreConstructor::initializeProperties(VM& vm, JSDOMGlobalObject& globalObject)
 {
     putDirect(vm, vm.propertyNames->prototype, JSTestInterfaceLeadingUnderscore::prototype(vm, globalObject), JSC::PropertyAttribute::DontDelete | JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
-    putDirect(vm, vm.propertyNames->name, jsNontrivialString(vm, String("TestInterfaceLeadingUnderscore"_s)), JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
+    putDirect(vm, vm.propertyNames->name, jsNontrivialString(vm, "TestInterfaceLeadingUnderscore"_s), JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
     putDirect(vm, vm.propertyNames->length, jsNumber(0), JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
 }
 
@@ -107,12 +107,13 @@ static const HashTableValue JSTestInterfaceLeadingUnderscorePrototypeTableValues
     { "readonly", static_cast<unsigned>(JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::CustomAccessor | JSC::PropertyAttribute::DOMAttribute), NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestInterfaceLeadingUnderscoreReadonly), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(0) } },
 };
 
-const ClassInfo JSTestInterfaceLeadingUnderscorePrototype::s_info = { "TestInterfaceLeadingUnderscorePrototype", &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSTestInterfaceLeadingUnderscorePrototype) };
+const ClassInfo JSTestInterfaceLeadingUnderscorePrototype::s_info = { "TestInterfaceLeadingUnderscore", &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSTestInterfaceLeadingUnderscorePrototype) };
 
 void JSTestInterfaceLeadingUnderscorePrototype::finishCreation(VM& vm)
 {
     Base::finishCreation(vm);
     reifyStaticProperties(vm, JSTestInterfaceLeadingUnderscore::info(), JSTestInterfaceLeadingUnderscorePrototypeTableValues, *this);
+    JSC_TO_STRING_TAG_WITHOUT_TRANSITION();
 }
 
 const ClassInfo JSTestInterfaceLeadingUnderscore::s_info = { "TestInterfaceLeadingUnderscore", &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSTestInterfaceLeadingUnderscore) };
index 4416c20..71cf2ef 100644 (file)
@@ -103,7 +103,7 @@ template<> JSValue JSTestIterableConstructor::prototypeForStructure(JSC::VM& vm,
 template<> void JSTestIterableConstructor::initializeProperties(VM& vm, JSDOMGlobalObject& globalObject)
 {
     putDirect(vm, vm.propertyNames->prototype, JSTestIterable::prototype(vm, globalObject), JSC::PropertyAttribute::DontDelete | JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
-    putDirect(vm, vm.propertyNames->name, jsNontrivialString(vm, String("TestIterable"_s)), JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
+    putDirect(vm, vm.propertyNames->name, jsNontrivialString(vm, "TestIterable"_s), JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
     putDirect(vm, vm.propertyNames->length, jsNumber(0), JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
 }
 
@@ -120,13 +120,14 @@ static const HashTableValue JSTestIterablePrototypeTableValues[] =
     { "forEach", static_cast<unsigned>(JSC::PropertyAttribute::Function), NoIntrinsic, { (intptr_t)static_cast<RawNativeFunction>(jsTestIterablePrototypeFunctionForEach), (intptr_t) (1) } },
 };
 
-const ClassInfo JSTestIterablePrototype::s_info = { "TestIterablePrototype", &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSTestIterablePrototype) };
+const ClassInfo JSTestIterablePrototype::s_info = { "TestIterable", &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSTestIterablePrototype) };
 
 void JSTestIterablePrototype::finishCreation(VM& vm)
 {
     Base::finishCreation(vm);
     reifyStaticProperties(vm, JSTestIterable::info(), JSTestIterablePrototypeTableValues, *this);
     putDirect(vm, vm.propertyNames->iteratorSymbol, getDirect(vm, vm.propertyNames->builtinNames().entriesPublicName()), static_cast<unsigned>(JSC::PropertyAttribute::DontEnum));
+    JSC_TO_STRING_TAG_WITHOUT_TRANSITION();
 }
 
 const ClassInfo JSTestIterable::s_info = { "TestIterable", &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSTestIterable) };
index 4d542ed..2b7552d 100644 (file)
@@ -96,7 +96,7 @@ template<> JSValue JSTestJSBuiltinConstructorConstructor::prototypeForStructure(
 template<> void JSTestJSBuiltinConstructorConstructor::initializeProperties(VM& vm, JSDOMGlobalObject& globalObject)
 {
     putDirect(vm, vm.propertyNames->prototype, JSTestJSBuiltinConstructor::prototype(vm, globalObject), JSC::PropertyAttribute::DontDelete | JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
-    putDirect(vm, vm.propertyNames->name, jsNontrivialString(vm, String("TestJSBuiltinConstructor"_s)), JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
+    putDirect(vm, vm.propertyNames->name, jsNontrivialString(vm, "TestJSBuiltinConstructor"_s), JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
     putDirect(vm, vm.propertyNames->length, jsNumber(0), JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
 }
 
@@ -119,12 +119,13 @@ static const HashTableValue JSTestJSBuiltinConstructorPrototypeTableValues[] =
     { "testCustomFunction", static_cast<unsigned>(JSC::PropertyAttribute::Function), NoIntrinsic, { (intptr_t)static_cast<RawNativeFunction>(jsTestJSBuiltinConstructorPrototypeFunctionTestCustomFunction), (intptr_t) (0) } },
 };
 
-const ClassInfo JSTestJSBuiltinConstructorPrototype::s_info = { "TestJSBuiltinConstructorPrototype", &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSTestJSBuiltinConstructorPrototype) };
+const ClassInfo JSTestJSBuiltinConstructorPrototype::s_info = { "TestJSBuiltinConstructor", &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSTestJSBuiltinConstructorPrototype) };
 
 void JSTestJSBuiltinConstructorPrototype::finishCreation(VM& vm)
 {
     Base::finishCreation(vm);
     reifyStaticProperties(vm, JSTestJSBuiltinConstructor::info(), JSTestJSBuiltinConstructorPrototypeTableValues, *this);
+    JSC_TO_STRING_TAG_WITHOUT_TRANSITION();
 }
 
 const ClassInfo JSTestJSBuiltinConstructor::s_info = { "TestJSBuiltinConstructor", &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSTestJSBuiltinConstructor) };
index 07d176e..2de43a6 100644 (file)
@@ -93,7 +93,7 @@ template<> JSValue JSTestNamedAndIndexedSetterNoIdentifierConstructor::prototype
 template<> void JSTestNamedAndIndexedSetterNoIdentifierConstructor::initializeProperties(VM& vm, JSDOMGlobalObject& globalObject)
 {
     putDirect(vm, vm.propertyNames->prototype, JSTestNamedAndIndexedSetterNoIdentifier::prototype(vm, globalObject), JSC::PropertyAttribute::DontDelete | JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
-    putDirect(vm, vm.propertyNames->name, jsNontrivialString(vm, String("TestNamedAndIndexedSetterNoIdentifier"_s)), JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
+    putDirect(vm, vm.propertyNames->name, jsNontrivialString(vm, "TestNamedAndIndexedSetterNoIdentifier"_s), JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
     putDirect(vm, vm.propertyNames->length, jsNumber(0), JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
 }
 
@@ -106,12 +106,13 @@ static const HashTableValue JSTestNamedAndIndexedSetterNoIdentifierPrototypeTabl
     { "constructor", static_cast<unsigned>(JSC::PropertyAttribute::DontEnum), NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestNamedAndIndexedSetterNoIdentifierConstructor), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestNamedAndIndexedSetterNoIdentifierConstructor) } },
 };
 
-const ClassInfo JSTestNamedAndIndexedSetterNoIdentifierPrototype::s_info = { "TestNamedAndIndexedSetterNoIdentifierPrototype", &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSTestNamedAndIndexedSetterNoIdentifierPrototype) };
+const ClassInfo JSTestNamedAndIndexedSetterNoIdentifierPrototype::s_info = { "TestNamedAndIndexedSetterNoIdentifier", &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSTestNamedAndIndexedSetterNoIdentifierPrototype) };
 
 void JSTestNamedAndIndexedSetterNoIdentifierPrototype::finishCreation(VM& vm)
 {
     Base::finishCreation(vm);
     reifyStaticProperties(vm, JSTestNamedAndIndexedSetterNoIdentifier::info(), JSTestNamedAndIndexedSetterNoIdentifierPrototypeTableValues, *this);
+    JSC_TO_STRING_TAG_WITHOUT_TRANSITION();
 }
 
 const ClassInfo JSTestNamedAndIndexedSetterNoIdentifier::s_info = { "TestNamedAndIndexedSetterNoIdentifier", &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSTestNamedAndIndexedSetterNoIdentifier) };
index aadd521..56f696f 100644 (file)
@@ -93,7 +93,7 @@ template<> JSValue JSTestNamedAndIndexedSetterThrowingExceptionConstructor::prot
 template<> void JSTestNamedAndIndexedSetterThrowingExceptionConstructor::initializeProperties(VM& vm, JSDOMGlobalObject& globalObject)
 {
     putDirect(vm, vm.propertyNames->prototype, JSTestNamedAndIndexedSetterThrowingException::prototype(vm, globalObject), JSC::PropertyAttribute::DontDelete | JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
-    putDirect(vm, vm.propertyNames->name, jsNontrivialString(vm, String("TestNamedAndIndexedSetterThrowingException"_s)), JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
+    putDirect(vm, vm.propertyNames->name, jsNontrivialString(vm, "TestNamedAndIndexedSetterThrowingException"_s), JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
     putDirect(vm, vm.propertyNames->length, jsNumber(0), JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
 }
 
@@ -106,12 +106,13 @@ static const HashTableValue JSTestNamedAndIndexedSetterThrowingExceptionPrototyp
     { "constructor", static_cast<unsigned>(JSC::PropertyAttribute::DontEnum), NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestNamedAndIndexedSetterThrowingExceptionConstructor), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestNamedAndIndexedSetterThrowingExceptionConstructor) } },
 };
 
-const ClassInfo JSTestNamedAndIndexedSetterThrowingExceptionPrototype::s_info = { "TestNamedAndIndexedSetterThrowingExceptionPrototype", &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSTestNamedAndIndexedSetterThrowingExceptionPrototype) };
+const ClassInfo JSTestNamedAndIndexedSetterThrowingExceptionPrototype::s_info = { "TestNamedAndIndexedSetterThrowingException", &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSTestNamedAndIndexedSetterThrowingExceptionPrototype) };
 
 void JSTestNamedAndIndexedSetterThrowingExceptionPrototype::finishCreation(VM& vm)
 {
     Base::finishCreation(vm);
     reifyStaticProperties(vm, JSTestNamedAndIndexedSetterThrowingException::info(), JSTestNamedAndIndexedSetterThrowingExceptionPrototypeTableValues, *this);
+    JSC_TO_STRING_TAG_WITHOUT_TRANSITION();
 }
 
 const ClassInfo JSTestNamedAndIndexedSetterThrowingException::s_info = { "TestNamedAndIndexedSetterThrowingException", &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSTestNamedAndIndexedSetterThrowingException) };
index cefd876..b4df453 100644 (file)
@@ -100,7 +100,7 @@ template<> JSValue JSTestNamedAndIndexedSetterWithIdentifierConstructor::prototy
 template<> void JSTestNamedAndIndexedSetterWithIdentifierConstructor::initializeProperties(VM& vm, JSDOMGlobalObject& globalObject)
 {
     putDirect(vm, vm.propertyNames->prototype, JSTestNamedAndIndexedSetterWithIdentifier::prototype(vm, globalObject), JSC::PropertyAttribute::DontDelete | JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
-    putDirect(vm, vm.propertyNames->name, jsNontrivialString(vm, String("TestNamedAndIndexedSetterWithIdentifier"_s)), JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
+    putDirect(vm, vm.propertyNames->name, jsNontrivialString(vm, "TestNamedAndIndexedSetterWithIdentifier"_s), JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
     putDirect(vm, vm.propertyNames->length, jsNumber(0), JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
 }
 
@@ -115,12 +115,13 @@ static const HashTableValue JSTestNamedAndIndexedSetterWithIdentifierPrototypeTa
     { "indexedSetter", static_cast<unsigned>(JSC::PropertyAttribute::Function), NoIntrinsic, { (intptr_t)static_cast<RawNativeFunction>(jsTestNamedAndIndexedSetterWithIdentifierPrototypeFunctionIndexedSetter), (intptr_t) (2) } },
 };
 
-const ClassInfo JSTestNamedAndIndexedSetterWithIdentifierPrototype::s_info = { "TestNamedAndIndexedSetterWithIdentifierPrototype", &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSTestNamedAndIndexedSetterWithIdentifierPrototype) };
+const ClassInfo JSTestNamedAndIndexedSetterWithIdentifierPrototype::s_info = { "TestNamedAndIndexedSetterWithIdentifier", &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSTestNamedAndIndexedSetterWithIdentifierPrototype) };
 
 void JSTestNamedAndIndexedSetterWithIdentifierPrototype::finishCreation(VM& vm)
 {
     Base::finishCreation(vm);
     reifyStaticProperties(vm, JSTestNamedAndIndexedSetterWithIdentifier::info(), JSTestNamedAndIndexedSetterWithIdentifierPrototypeTableValues, *this);
+    JSC_TO_STRING_TAG_WITHOUT_TRANSITION();
 }
 
 const ClassInfo JSTestNamedAndIndexedSetterWithIdentifier::s_info = { "TestNamedAndIndexedSetterWithIdentifier", &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSTestNamedAndIndexedSetterWithIdentifier) };
index b10fddc..a388647 100644 (file)
@@ -94,7 +94,7 @@ template<> JSValue JSTestNamedConstructorConstructor::prototypeForStructure(JSC:
 template<> void JSTestNamedConstructorConstructor::initializeProperties(VM& vm, JSDOMGlobalObject& globalObject)
 {
     putDirect(vm, vm.propertyNames->prototype, JSTestNamedConstructor::prototype(vm, globalObject), JSC::PropertyAttribute::DontDelete | JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
-    putDirect(vm, vm.propertyNames->name, jsNontrivialString(vm, String("TestNamedConstructor"_s)), JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
+    putDirect(vm, vm.propertyNames->name, jsNontrivialString(vm, "TestNamedConstructor"_s), JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
     putDirect(vm, vm.propertyNames->length, jsNumber(0), JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
 }
 
@@ -134,7 +134,7 @@ template<> JSValue JSTestNamedConstructorNamedConstructor::prototypeForStructure
 template<> void JSTestNamedConstructorNamedConstructor::initializeProperties(VM& vm, JSDOMGlobalObject& globalObject)
 {
     putDirect(vm, vm.propertyNames->prototype, JSTestNamedConstructor::prototype(vm, globalObject), JSC::PropertyAttribute::DontDelete | JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
-    putDirect(vm, vm.propertyNames->name, jsNontrivialString(vm, String("Audio"_s)), JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
+    putDirect(vm, vm.propertyNames->name, jsNontrivialString(vm, "Audio"_s), JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
     putDirect(vm, vm.propertyNames->length, jsNumber(0), JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
 }
 
@@ -147,12 +147,13 @@ static const HashTableValue JSTestNamedConstructorPrototypeTableValues[] =
     { "constructor", static_cast<unsigned>(JSC::PropertyAttribute::DontEnum), NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestNamedConstructorConstructor), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestNamedConstructorConstructor) } },
 };
 
-const ClassInfo JSTestNamedConstructorPrototype::s_info = { "TestNamedConstructorPrototype", &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSTestNamedConstructorPrototype) };
+const ClassInfo JSTestNamedConstructorPrototype::s_info = { "TestNamedConstructor", &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSTestNamedConstructorPrototype) };
 
 void JSTestNamedConstructorPrototype::finishCreation(VM& vm)
 {
     Base::finishCreation(vm);
     reifyStaticProperties(vm, JSTestNamedConstructor::info(), JSTestNamedConstructorPrototypeTableValues, *this);
+    JSC_TO_STRING_TAG_WITHOUT_TRANSITION();
 }
 
 const ClassInfo JSTestNamedConstructor::s_info = { "TestNamedConstructor", &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSTestNamedConstructor) };
index 665b877..ec67db4 100644 (file)
@@ -92,7 +92,7 @@ template<> JSValue JSTestNamedDeleterNoIdentifierConstructor::prototypeForStruct
 template<> void JSTestNamedDeleterNoIdentifierConstructor::initializeProperties(VM& vm, JSDOMGlobalObject& globalObject)
 {
     putDirect(vm, vm.propertyNames->prototype, JSTestNamedDeleterNoIdentifier::prototype(vm, globalObject), JSC::PropertyAttribute::DontDelete | JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
-    putDirect(vm, vm.propertyNames->name, jsNontrivialString(vm, String("TestNamedDeleterNoIdentifier"_s)), JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
+    putDirect(vm, vm.propertyNames->name, jsNontrivialString(vm, "TestNamedDeleterNoIdentifier"_s), JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
     putDirect(vm, vm.propertyNames->length, jsNumber(0), JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
 }
 
@@ -105,12 +105,13 @@ static const HashTableValue JSTestNamedDeleterNoIdentifierPrototypeTableValues[]
     { "constructor", static_cast<unsigned>(JSC::PropertyAttribute::DontEnum), NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestNamedDeleterNoIdentifierConstructor), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestNamedDeleterNoIdentifierConstructor) } },
 };
 
-const ClassInfo JSTestNamedDeleterNoIdentifierPrototype::s_info = { "TestNamedDeleterNoIdentifierPrototype", &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSTestNamedDeleterNoIdentifierPrototype) };
+const ClassInfo JSTestNamedDeleterNoIdentifierPrototype::s_info = { "TestNamedDeleterNoIdentifier", &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSTestNamedDeleterNoIdentifierPrototype) };
 
 void JSTestNamedDeleterNoIdentifierPrototype::finishCreation(VM& vm)
 {
     Base::finishCreation(vm);
     reifyStaticProperties(vm, JSTestNamedDeleterNoIdentifier::info(), JSTestNamedDeleterNoIdentifierPrototypeTableValues, *this);
+    JSC_TO_STRING_TAG_WITHOUT_TRANSITION();
 }
 
 const ClassInfo JSTestNamedDeleterNoIdentifier::s_info = { "TestNamedDeleterNoIdentifier", &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSTestNamedDeleterNoIdentifier) };
index cc02aae..fc3c9d0 100644 (file)
@@ -92,7 +92,7 @@ template<> JSValue JSTestNamedDeleterThrowingExceptionConstructor::prototypeForS
 template<> void JSTestNamedDeleterThrowingExceptionConstructor::initializeProperties(VM& vm, JSDOMGlobalObject& globalObject)
 {
     putDirect(vm, vm.propertyNames->prototype, JSTestNamedDeleterThrowingException::prototype(vm, globalObject), JSC::PropertyAttribute::DontDelete | JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
-    putDirect(vm, vm.propertyNames->name, jsNontrivialString(vm, String("TestNamedDeleterThrowingException"_s)), JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
+    putDirect(vm, vm.propertyNames->name, jsNontrivialString(vm, "TestNamedDeleterThrowingException"_s), JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
     putDirect(vm, vm.propertyNames->length, jsNumber(0), JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
 }
 
@@ -105,12 +105,13 @@ static const HashTableValue JSTestNamedDeleterThrowingExceptionPrototypeTableVal
     { "constructor", static_cast<unsigned>(JSC::PropertyAttribute::DontEnum), NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestNamedDeleterThrowingExceptionConstructor), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestNamedDeleterThrowingExceptionConstructor) } },
 };
 
-const ClassInfo JSTestNamedDeleterThrowingExceptionPrototype::s_info = { "TestNamedDeleterThrowingExceptionPrototype", &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSTestNamedDeleterThrowingExceptionPrototype) };
+const ClassInfo JSTestNamedDeleterThrowingExceptionPrototype::s_info = { "TestNamedDeleterThrowingException", &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSTestNamedDeleterThrowingExceptionPrototype) };
 
 void JSTestNamedDeleterThrowingExceptionPrototype::finishCreation(VM& vm)
 {
     Base::finishCreation(vm);
     reifyStaticProperties(vm, JSTestNamedDeleterThrowingException::info(), JSTestNamedDeleterThrowingExceptionPrototypeTableValues, *this);
+    JSC_TO_STRING_TAG_WITHOUT_TRANSITION();
 }
 
 const ClassInfo JSTestNamedDeleterThrowingException::s_info = { "TestNamedDeleterThrowingException", &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSTestNamedDeleterThrowingException) };
index 7e06d79..32f0618 100644 (file)
@@ -97,7 +97,7 @@ template<> JSValue JSTestNamedDeleterWithIdentifierConstructor::prototypeForStru
 template<> void JSTestNamedDeleterWithIdentifierConstructor::initializeProperties(VM& vm, JSDOMGlobalObject& globalObject)
 {
     putDirect(vm, vm.propertyNames->prototype, JSTestNamedDeleterWithIdentifier::prototype(vm, globalObject), JSC::PropertyAttribute::DontDelete | JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
-    putDirect(vm, vm.propertyNames->name, jsNontrivialString(vm, String("TestNamedDeleterWithIdentifier"_s)), JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
+    putDirect(vm, vm.propertyNames->name, jsNontrivialString(vm, "TestNamedDeleterWithIdentifier"_s), JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
     putDirect(vm, vm.propertyNames->length, jsNumber(0), JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
 }
 
@@ -111,12 +111,13 @@ static const HashTableValue JSTestNamedDeleterWithIdentifierPrototypeTableValues
     { "namedDeleter", static_cast<unsigned>(JSC::PropertyAttribute::Function), NoIntrinsic, { (intptr_t)static_cast<RawNativeFunction>(jsTestNamedDeleterWithIdentifierPrototypeFunctionNamedDeleter), (intptr_t) (1) } },
 };
 
-const ClassInfo JSTestNamedDeleterWithIdentifierPrototype::s_info = { "TestNamedDeleterWithIdentifierPrototype", &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSTestNamedDeleterWithIdentifierPrototype) };
+const ClassInfo JSTestNamedDeleterWithIdentifierPrototype::s_info = { "TestNamedDeleterWithIdentifier", &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSTestNamedDeleterWithIdentifierPrototype) };
 
 void JSTestNamedDeleterWithIdentifierPrototype::finishCreation(VM& vm)
 {
     Base::finishCreation(vm);
     reifyStaticProperties(vm, JSTestNamedDeleterWithIdentifier::info(), JSTestNamedDeleterWithIdentifierPrototypeTableValues, *this);
+    JSC_TO_STRING_TAG_WITHOUT_TRANSITION();
 }
 
 const ClassInfo JSTestNamedDeleterWithIdentifier::s_info = { "TestNamedDeleterWithIdentifier", &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSTestNamedDeleterWithIdentifier) };
index 6f7bfe8..73d3c0d 100644 (file)
@@ -93,7 +93,7 @@ template<> JSValue JSTestNamedDeleterWithIndexedGetterConstructor::prototypeForS
 template<> void JSTestNamedDeleterWithIndexedGetterConstructor::initializeProperties(VM& vm, JSDOMGlobalObject& globalObject)
 {
     putDirect(vm, vm.propertyNames->prototype, JSTestNamedDeleterWithIndexedGetter::prototype(vm, globalObject), JSC::PropertyAttribute::DontDelete | JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
-    putDirect(vm, vm.propertyNames->name, jsNontrivialString(vm, String("TestNamedDeleterWithIndexedGetter"_s)), JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
+    putDirect(vm, vm.propertyNames->name, jsNontrivialString(vm, "TestNamedDeleterWithIndexedGetter"_s), JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
     putDirect(vm, vm.propertyNames->length, jsNumber(0), JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
 }
 
@@ -106,12 +106,13 @@ static const HashTableValue JSTestNamedDeleterWithIndexedGetterPrototypeTableVal
     { "constructor", static_cast<unsigned>(JSC::PropertyAttribute::DontEnum), NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestNamedDeleterWithIndexedGetterConstructor), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestNamedDeleterWithIndexedGetterConstructor) } },
 };
 
-const ClassInfo JSTestNamedDeleterWithIndexedGetterPrototype::s_info = { "TestNamedDeleterWithIndexedGetterPrototype", &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSTestNamedDeleterWithIndexedGetterPrototype) };
+const ClassInfo JSTestNamedDeleterWithIndexedGetterPrototype::s_info = { "TestNamedDeleterWithIndexedGetter", &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSTestNamedDeleterWithIndexedGetterPrototype) };
 
 void JSTestNamedDeleterWithIndexedGetterPrototype::finishCreation(VM& vm)
 {
     Base::finishCreation(vm);
     reifyStaticProperties(vm, JSTestNamedDeleterWithIndexedGetter::info(), JSTestNamedDeleterWithIndexedGetterPrototypeTableValues, *this);
+    JSC_TO_STRING_TAG_WITHOUT_TRANSITION();
 }
 
 const ClassInfo JSTestNamedDeleterWithIndexedGetter::s_info = { "TestNamedDeleterWithIndexedGetter", &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSTestNamedDeleterWithIndexedGetter) };
index 3cd29a2..f69a255 100644 (file)
@@ -92,7 +92,7 @@ template<> JSValue JSTestNamedGetterCallWithConstructor::prototypeForStructure(J
 template<> void JSTestNamedGetterCallWithConstructor::initializeProperties(VM& vm, JSDOMGlobalObject& globalObject)
 {
     putDirect(vm, vm.propertyNames->prototype, JSTestNamedGetterCallWith::prototype(vm, globalObject), JSC::PropertyAttribute::DontDelete | JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
-    putDirect(vm, vm.propertyNames->name, jsNontrivialString(vm, String("TestNamedGetterCallWith"_s)), JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
+    putDirect(vm, vm.propertyNames->name, jsNontrivialString(vm, "TestNamedGetterCallWith"_s), JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
     putDirect(vm, vm.propertyNames->length, jsNumber(0), JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
 }
 
@@ -105,12 +105,13 @@ static const HashTableValue JSTestNamedGetterCallWithPrototypeTableValues[] =
     { "constructor", static_cast<unsigned>(JSC::PropertyAttribute::DontEnum), NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestNamedGetterCallWithConstructor), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestNamedGetterCallWithConstructor) } },
 };
 
-const ClassInfo JSTestNamedGetterCallWithPrototype::s_info = { "TestNamedGetterCallWithPrototype", &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSTestNamedGetterCallWithPrototype) };
+const ClassInfo JSTestNamedGetterCallWithPrototype::s_info = { "TestNamedGetterCallWith", &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSTestNamedGetterCallWithPrototype) };
 
 void JSTestNamedGetterCallWithPrototype::finishCreation(VM& vm)
 {
     Base::finishCreation(vm);
     reifyStaticProperties(vm, JSTestNamedGetterCallWith::info(), JSTestNamedGetterCallWithPrototypeTableValues, *this);
+    JSC_TO_STRING_TAG_WITHOUT_TRANSITION();
 }
 
 const ClassInfo JSTestNamedGetterCallWith::s_info = { "TestNamedGetterCallWith", &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSTestNamedGetterCallWith) };
index d416d04..9c06f51 100644 (file)
@@ -92,7 +92,7 @@ template<> JSValue JSTestNamedGetterNoIdentifierConstructor::prototypeForStructu
 template<> void JSTestNamedGetterNoIdentifierConstructor::initializeProperties(VM& vm, JSDOMGlobalObject& globalObject)
 {
     putDirect(vm, vm.propertyNames->prototype, JSTestNamedGetterNoIdentifier::prototype(vm, globalObject), JSC::PropertyAttribute::DontDelete | JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
-    putDirect(vm, vm.propertyNames->name, jsNontrivialString(vm, String("TestNamedGetterNoIdentifier"_s)), JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
+    putDirect(vm, vm.propertyNames->name, jsNontrivialString(vm, "TestNamedGetterNoIdentifier"_s), JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
     putDirect(vm, vm.propertyNames->length, jsNumber(0), JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
 }
 
@@ -105,12 +105,13 @@ static const HashTableValue JSTestNamedGetterNoIdentifierPrototypeTableValues[]
     { "constructor", static_cast<unsigned>(JSC::PropertyAttribute::DontEnum), NoIntrinsic, { (intptr_t)static_cast<Prop