<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[169979] trunk/Source</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/169979">169979</a></dd>
<dt>Author</dt> <dd>weinig@apple.com</dd>
<dt>Date</dt> <dd>2014-06-14 13:38:45 -0700 (Sat, 14 Jun 2014)</dd>
</dl>

<h3>Log Message</h3>
<pre>Store DOM constants directly in the JS object rather than jumping through a custom accessor
https://bugs.webkit.org/show_bug.cgi?id=133898

Reviewed by Oliver Hunt.


Source/JavaScriptCore: 
* runtime/Lookup.h:
(JSC::HashTableValue::attributes):
Switch attributes to be stored as an unsigned rather than an unsigned char, since there is no difference in memory use
and will make adding more flags possibles.

(JSC::HashTableValue::propertyGetter):
(JSC::HashTableValue::propertyPutter):
Change assertion to use BuiltinOrFunctionOrConstant.

(JSC::HashTableValue::constantInteger):
Added.

(JSC::getStaticPropertySlot):
(JSC::getStaticValueSlot):
Use PropertySlot::setValue() for constants during static lookup.

(JSC::reifyStaticProperties):
Put the constant directly on the object when eagerly reifying.

* runtime/PropertySlot.h:
Add ConstantInteger flag and BuiltinOrFunctionOrConstant helper.

Source/WebCore: 
Instead of implementing constants as custom accessors that just happen to return a value,
we now store the constant directly in the HashTableValue array (where the GetValueFunc used
to be). 
        
- For the case where the constant is accessed via the static table (still in use for instances 
  and some prototypes), the static lookup function will set the value on the property slot,
  instead of passing a function pointer.
- For the case where the constant is eagerly reified (most prototypes and all constructors) the
  constant is put directly in the object.

In micro benchmarks this looks to be around a 4x speedup on the use of DOM constants.

This also removes support for constant strings in IDL, which we had no uses of.

* bindings/scripts/CodeGeneratorJS.pm:
(GenerateHeader):
Remove code to generate forward declaration of constant accessor functions.

(GenerateImplementation):
Remove code to generate implementation of constant accessor functions.

(GenerateHashTableValueArray):
Plant the constant directly in the value array.

* bindings/scripts/IDLParser.pm:
(parseConstValue):
Remove support for constant strings.

* bindings/scripts/test/JS/JSTestInterface.cpp:
* bindings/scripts/test/JS/JSTestInterface.h:
* bindings/scripts/test/JS/JSTestObj.cpp:
* bindings/scripts/test/JS/JSTestObj.h:
* bindings/scripts/test/ObjC/DOMTestObj.h:
* bindings/scripts/test/TestObj.idl:
Update test results.</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceJavaScriptCoreChangeLog">trunk/Source/JavaScriptCore/ChangeLog</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeLookuph">trunk/Source/JavaScriptCore/runtime/Lookup.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimePropertySloth">trunk/Source/JavaScriptCore/runtime/PropertySlot.h</a></li>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptsCodeGeneratorJSpm">trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptsIDLParserpm">trunk/Source/WebCore/bindings/scripts/IDLParser.pm</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestInterfacecpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterface.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestInterfaceh">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterface.h</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestObjcpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestObjh">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestObj.h</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestObjCDOMTestObjh">trunk/Source/WebCore/bindings/scripts/test/ObjC/DOMTestObj.h</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestTestObjidl">trunk/Source/WebCore/bindings/scripts/test/TestObj.idl</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceJavaScriptCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/ChangeLog (169978 => 169979)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/ChangeLog        2014-06-14 20:33:49 UTC (rev 169978)
+++ trunk/Source/JavaScriptCore/ChangeLog        2014-06-14 20:38:45 UTC (rev 169979)
</span><span class="lines">@@ -1,3 +1,32 @@
</span><ins>+2014-06-13  Sam Weinig  &lt;sam@webkit.org&gt;
+
+        Store DOM constants directly in the JS object rather than jumping through a custom accessor
+        https://bugs.webkit.org/show_bug.cgi?id=133898
+
+        Reviewed by Oliver Hunt.
+
+        * runtime/Lookup.h:
+        (JSC::HashTableValue::attributes):
+        Switch attributes to be stored as an unsigned rather than an unsigned char, since there is no difference in memory use
+        and will make adding more flags possibles.
+
+        (JSC::HashTableValue::propertyGetter):
+        (JSC::HashTableValue::propertyPutter):
+        Change assertion to use BuiltinOrFunctionOrConstant.
+
+        (JSC::HashTableValue::constantInteger):
+        Added.
+
+        (JSC::getStaticPropertySlot):
+        (JSC::getStaticValueSlot):
+        Use PropertySlot::setValue() for constants during static lookup.
+
+        (JSC::reifyStaticProperties):
+        Put the constant directly on the object when eagerly reifying.
+
+        * runtime/PropertySlot.h:
+        Add ConstantInteger flag and BuiltinOrFunctionOrConstant helper.
+
</ins><span class="cx"> 2014-06-14  Michael Saboff  &lt;msaboff@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         operationCreateArguments could cause a GC during OSR exit
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeLookuph"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/Lookup.h (169978 => 169979)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/Lookup.h        2014-06-14 20:33:49 UTC (rev 169978)
+++ trunk/Source/JavaScriptCore/runtime/Lookup.h        2014-06-14 20:38:45 UTC (rev 169979)
</span><span class="lines">@@ -24,9 +24,9 @@
</span><span class="cx"> #include &quot;BatchedTransitionOptimizer.h&quot;
</span><span class="cx"> #include &quot;CallFrame.h&quot;
</span><span class="cx"> #include &quot;CustomGetterSetter.h&quot;
</span><ins>+#include &quot;Identifier.h&quot;
</ins><span class="cx"> #include &quot;IdentifierInlines.h&quot;
</span><span class="cx"> #include &quot;Intrinsic.h&quot;
</span><del>-#include &quot;Identifier.h&quot;
</del><span class="cx"> #include &quot;JSGlobalObject.h&quot;
</span><span class="cx"> #include &quot;PropertySlot.h&quot;
</span><span class="cx"> #include &quot;PutPropertySlot.h&quot;
</span><span class="lines">@@ -47,31 +47,27 @@
</span><span class="cx">     // Hash table generated by the create_hash_table script.
</span><span class="cx">     struct HashTableValue {
</span><span class="cx">         const char* m_key; // property name
</span><del>-        unsigned char m_attributes; // JSObject attributes
</del><ins>+        unsigned m_attributes; // JSObject attributes
</ins><span class="cx">         Intrinsic m_intrinsic;
</span><span class="cx">         intptr_t m_value1;
</span><span class="cx">         intptr_t m_value2;
</span><span class="cx"> 
</span><del>-        unsigned char attributes() const { return m_attributes; }
</del><ins>+        unsigned attributes() const { return m_attributes; }
</ins><span class="cx"> 
</span><del>-        Intrinsic intrinsic() const
-        {
-            ASSERT(m_attributes &amp; Function);
-            return m_intrinsic;
-        }
-
</del><ins>+        Intrinsic intrinsic() const { ASSERT(m_attributes &amp; Function); return m_intrinsic; }
</ins><span class="cx">         BuiltinGenerator builtinGenerator() const { ASSERT(m_attributes &amp; Builtin); return reinterpret_cast&lt;BuiltinGenerator&gt;(m_value1); }
</span><span class="cx">         NativeFunction function() const { ASSERT(m_attributes &amp; Function); return reinterpret_cast&lt;NativeFunction&gt;(m_value1); }
</span><span class="cx">         unsigned char functionLength() const { ASSERT(m_attributes &amp; Function); return static_cast&lt;unsigned char&gt;(m_value2); }
</span><span class="cx"> 
</span><del>-        GetFunction propertyGetter() const { ASSERT(!(m_attributes &amp; BuiltinOrFunction)); return reinterpret_cast&lt;GetFunction&gt;(m_value1); }
-        PutFunction propertyPutter() const { ASSERT(!(m_attributes &amp; BuiltinOrFunction)); return reinterpret_cast&lt;PutFunction&gt;(m_value2); }
</del><ins>+        GetFunction propertyGetter() const { ASSERT(!(m_attributes &amp; BuiltinOrFunctionOrConstant)); return reinterpret_cast&lt;GetFunction&gt;(m_value1); }
+        PutFunction propertyPutter() const { ASSERT(!(m_attributes &amp; BuiltinOrFunctionOrConstant)); return reinterpret_cast&lt;PutFunction&gt;(m_value2); }
</ins><span class="cx"> 
</span><ins>+        intptr_t constantInteger() const { ASSERT(m_attributes &amp; ConstantInteger); return m_value1; }
+
</ins><span class="cx">         intptr_t lexerValue() const { ASSERT(!m_attributes); return m_value1; }
</span><span class="cx">     };
</span><span class="cx"> 
</span><span class="cx">     struct HashTable {
</span><del>-
</del><span class="cx">         mutable int numberOfValues;
</span><span class="cx">         int indexMask;
</span><span class="cx">         bool hasSetterOrReadonlyProperties;
</span><span class="lines">@@ -225,6 +221,11 @@
</span><span class="cx">         if (entry-&gt;attributes() &amp; BuiltinOrFunction)
</span><span class="cx">             return setUpStaticFunctionSlot(exec, entry, thisObj, propertyName, slot);
</span><span class="cx"> 
</span><ins>+        if (entry-&gt;attributes() &amp; ConstantInteger) {
+            slot.setValue(thisObj, entry-&gt;attributes(), jsNumber(entry-&gt;constantInteger()));
+            return true;
+        }
+    
</ins><span class="cx">         slot.setCacheableCustom(thisObj, entry-&gt;attributes(), entry-&gt;propertyGetter());
</span><span class="cx">         return true;
</span><span class="cx">     }
</span><span class="lines">@@ -261,6 +262,11 @@
</span><span class="cx"> 
</span><span class="cx">         ASSERT(!(entry-&gt;attributes() &amp; BuiltinOrFunction));
</span><span class="cx"> 
</span><ins>+        if (entry-&gt;attributes() &amp; ConstantInteger) {
+            slot.setValue(thisObj, entry-&gt;attributes(), jsNumber(entry-&gt;constantInteger()));
+            return true;
+        }
+
</ins><span class="cx">         slot.setCacheableCustom(thisObj, entry-&gt;attributes(), entry-&gt;propertyGetter());
</span><span class="cx">         return true;
</span><span class="cx">     }
</span><span class="lines">@@ -314,6 +320,11 @@
</span><span class="cx">                 continue;
</span><span class="cx">             }
</span><span class="cx"> 
</span><ins>+            if (value.attributes() &amp; ConstantInteger) {
+                thisObj.putDirect(vm, propertyName, jsNumber(value.constantInteger()), value.attributes());
+                continue;
+            }
+
</ins><span class="cx">             if (value.attributes() &amp; Accessor) {
</span><span class="cx">                 RELEASE_ASSERT_NOT_REACHED();
</span><span class="cx">                 continue;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimePropertySloth"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/PropertySlot.h (169978 => 169979)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/PropertySlot.h        2014-06-14 20:33:49 UTC (rev 169978)
+++ trunk/Source/JavaScriptCore/runtime/PropertySlot.h        2014-06-14 20:38:45 UTC (rev 169979)
</span><span class="lines">@@ -44,7 +44,9 @@
</span><span class="cx">     Accessor          = 1 &lt;&lt; 5,  // property is a getter/setter
</span><span class="cx">     CustomAccessor    = 1 &lt;&lt; 6,
</span><span class="cx">     Builtin           = 1 &lt;&lt; 7, // property is a builtin function - only used by static hashtables
</span><ins>+    ConstantInteger   = 1 &lt;&lt; 8, // property is a constant integer - only used by static hashtables
</ins><span class="cx">     BuiltinOrFunction = Builtin | Function, // helper only used by static hashtables
</span><ins>+    BuiltinOrFunctionOrConstant = Builtin | Function | ConstantInteger, // helper only used by static hashtables
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> class PropertySlot {
</span></span></pre></div>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (169978 => 169979)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2014-06-14 20:33:49 UTC (rev 169978)
+++ trunk/Source/WebCore/ChangeLog        2014-06-14 20:38:45 UTC (rev 169979)
</span><span class="lines">@@ -1,3 +1,46 @@
</span><ins>+2014-06-13  Sam Weinig  &lt;sam@webkit.org&gt;
+
+        Store DOM constants directly in the JS object rather than jumping through a custom accessor
+        https://bugs.webkit.org/show_bug.cgi?id=133898
+
+        Reviewed by Oliver Hunt.
+
+        Instead of implementing constants as custom accessors that just happen to return a value,
+        we now store the constant directly in the HashTableValue array (where the GetValueFunc used
+        to be). 
+        
+        - For the case where the constant is accessed via the static table (still in use for instances 
+          and some prototypes), the static lookup function will set the value on the property slot,
+          instead of passing a function pointer.
+        - For the case where the constant is eagerly reified (most prototypes and all constructors) the
+          constant is put directly in the object.
+
+        In micro benchmarks this looks to be around a 4x speedup on the use of DOM constants.
+
+        This also removes support for constant strings in IDL, which we had no uses of.
+
+        * bindings/scripts/CodeGeneratorJS.pm:
+        (GenerateHeader):
+        Remove code to generate forward declaration of constant accessor functions.
+
+        (GenerateImplementation):
+        Remove code to generate implementation of constant accessor functions.
+
+        (GenerateHashTableValueArray):
+        Plant the constant directly in the value array.
+
+        * bindings/scripts/IDLParser.pm:
+        (parseConstValue):
+        Remove support for constant strings.
+
+        * bindings/scripts/test/JS/JSTestInterface.cpp:
+        * bindings/scripts/test/JS/JSTestInterface.h:
+        * bindings/scripts/test/JS/JSTestObj.cpp:
+        * bindings/scripts/test/JS/JSTestObj.h:
+        * bindings/scripts/test/ObjC/DOMTestObj.h:
+        * bindings/scripts/test/TestObj.idl:
+        Update test results.
+
</ins><span class="cx"> 2014-06-14  Anders Carlsson  &lt;andersca@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Simplify Document::processHttpEquiv
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptsCodeGeneratorJSpm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm (169978 => 169979)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm        2014-06-14 20:33:49 UTC (rev 169978)
+++ trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm        2014-06-14 20:38:45 UTC (rev 169979)
</span><span class="lines">@@ -1297,17 +1297,6 @@
</span><span class="cx">         }
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    if ($numConstants &gt; 0) {
-        push(@headerContent,&quot;// Constants\n\n&quot;);
-        foreach my $constant (@{$interface-&gt;constants}) {
-            my $conditionalString = $codeGenerator-&gt;GenerateConditionalString($constant);
-            push(@headerContent, &quot;#if ${conditionalString}\n&quot;) if $conditionalString;
-            my $getter = &quot;js&quot; . $interfaceName . $codeGenerator-&gt;WK_ucfirst($constant-&gt;name);
-            push(@headerContent, &quot;JSC::EncodedJSValue ${getter}(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);\n&quot;);
-            push(@headerContent, &quot;#endif\n&quot;) if $conditionalString;
-        }
-    }
-
</del><span class="cx">     my $conditionalString = $codeGenerator-&gt;GenerateConditionalString($interface);
</span><span class="cx">     push(@headerContent, &quot;\n} // namespace WebCore\n\n&quot;);
</span><span class="cx">     push(@headerContent, &quot;#endif // ${conditionalString}\n\n&quot;) if $conditionalString;
</span><span class="lines">@@ -1789,14 +1778,12 @@
</span><span class="cx">         my @hashSpecials = ();
</span><span class="cx">         my %conditionals = ();
</span><span class="cx"> 
</span><del>-        # FIXME: we should not need a function for every constant.
</del><span class="cx">         foreach my $constant (@{$interface-&gt;constants}) {
</span><span class="cx">             my $name = $constant-&gt;name;
</span><span class="cx">             push(@hashKeys, $name);
</span><del>-            my $getter = &quot;js&quot; . $interfaceName . $codeGenerator-&gt;WK_ucfirst($name);
-            push(@hashValue1, $getter);
</del><ins>+            push(@hashValue1, $constant-&gt;value);
</ins><span class="cx">             push(@hashValue2, &quot;0&quot;);
</span><del>-            push(@hashSpecials, &quot;DontDelete | ReadOnly&quot;);
</del><ins>+            push(@hashSpecials, &quot;DontDelete | ReadOnly | ConstantInteger&quot;);
</ins><span class="cx"> 
</span><span class="cx">             my $implementedBy = $constant-&gt;extendedAttributes-&gt;{&quot;ImplementedBy&quot;};
</span><span class="cx">             if ($implementedBy) {
</span><span class="lines">@@ -1892,14 +1879,13 @@
</span><span class="cx">         \%conditionals);
</span><span class="cx">     my $hashSize = $numFunctions + $numConstants + $numPrototypeAttributes;
</span><span class="cx"> 
</span><del>-    # FIXME: we should not need a function for every constant.
</del><span class="cx">     foreach my $constant (@{$interface-&gt;constants}) {
</span><span class="cx">         my $name = $constant-&gt;name;
</span><ins>+
</ins><span class="cx">         push(@hashKeys, $name);
</span><del>-        my $getter = &quot;js&quot; . $interfaceName . $codeGenerator-&gt;WK_ucfirst($name);
-        push(@hashValue1, $getter);
</del><ins>+        push(@hashValue1, $constant-&gt;value);
</ins><span class="cx">         push(@hashValue2, &quot;0&quot;);
</span><del>-        push(@hashSpecials, &quot;DontDelete | ReadOnly&quot;);
</del><ins>+        push(@hashSpecials, &quot;DontDelete | ReadOnly | ConstantInteger&quot;);
</ins><span class="cx"> 
</span><span class="cx">         my $conditional = $constant-&gt;extendedAttributes-&gt;{&quot;Conditional&quot;};
</span><span class="cx">         if ($conditional) {
</span><span class="lines">@@ -2884,32 +2870,6 @@
</span><span class="cx">     # Uncomment the below line to temporarily enforce generated mark functions when cached attributes are present.
</span><span class="cx">     # die &quot;Can't generate binding for class with cached attribute and custom mark.&quot; if (($numCachedAttributes &gt; 0) and ($interface-&gt;extendedAttributes-&gt;{&quot;JSCustomMarkFunction&quot;}));
</span><span class="cx"> 
</span><del>-    if ($numConstants &gt; 0) {
-        push(@implContent, &quot;// Constant getters\n\n&quot;);
-
-        foreach my $constant (@{$interface-&gt;constants}) {
-            my $getter = &quot;js&quot; . $interfaceName . $codeGenerator-&gt;WK_ucfirst($constant-&gt;name);
-            my $conditional = $constant-&gt;extendedAttributes-&gt;{&quot;Conditional&quot;};
-
-            if ($conditional) {
-                my $conditionalString = $codeGenerator-&gt;GenerateConditionalStringFromAttributeValue($conditional);
-                push(@implContent, &quot;#if ${conditionalString}\n&quot;);
-            }
-
-            if ($constant-&gt;type eq &quot;DOMString&quot;) {
-                push(@implContent, &quot;EncodedJSValue ${getter}(ExecState* exec, JSObject*, EncodedJSValue, PropertyName)\n&quot;);
-                push(@implContent, &quot;{\n&quot;);
-                push(@implContent, &quot;    return JSValue::encode(jsStringOrNull(exec, String(&quot; . $constant-&gt;value . &quot;)));\n&quot;);
-            } else {
-                push(@implContent, &quot;EncodedJSValue ${getter}(ExecState*, JSObject*, EncodedJSValue, PropertyName)\n&quot;);
-                push(@implContent, &quot;{\n&quot;);
-                push(@implContent, &quot;    return JSValue::encode(jsNumber(&quot; . $constant-&gt;value . &quot;));\n&quot;);
-            }
-            push(@implContent, &quot;}\n\n&quot;);
-            push(@implContent, &quot;#endif\n&quot;) if $conditional;
-        }
-    }
-
</del><span class="cx">     if ($indexedGetterFunction) {
</span><span class="cx">         if ($indexedGetterFunction-&gt;signature-&gt;type eq &quot;DOMString&quot;) {
</span><span class="cx">             $implIncludes{&quot;URL.h&quot;} = 1;
</span><span class="lines">@@ -4080,6 +4040,8 @@
</span><span class="cx">         
</span><span class="cx">         if (&quot;@$specials[$i]&quot; =~ m/Function/) {
</span><span class="cx">             $firstTargetType = &quot;static_cast&lt;NativeFunction&gt;&quot;;
</span><ins>+        } elsif (&quot;@$specials[$i]&quot; =~ m/ConstantInteger/) {
+            $firstTargetType = &quot;&quot;;
</ins><span class="cx">         } else {
</span><span class="cx">             $firstTargetType = &quot;static_cast&lt;PropertySlot::GetValueFunc&gt;&quot;;
</span><span class="cx">             $secondTargetType = &quot;static_cast&lt;PutPropertySlot::PutValueFunc&gt;&quot;;
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptsIDLParserpm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/IDLParser.pm (169978 => 169979)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/IDLParser.pm        2014-06-14 20:33:49 UTC (rev 169978)
+++ trunk/Source/WebCore/bindings/scripts/IDLParser.pm        2014-06-14 20:38:45 UTC (rev 169979)
</span><span class="lines">@@ -905,10 +905,6 @@
</span><span class="cx">     if ($next-&gt;type() == FloatToken || $next-&gt;value() =~ /$nextConstValue_2/) {
</span><span class="cx">         return $self-&gt;parseFloatLiteral();
</span><span class="cx">     }
</span><del>-    # backward compatibility
-    if ($next-&gt;type() == StringToken) {
-        return $self-&gt;getToken()-&gt;value();
-    }
</del><span class="cx">     if ($next-&gt;type() == IntegerToken) {
</span><span class="cx">         return $self-&gt;getToken()-&gt;value();
</span><span class="cx">     }
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestInterfacecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterface.cpp (169978 => 169979)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterface.cpp        2014-06-14 20:33:49 UTC (rev 169978)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterface.cpp        2014-06-14 20:38:45 UTC (rev 169979)
</span><span class="lines">@@ -93,22 +93,22 @@
</span><span class="cx"> static const HashTableValue JSTestInterfaceConstructorTableValues[] =
</span><span class="cx"> {
</span><span class="cx"> #if ENABLE(Condition22) || ENABLE(Condition23)
</span><del>-    { &quot;IMPLEMENTSCONSTANT1&quot;, DontDelete | ReadOnly, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestInterfaceIMPLEMENTSCONSTANT1), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(0) },
</del><ins>+    { &quot;IMPLEMENTSCONSTANT1&quot;, DontDelete | ReadOnly | ConstantInteger, NoIntrinsic, (intptr_t)(1), (intptr_t) (0) },
</ins><span class="cx"> #else
</span><span class="cx">     { 0, 0, NoIntrinsic, 0, 0 },
</span><span class="cx"> #endif
</span><span class="cx"> #if ENABLE(Condition22) || ENABLE(Condition23)
</span><del>-    { &quot;IMPLEMENTSCONSTANT2&quot;, DontDelete | ReadOnly, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestInterfaceIMPLEMENTSCONSTANT2), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(0) },
</del><ins>+    { &quot;IMPLEMENTSCONSTANT2&quot;, DontDelete | ReadOnly | ConstantInteger, NoIntrinsic, (intptr_t)(2), (intptr_t) (0) },
</ins><span class="cx"> #else
</span><span class="cx">     { 0, 0, NoIntrinsic, 0, 0 },
</span><span class="cx"> #endif
</span><span class="cx"> #if ENABLE(Condition11) || ENABLE(Condition12)
</span><del>-    { &quot;SUPPLEMENTALCONSTANT1&quot;, DontDelete | ReadOnly, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestInterfaceSUPPLEMENTALCONSTANT1), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(0) },
</del><ins>+    { &quot;SUPPLEMENTALCONSTANT1&quot;, DontDelete | ReadOnly | ConstantInteger, NoIntrinsic, (intptr_t)(1), (intptr_t) (0) },
</ins><span class="cx"> #else
</span><span class="cx">     { 0, 0, NoIntrinsic, 0, 0 },
</span><span class="cx"> #endif
</span><span class="cx"> #if ENABLE(Condition11) || ENABLE(Condition12)
</span><del>-    { &quot;SUPPLEMENTALCONSTANT2&quot;, DontDelete | ReadOnly, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestInterfaceSUPPLEMENTALCONSTANT2), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(0) },
</del><ins>+    { &quot;SUPPLEMENTALCONSTANT2&quot;, DontDelete | ReadOnly | ConstantInteger, NoIntrinsic, (intptr_t)(2), (intptr_t) (0) },
</ins><span class="cx"> #else
</span><span class="cx">     { 0, 0, NoIntrinsic, 0, 0 },
</span><span class="cx"> #endif
</span><span class="lines">@@ -311,22 +311,22 @@
</span><span class="cx">     { 0, 0, NoIntrinsic, 0, 0 },
</span><span class="cx"> #endif
</span><span class="cx"> #if ENABLE(Condition22) || ENABLE(Condition23)
</span><del>-    { &quot;IMPLEMENTSCONSTANT1&quot;, DontDelete | ReadOnly, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestInterfaceIMPLEMENTSCONSTANT1), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(0) },
</del><ins>+    { &quot;IMPLEMENTSCONSTANT1&quot;, DontDelete | ReadOnly | ConstantInteger, NoIntrinsic, (intptr_t)(1), (intptr_t) (0) },
</ins><span class="cx"> #else
</span><span class="cx">     { 0, 0, NoIntrinsic, 0, 0 },
</span><span class="cx"> #endif
</span><span class="cx"> #if ENABLE(Condition22) || ENABLE(Condition23)
</span><del>-    { &quot;IMPLEMENTSCONSTANT2&quot;, DontDelete | ReadOnly, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestInterfaceIMPLEMENTSCONSTANT2), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(0) },
</del><ins>+    { &quot;IMPLEMENTSCONSTANT2&quot;, DontDelete | ReadOnly | ConstantInteger, NoIntrinsic, (intptr_t)(2), (intptr_t) (0) },
</ins><span class="cx"> #else
</span><span class="cx">     { 0, 0, NoIntrinsic, 0, 0 },
</span><span class="cx"> #endif
</span><span class="cx"> #if ENABLE(Condition11) || ENABLE(Condition12)
</span><del>-    { &quot;SUPPLEMENTALCONSTANT1&quot;, DontDelete | ReadOnly, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestInterfaceSUPPLEMENTALCONSTANT1), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(0) },
</del><ins>+    { &quot;SUPPLEMENTALCONSTANT1&quot;, DontDelete | ReadOnly | ConstantInteger, NoIntrinsic, (intptr_t)(1), (intptr_t) (0) },
</ins><span class="cx"> #else
</span><span class="cx">     { 0, 0, NoIntrinsic, 0, 0 },
</span><span class="cx"> #endif
</span><span class="cx"> #if ENABLE(Condition11) || ENABLE(Condition12)
</span><del>-    { &quot;SUPPLEMENTALCONSTANT2&quot;, DontDelete | ReadOnly, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestInterfaceSUPPLEMENTALCONSTANT2), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(0) },
</del><ins>+    { &quot;SUPPLEMENTALCONSTANT2&quot;, DontDelete | ReadOnly | ConstantInteger, NoIntrinsic, (intptr_t)(2), (intptr_t) (0) },
</ins><span class="cx"> #else
</span><span class="cx">     { 0, 0, NoIntrinsic, 0, 0 },
</span><span class="cx"> #endif
</span><span class="lines">@@ -900,36 +900,6 @@
</span><span class="cx"> 
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-// Constant getters
-
-#if ENABLE(Condition22) || ENABLE(Condition23)
-EncodedJSValue jsTestInterfaceIMPLEMENTSCONSTANT1(ExecState*, JSObject*, EncodedJSValue, PropertyName)
-{
-    return JSValue::encode(jsNumber(1));
-}
-
-#endif
-#if ENABLE(Condition22) || ENABLE(Condition23)
-EncodedJSValue jsTestInterfaceIMPLEMENTSCONSTANT2(ExecState*, JSObject*, EncodedJSValue, PropertyName)
-{
-    return JSValue::encode(jsNumber(2));
-}
-
-#endif
-#if ENABLE(Condition11) || ENABLE(Condition12)
-EncodedJSValue jsTestInterfaceSUPPLEMENTALCONSTANT1(ExecState*, JSObject*, EncodedJSValue, PropertyName)
-{
-    return JSValue::encode(jsNumber(1));
-}
-
-#endif
-#if ENABLE(Condition11) || ENABLE(Condition12)
-EncodedJSValue jsTestInterfaceSUPPLEMENTALCONSTANT2(ExecState*, JSObject*, EncodedJSValue, PropertyName)
-{
-    return JSValue::encode(jsNumber(2));
-}
-
-#endif
</del><span class="cx"> bool JSTestInterfaceOwner::isReachableFromOpaqueRoots(JSC::Handle&lt;JSC::Unknown&gt; handle, void*, SlotVisitor&amp; visitor)
</span><span class="cx"> {
</span><span class="cx">     JSTestInterface* jsTestInterface = jsCast&lt;JSTestInterface*&gt;(handle.slot()-&gt;asCell());
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestInterfaceh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterface.h (169978 => 169979)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterface.h        2014-06-14 20:33:49 UTC (rev 169978)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterface.h        2014-06-14 20:38:45 UTC (rev 169979)
</span><span class="lines">@@ -247,21 +247,7 @@
</span><span class="cx"> void setJSTestInterfaceSupplementalNode(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
</span><span class="cx"> #endif
</span><span class="cx"> JSC::EncodedJSValue jsTestInterfaceConstructor(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
</span><del>-// Constants
</del><span class="cx"> 
</span><del>-#if ENABLE(Condition22) || ENABLE(Condition23)
-JSC::EncodedJSValue jsTestInterfaceIMPLEMENTSCONSTANT1(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-#endif
-#if ENABLE(Condition22) || ENABLE(Condition23)
-JSC::EncodedJSValue jsTestInterfaceIMPLEMENTSCONSTANT2(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-#endif
-#if ENABLE(Condition11) || ENABLE(Condition12)
-JSC::EncodedJSValue jsTestInterfaceSUPPLEMENTALCONSTANT1(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-#endif
-#if ENABLE(Condition11) || ENABLE(Condition12)
-JSC::EncodedJSValue jsTestInterfaceSUPPLEMENTALCONSTANT2(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-#endif
-
</del><span class="cx"> } // namespace WebCore
</span><span class="cx"> 
</span><span class="cx"> #endif // ENABLE(Condition1) || ENABLE(Condition2)
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestObjcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp (169978 => 169979)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp        2014-06-14 20:33:49 UTC (rev 169978)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp        2014-06-14 20:38:45 UTC (rev 169979)
</span><span class="lines">@@ -122,10 +122,10 @@
</span><span class="cx"> static const HashTable JSTestObjTable = { 6, 15, true, JSTestObjTableValues, 0, JSTestObjTableIndex };
</span><span class="cx"> /* Hash table for constructor */
</span><span class="cx"> 
</span><del>-static const struct CompactHashIndex JSTestObjConstructorTableIndex[39] = {
</del><ins>+static const struct CompactHashIndex JSTestObjConstructorTableIndex[38] = {
</ins><span class="cx">     { -1, -1 },
</span><del>-    { 9, 34 },
-    { 21, -1 },
</del><ins>+    { 8, 34 },
+    { 20, -1 },
</ins><span class="cx">     { 2, -1 },
</span><span class="cx">     { 1, -1 },
</span><span class="cx">     { -1, -1 },
</span><span class="lines">@@ -133,8 +133,8 @@
</span><span class="cx">     { -1, -1 },
</span><span class="cx">     { -1, -1 },
</span><span class="cx">     { 0, -1 },
</span><del>-    { 12, -1 },
-    { 16, -1 },
</del><ins>+    { 11, -1 },
+    { 15, -1 },
</ins><span class="cx">     { 5, 32 },
</span><span class="cx">     { -1, -1 },
</span><span class="cx">     { -1, -1 },
</span><span class="lines">@@ -142,49 +142,47 @@
</span><span class="cx">     { -1, -1 },
</span><span class="cx">     { -1, -1 },
</span><span class="cx">     { -1, -1 },
</span><del>-    { 10, -1 },
-    { 7, 36 },
-    { 15, -1 },
</del><ins>+    { 9, -1 },
+    { 18, 37 },
+    { 14, -1 },
</ins><span class="cx">     { 3, -1 },
</span><span class="cx">     { -1, -1 },
</span><del>-    { 11, 33 },
</del><ins>+    { 10, 33 },
</ins><span class="cx">     { -1, -1 },
</span><span class="cx">     { -1, -1 },
</span><del>-    { 8, 37 },
-    { 18, -1 },
</del><ins>+    { 7, 36 },
+    { 17, -1 },
</ins><span class="cx">     { -1, -1 },
</span><span class="cx">     { -1, -1 },
</span><span class="cx">     { 4, -1 },
</span><span class="cx">     { 6, -1 },
</span><del>-    { 13, -1 },
-    { 14, 35 },
-    { 17, -1 },
-    { 19, 38 },
-    { 20, -1 },
-    { 22, -1 },
</del><ins>+    { 12, -1 },
+    { 13, 35 },
+    { 16, -1 },
+    { 19, -1 },
+    { 21, -1 },
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> 
</span><span class="cx"> static const HashTableValue JSTestObjConstructorTableValues[] =
</span><span class="cx"> {
</span><span class="cx"> #if ENABLE(Condition1)
</span><del>-    { &quot;CONDITIONAL_CONST&quot;, DontDelete | ReadOnly, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjCONDITIONAL_CONST), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(0) },
</del><ins>+    { &quot;CONDITIONAL_CONST&quot;, DontDelete | ReadOnly | ConstantInteger, NoIntrinsic, (intptr_t)(0), (intptr_t) (0) },
</ins><span class="cx"> #else
</span><span class="cx">     { 0, 0, NoIntrinsic, 0, 0 },
</span><span class="cx"> #endif
</span><del>-    { &quot;CONST_VALUE_0&quot;, DontDelete | ReadOnly, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjCONST_VALUE_0), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(0) },
-    { &quot;CONST_VALUE_1&quot;, DontDelete | ReadOnly, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjCONST_VALUE_1), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(0) },
-    { &quot;CONST_VALUE_2&quot;, DontDelete | ReadOnly, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjCONST_VALUE_2), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(0) },
-    { &quot;CONST_VALUE_4&quot;, DontDelete | ReadOnly, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjCONST_VALUE_4), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(0) },
-    { &quot;CONST_VALUE_8&quot;, DontDelete | ReadOnly, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjCONST_VALUE_8), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(0) },
-    { &quot;CONST_VALUE_9&quot;, DontDelete | ReadOnly, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjCONST_VALUE_9), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(0) },
-    { &quot;CONST_VALUE_10&quot;, DontDelete | ReadOnly, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjCONST_VALUE_10), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(0) },
-    { &quot;CONST_VALUE_11&quot;, DontDelete | ReadOnly, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjCONST_VALUE_11), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(0) },
-    { &quot;CONST_VALUE_12&quot;, DontDelete | ReadOnly, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjCONST_VALUE_12), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(0) },
-    { &quot;CONST_VALUE_13&quot;, DontDelete | ReadOnly, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjCONST_VALUE_13), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(0) },
-    { &quot;CONST_VALUE_14&quot;, DontDelete | ReadOnly, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjCONST_VALUE_14), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(0) },
-    { &quot;CONST_JAVASCRIPT&quot;, DontDelete | ReadOnly, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjCONST_JAVASCRIPT), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(0) },
-    { &quot;readonly&quot;, DontDelete | ReadOnly, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjReadonly), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(0) },
</del><ins>+    { &quot;CONST_VALUE_0&quot;, DontDelete | ReadOnly | ConstantInteger, NoIntrinsic, (intptr_t)(0), (intptr_t) (0) },
+    { &quot;CONST_VALUE_1&quot;, DontDelete | ReadOnly | ConstantInteger, NoIntrinsic, (intptr_t)(1), (intptr_t) (0) },
+    { &quot;CONST_VALUE_2&quot;, DontDelete | ReadOnly | ConstantInteger, NoIntrinsic, (intptr_t)(2), (intptr_t) (0) },
+    { &quot;CONST_VALUE_4&quot;, DontDelete | ReadOnly | ConstantInteger, NoIntrinsic, (intptr_t)(4), (intptr_t) (0) },
+    { &quot;CONST_VALUE_8&quot;, DontDelete | ReadOnly | ConstantInteger, NoIntrinsic, (intptr_t)(8), (intptr_t) (0) },
+    { &quot;CONST_VALUE_9&quot;, DontDelete | ReadOnly | ConstantInteger, NoIntrinsic, (intptr_t)(-1), (intptr_t) (0) },
+    { &quot;CONST_VALUE_11&quot;, DontDelete | ReadOnly | ConstantInteger, NoIntrinsic, (intptr_t)(0xffffffff), (intptr_t) (0) },
+    { &quot;CONST_VALUE_12&quot;, DontDelete | ReadOnly | ConstantInteger, NoIntrinsic, (intptr_t)(0x01), (intptr_t) (0) },
+    { &quot;CONST_VALUE_13&quot;, DontDelete | ReadOnly | ConstantInteger, NoIntrinsic, (intptr_t)(0X20), (intptr_t) (0) },
+    { &quot;CONST_VALUE_14&quot;, DontDelete | ReadOnly | ConstantInteger, NoIntrinsic, (intptr_t)(0x1abc), (intptr_t) (0) },
+    { &quot;CONST_JAVASCRIPT&quot;, DontDelete | ReadOnly | ConstantInteger, NoIntrinsic, (intptr_t)(15), (intptr_t) (0) },
+    { &quot;readonly&quot;, DontDelete | ReadOnly | ConstantInteger, NoIntrinsic, (intptr_t)(0), (intptr_t) (0) },
</ins><span class="cx">     { &quot;staticReadOnlyLongAttr&quot;, DontDelete | ReadOnly, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjConstructorStaticReadOnlyLongAttr), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(0) },
</span><span class="cx">     { &quot;staticStringAttr&quot;, DontDelete, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjConstructorStaticStringAttr), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjConstructorStaticStringAttr) },
</span><span class="cx">     { &quot;TestSubObj&quot;, DontDelete | ReadOnly, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjConstructorTestSubObj), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(0) },
</span><span class="lines">@@ -200,7 +198,7 @@
</span><span class="cx"> #endif
</span><span class="cx"> };
</span><span class="cx"> 
</span><del>-static const HashTable JSTestObjConstructorTable = { 23, 31, true, JSTestObjConstructorTableValues, 0, JSTestObjConstructorTableIndex };
</del><ins>+static const HashTable JSTestObjConstructorTable = { 22, 31, true, JSTestObjConstructorTableValues, 0, JSTestObjConstructorTableIndex };
</ins><span class="cx"> 
</span><span class="cx"> #if ENABLE(Condition1)
</span><span class="cx"> COMPILE_ASSERT(0 == TestObj::CONDITIONAL_CONST, TestObjEnumCONDITIONAL_CONSTIsWrongUseDoNotCheckConstants);
</span><span class="lines">@@ -211,7 +209,6 @@
</span><span class="cx"> COMPILE_ASSERT(4 == TestObj::CONST_VALUE_4, TestObjEnumCONST_VALUE_4IsWrongUseDoNotCheckConstants);
</span><span class="cx"> COMPILE_ASSERT(8 == TestObj::CONST_VALUE_8, TestObjEnumCONST_VALUE_8IsWrongUseDoNotCheckConstants);
</span><span class="cx"> COMPILE_ASSERT(-1 == TestObj::CONST_VALUE_9, TestObjEnumCONST_VALUE_9IsWrongUseDoNotCheckConstants);
</span><del>-COMPILE_ASSERT(&quot;my constant string&quot; == TestObj::CONST_VALUE_10, TestObjEnumCONST_VALUE_10IsWrongUseDoNotCheckConstants);
</del><span class="cx"> COMPILE_ASSERT(0xffffffff == TestObj::CONST_VALUE_11, TestObjEnumCONST_VALUE_11IsWrongUseDoNotCheckConstants);
</span><span class="cx"> COMPILE_ASSERT(0x01 == TestObj::CONST_VALUE_12, TestObjEnumCONST_VALUE_12IsWrongUseDoNotCheckConstants);
</span><span class="cx"> COMPILE_ASSERT(0X20 == TestObj::CONST_VALUE_13, TestObjEnumCONST_VALUE_13IsWrongUseDoNotCheckConstants);
</span><span class="lines">@@ -280,7 +277,7 @@
</span><span class="cx">     { -1, -1 },
</span><span class="cx">     { -1, -1 },
</span><span class="cx">     { 47, -1 },
</span><del>-    { 73, -1 },
</del><ins>+    { 72, -1 },
</ins><span class="cx">     { -1, -1 },
</span><span class="cx">     { 41, -1 },
</span><span class="cx">     { -1, -1 },
</span><span class="lines">@@ -292,7 +289,7 @@
</span><span class="cx">     { -1, -1 },
</span><span class="cx">     { -1, -1 },
</span><span class="cx">     { -1, -1 },
</span><del>-    { 102, -1 },
</del><ins>+    { 101, -1 },
</ins><span class="cx">     { -1, -1 },
</span><span class="cx">     { -1, -1 },
</span><span class="cx">     { -1, -1 },
</span><span class="lines">@@ -301,7 +298,7 @@
</span><span class="cx">     { -1, -1 },
</span><span class="cx">     { -1, -1 },
</span><span class="cx">     { -1, -1 },
</span><del>-    { 110, -1 },
</del><ins>+    { 109, -1 },
</ins><span class="cx">     { -1, -1 },
</span><span class="cx">     { -1, -1 },
</span><span class="cx">     { -1, -1 },
</span><span class="lines">@@ -318,12 +315,12 @@
</span><span class="cx">     { -1, -1 },
</span><span class="cx">     { -1, -1 },
</span><span class="cx">     { -1, -1 },
</span><del>-    { 126, -1 },
</del><ins>+    { 125, -1 },
</ins><span class="cx">     { -1, -1 },
</span><span class="cx">     { -1, -1 },
</span><span class="cx">     { -1, -1 },
</span><del>-    { 101, -1 },
</del><span class="cx">     { 100, -1 },
</span><ins>+    { 99, -1 },
</ins><span class="cx">     { -1, -1 },
</span><span class="cx">     { -1, -1 },
</span><span class="cx">     { -1, -1 },
</span><span class="lines">@@ -336,7 +333,7 @@
</span><span class="cx">     { -1, -1 },
</span><span class="cx">     { -1, -1 },
</span><span class="cx">     { 5, -1 },
</span><del>-    { 134, -1 },
</del><ins>+    { 133, -1 },
</ins><span class="cx">     { -1, -1 },
</span><span class="cx">     { -1, -1 },
</span><span class="cx">     { -1, -1 },
</span><span class="lines">@@ -350,8 +347,8 @@
</span><span class="cx">     { -1, -1 },
</span><span class="cx">     { -1, -1 },
</span><span class="cx">     { -1, -1 },
</span><del>-    { 93, -1 },
-    { 87, -1 },
</del><ins>+    { 92, -1 },
+    { 86, -1 },
</ins><span class="cx">     { -1, -1 },
</span><span class="cx">     { -1, -1 },
</span><span class="cx">     { -1, -1 },
</span><span class="lines">@@ -367,11 +364,11 @@
</span><span class="cx">     { -1, -1 },
</span><span class="cx">     { -1, -1 },
</span><span class="cx">     { -1, -1 },
</span><del>-    { 117, -1 },
</del><ins>+    { 116, -1 },
</ins><span class="cx">     { -1, -1 },
</span><span class="cx">     { -1, -1 },
</span><del>-    { 78, -1 },
-    { 70, -1 },
</del><ins>+    { 77, -1 },
+    { 69, -1 },
</ins><span class="cx">     { -1, -1 },
</span><span class="cx">     { 25, -1 },
</span><span class="cx">     { -1, -1 },
</span><span class="lines">@@ -385,11 +382,11 @@
</span><span class="cx">     { -1, -1 },
</span><span class="cx">     { -1, -1 },
</span><span class="cx">     { -1, -1 },
</span><del>-    { 96, -1 },
</del><ins>+    { 95, -1 },
</ins><span class="cx">     { -1, -1 },
</span><span class="cx">     { -1, -1 },
</span><span class="cx">     { -1, -1 },
</span><del>-    { 114, -1 },
</del><ins>+    { 113, -1 },
</ins><span class="cx">     { -1, -1 },
</span><span class="cx">     { 6, -1 },
</span><span class="cx">     { -1, -1 },
</span><span class="lines">@@ -399,7 +396,7 @@
</span><span class="cx">     { -1, -1 },
</span><span class="cx">     { -1, -1 },
</span><span class="cx">     { -1, -1 },
</span><del>-    { 86, -1 },
</del><ins>+    { 85, -1 },
</ins><span class="cx">     { -1, -1 },
</span><span class="cx">     { -1, -1 },
</span><span class="cx">     { 1, -1 },
</span><span class="lines">@@ -408,25 +405,25 @@
</span><span class="cx">     { 33, -1 },
</span><span class="cx">     { 51, -1 },
</span><span class="cx">     { -1, -1 },
</span><del>-    { 71, -1 },
</del><ins>+    { 70, -1 },
</ins><span class="cx">     { -1, -1 },
</span><span class="cx">     { -1, -1 },
</span><span class="cx">     { -1, -1 },
</span><span class="cx">     { -1, -1 },
</span><span class="cx">     { -1, -1 },
</span><span class="cx">     { -1, -1 },
</span><del>-    { 92, -1 },
</del><ins>+    { 91, -1 },
</ins><span class="cx">     { -1, -1 },
</span><span class="cx">     { -1, -1 },
</span><span class="cx">     { -1, -1 },
</span><span class="cx">     { -1, -1 },
</span><span class="cx">     { -1, -1 },
</span><del>-    { 127, -1 },
</del><ins>+    { 126, -1 },
</ins><span class="cx">     { -1, -1 },
</span><span class="cx">     { -1, -1 },
</span><span class="cx">     { -1, -1 },
</span><span class="cx">     { -1, -1 },
</span><del>-    { 72, -1 },
</del><ins>+    { 71, -1 },
</ins><span class="cx">     { -1, -1 },
</span><span class="cx">     { -1, -1 },
</span><span class="cx">     { -1, -1 },
</span><span class="lines">@@ -436,7 +433,6 @@
</span><span class="cx">     { -1, -1 },
</span><span class="cx">     { -1, -1 },
</span><span class="cx">     { -1, -1 },
</span><del>-    { 67, -1 },
</del><span class="cx">     { -1, -1 },
</span><span class="cx">     { -1, -1 },
</span><span class="cx">     { -1, -1 },
</span><span class="lines">@@ -445,6 +441,7 @@
</span><span class="cx">     { -1, -1 },
</span><span class="cx">     { -1, -1 },
</span><span class="cx">     { -1, -1 },
</span><ins>+    { -1, -1 },
</ins><span class="cx">     { 24, -1 },
</span><span class="cx">     { -1, -1 },
</span><span class="cx">     { -1, -1 },
</span><span class="lines">@@ -460,7 +457,7 @@
</span><span class="cx">     { -1, -1 },
</span><span class="cx">     { -1, -1 },
</span><span class="cx">     { -1, -1 },
</span><del>-    { 89, -1 },
</del><ins>+    { 88, -1 },
</ins><span class="cx">     { -1, -1 },
</span><span class="cx">     { -1, -1 },
</span><span class="cx">     { -1, -1 },
</span><span class="lines">@@ -481,7 +478,7 @@
</span><span class="cx">     { -1, -1 },
</span><span class="cx">     { -1, -1 },
</span><span class="cx">     { -1, -1 },
</span><del>-    { 82, -1 },
</del><ins>+    { 81, -1 },
</ins><span class="cx">     { -1, -1 },
</span><span class="cx">     { -1, -1 },
</span><span class="cx">     { -1, -1 },
</span><span class="lines">@@ -491,7 +488,7 @@
</span><span class="cx">     { -1, -1 },
</span><span class="cx">     { 45, -1 },
</span><span class="cx">     { -1, -1 },
</span><del>-    { 77, -1 },
</del><ins>+    { 76, -1 },
</ins><span class="cx">     { -1, -1 },
</span><span class="cx">     { -1, -1 },
</span><span class="cx">     { -1, -1 },
</span><span class="lines">@@ -503,10 +500,10 @@
</span><span class="cx">     { -1, -1 },
</span><span class="cx">     { 8, 512 },
</span><span class="cx">     { -1, -1 },
</span><del>-    { 130, -1 },
</del><ins>+    { 129, -1 },
</ins><span class="cx">     { -1, -1 },
</span><span class="cx">     { 58, 528 },
</span><del>-    { 135, -1 },
</del><ins>+    { 134, -1 },
</ins><span class="cx">     { -1, -1 },
</span><span class="cx">     { -1, -1 },
</span><span class="cx">     { -1, -1 },
</span><span class="lines">@@ -515,9 +512,9 @@
</span><span class="cx">     { -1, -1 },
</span><span class="cx">     { -1, -1 },
</span><span class="cx">     { -1, -1 },
</span><del>-    { 131, -1 },
</del><ins>+    { 130, -1 },
</ins><span class="cx">     { -1, -1 },
</span><del>-    { 103, -1 },
</del><ins>+    { 102, -1 },
</ins><span class="cx">     { -1, -1 },
</span><span class="cx">     { -1, -1 },
</span><span class="cx">     { -1, -1 },
</span><span class="lines">@@ -530,9 +527,9 @@
</span><span class="cx">     { 39, 515 },
</span><span class="cx">     { -1, -1 },
</span><span class="cx">     { -1, -1 },
</span><del>-    { 113, -1 },
-    { 90, -1 },
-    { 120, -1 },
</del><ins>+    { 112, -1 },
+    { 89, -1 },
+    { 119, -1 },
</ins><span class="cx">     { -1, -1 },
</span><span class="cx">     { -1, -1 },
</span><span class="cx">     { -1, -1 },
</span><span class="lines">@@ -561,8 +558,8 @@
</span><span class="cx">     { -1, -1 },
</span><span class="cx">     { -1, -1 },
</span><span class="cx">     { -1, -1 },
</span><del>-    { 128, -1 },
-    { 123, -1 },
</del><ins>+    { 127, -1 },
+    { 122, -1 },
</ins><span class="cx">     { -1, -1 },
</span><span class="cx">     { -1, -1 },
</span><span class="cx">     { -1, -1 },
</span><span class="lines">@@ -571,7 +568,7 @@
</span><span class="cx">     { -1, -1 },
</span><span class="cx">     { -1, -1 },
</span><span class="cx">     { -1, -1 },
</span><del>-    { 76, -1 },
</del><ins>+    { 75, -1 },
</ins><span class="cx">     { -1, -1 },
</span><span class="cx">     { -1, -1 },
</span><span class="cx">     { -1, -1 },
</span><span class="lines">@@ -580,7 +577,7 @@
</span><span class="cx">     { -1, -1 },
</span><span class="cx">     { -1, -1 },
</span><span class="cx">     { -1, -1 },
</span><del>-    { 84, -1 },
</del><ins>+    { 83, -1 },
</ins><span class="cx">     { -1, -1 },
</span><span class="cx">     { -1, -1 },
</span><span class="cx">     { -1, -1 },
</span><span class="lines">@@ -603,7 +600,7 @@
</span><span class="cx">     { -1, -1 },
</span><span class="cx">     { 0, -1 },
</span><span class="cx">     { -1, -1 },
</span><del>-    { 99, -1 },
</del><ins>+    { 98, -1 },
</ins><span class="cx">     { -1, -1 },
</span><span class="cx">     { -1, -1 },
</span><span class="cx">     { -1, -1 },
</span><span class="lines">@@ -612,7 +609,7 @@
</span><span class="cx">     { 28, -1 },
</span><span class="cx">     { -1, -1 },
</span><span class="cx">     { -1, -1 },
</span><del>-    { 124, -1 },
</del><ins>+    { 123, -1 },
</ins><span class="cx">     { -1, -1 },
</span><span class="cx">     { 35, -1 },
</span><span class="cx">     { -1, -1 },
</span><span class="lines">@@ -626,14 +623,14 @@
</span><span class="cx">     { -1, -1 },
</span><span class="cx">     { -1, -1 },
</span><span class="cx">     { -1, -1 },
</span><del>-    { 88, -1 },
</del><ins>+    { 87, -1 },
</ins><span class="cx">     { -1, -1 },
</span><span class="cx">     { -1, -1 },
</span><span class="cx">     { -1, -1 },
</span><span class="cx">     { -1, -1 },
</span><span class="cx">     { -1, -1 },
</span><span class="cx">     { 46, 521 },
</span><del>-    { 80, -1 },
</del><ins>+    { 79, -1 },
</ins><span class="cx">     { -1, -1 },
</span><span class="cx">     { -1, -1 },
</span><span class="cx">     { -1, -1 },
</span><span class="lines">@@ -641,7 +638,7 @@
</span><span class="cx">     { -1, -1 },
</span><span class="cx">     { -1, -1 },
</span><span class="cx">     { -1, -1 },
</span><del>-    { 69, -1 },
</del><ins>+    { 68, -1 },
</ins><span class="cx">     { -1, -1 },
</span><span class="cx">     { 62, -1 },
</span><span class="cx">     { -1, -1 },
</span><span class="lines">@@ -651,7 +648,7 @@
</span><span class="cx">     { -1, -1 },
</span><span class="cx">     { -1, -1 },
</span><span class="cx">     { -1, -1 },
</span><del>-    { 95, -1 },
</del><ins>+    { 94, -1 },
</ins><span class="cx">     { -1, -1 },
</span><span class="cx">     { -1, -1 },
</span><span class="cx">     { -1, -1 },
</span><span class="lines">@@ -667,12 +664,12 @@
</span><span class="cx">     { -1, -1 },
</span><span class="cx">     { -1, -1 },
</span><span class="cx">     { 57, -1 },
</span><del>-    { 68, -1 },
</del><ins>+    { 67, -1 },
</ins><span class="cx">     { -1, -1 },
</span><span class="cx">     { -1, -1 },
</span><del>-    { 107, 527 },
</del><ins>+    { 106, 527 },
</ins><span class="cx">     { -1, -1 },
</span><del>-    { 108, -1 },
</del><ins>+    { 107, -1 },
</ins><span class="cx">     { -1, -1 },
</span><span class="cx">     { -1, -1 },
</span><span class="cx">     { -1, -1 },
</span><span class="lines">@@ -692,7 +689,7 @@
</span><span class="cx">     { -1, -1 },
</span><span class="cx">     { -1, -1 },
</span><span class="cx">     { -1, -1 },
</span><del>-    { 112, -1 },
</del><ins>+    { 111, -1 },
</ins><span class="cx">     { -1, -1 },
</span><span class="cx">     { -1, -1 },
</span><span class="cx">     { -1, -1 },
</span><span class="lines">@@ -701,7 +698,7 @@
</span><span class="cx">     { -1, -1 },
</span><span class="cx">     { -1, -1 },
</span><span class="cx">     { -1, -1 },
</span><del>-    { 118, -1 },
</del><ins>+    { 117, -1 },
</ins><span class="cx">     { -1, -1 },
</span><span class="cx">     { -1, -1 },
</span><span class="cx">     { -1, -1 },
</span><span class="lines">@@ -709,26 +706,26 @@
</span><span class="cx">     { -1, -1 },
</span><span class="cx">     { -1, -1 },
</span><span class="cx">     { -1, -1 },
</span><del>-    { 79, -1 },
</del><ins>+    { 78, -1 },
</ins><span class="cx">     { -1, -1 },
</span><span class="cx">     { -1, -1 },
</span><span class="cx">     { -1, -1 },
</span><span class="cx">     { 60, -1 },
</span><span class="cx">     { 52, -1 },
</span><span class="cx">     { -1, -1 },
</span><del>-    { 74, -1 },
-    { 132, -1 },
</del><ins>+    { 73, -1 },
+    { 131, -1 },
</ins><span class="cx">     { -1, -1 },
</span><span class="cx">     { -1, -1 },
</span><span class="cx">     { -1, -1 },
</span><span class="cx">     { 54, 516 },
</span><span class="cx">     { -1, -1 },
</span><del>-    { 85, -1 },
</del><ins>+    { 84, -1 },
</ins><span class="cx">     { 9, -1 },
</span><span class="cx">     { -1, -1 },
</span><span class="cx">     { -1, -1 },
</span><span class="cx">     { -1, -1 },
</span><del>-    { 105, -1 },
</del><ins>+    { 104, -1 },
</ins><span class="cx">     { 29, -1 },
</span><span class="cx">     { -1, -1 },
</span><span class="cx">     { -1, -1 },
</span><span class="lines">@@ -749,23 +746,23 @@
</span><span class="cx">     { -1, -1 },
</span><span class="cx">     { -1, -1 },
</span><span class="cx">     { -1, -1 },
</span><del>-    { 109, -1 },
</del><ins>+    { 108, -1 },
</ins><span class="cx">     { 13, 514 },
</span><span class="cx">     { 40, -1 },
</span><del>-    { 111, -1 },
</del><ins>+    { 110, -1 },
</ins><span class="cx">     { -1, -1 },
</span><span class="cx">     { 7, 525 },
</span><span class="cx">     { -1, -1 },
</span><del>-    { 125, -1 },
-    { 106, -1 },
-    { 75, 520 },
</del><ins>+    { 124, -1 },
+    { 105, -1 },
+    { 74, 520 },
</ins><span class="cx">     { -1, -1 },
</span><del>-    { 122, -1 },
-    { 83, -1 },
</del><ins>+    { 121, -1 },
+    { 82, -1 },
</ins><span class="cx">     { -1, -1 },
</span><span class="cx">     { -1, -1 },
</span><span class="cx">     { -1, -1 },
</span><del>-    { 119, -1 },
</del><ins>+    { 118, -1 },
</ins><span class="cx">     { -1, -1 },
</span><span class="cx">     { 10, 519 },
</span><span class="cx">     { 11, -1 },
</span><span class="lines">@@ -775,17 +772,17 @@
</span><span class="cx">     { 56, -1 },
</span><span class="cx">     { 63, -1 },
</span><span class="cx">     { 66, -1 },
</span><del>-    { 81, -1 },
-    { 91, -1 },
-    { 94, -1 },
</del><ins>+    { 80, -1 },
+    { 90, -1 },
+    { 93, -1 },
+    { 96, -1 },
</ins><span class="cx">     { 97, -1 },
</span><del>-    { 98, -1 },
-    { 104, -1 },
</del><ins>+    { 103, -1 },
+    { 114, -1 },
</ins><span class="cx">     { 115, -1 },
</span><del>-    { 116, -1 },
-    { 121, -1 },
-    { 129, -1 },
-    { 133, -1 },
</del><ins>+    { 120, -1 },
+    { 128, -1 },
+    { 132, -1 },
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> 
</span><span class="lines">@@ -864,23 +861,22 @@
</span><span class="cx">     { &quot;attribute&quot;, DontDelete | ReadOnly | CustomAccessor, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjAttribute), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(0) },
</span><span class="cx">     { &quot;attributeWithReservedEnumType&quot;, DontDelete | CustomAccessor, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjAttributeWithReservedEnumType), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjAttributeWithReservedEnumType) },
</span><span class="cx"> #if ENABLE(Condition1)
</span><del>-    { &quot;CONDITIONAL_CONST&quot;, DontDelete | ReadOnly, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjCONDITIONAL_CONST), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(0) },
</del><ins>+    { &quot;CONDITIONAL_CONST&quot;, DontDelete | ReadOnly | ConstantInteger, NoIntrinsic, (intptr_t)(0), (intptr_t) (0) },
</ins><span class="cx"> #else
</span><span class="cx">     { 0, 0, NoIntrinsic, 0, 0 },
</span><span class="cx"> #endif
</span><del>-    { &quot;CONST_VALUE_0&quot;, DontDelete | ReadOnly, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjCONST_VALUE_0), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(0) },
-    { &quot;CONST_VALUE_1&quot;, DontDelete | ReadOnly, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjCONST_VALUE_1), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(0) },
-    { &quot;CONST_VALUE_2&quot;, DontDelete | ReadOnly, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjCONST_VALUE_2), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(0) },
-    { &quot;CONST_VALUE_4&quot;, DontDelete | ReadOnly, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjCONST_VALUE_4), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(0) },
-    { &quot;CONST_VALUE_8&quot;, DontDelete | ReadOnly, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjCONST_VALUE_8), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(0) },
-    { &quot;CONST_VALUE_9&quot;, DontDelete | ReadOnly, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjCONST_VALUE_9), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(0) },
-    { &quot;CONST_VALUE_10&quot;, DontDelete | ReadOnly, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjCONST_VALUE_10), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(0) },
-    { &quot;CONST_VALUE_11&quot;, DontDelete | ReadOnly, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjCONST_VALUE_11), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(0) },
-    { &quot;CONST_VALUE_12&quot;, DontDelete | ReadOnly, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjCONST_VALUE_12), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(0) },
-    { &quot;CONST_VALUE_13&quot;, DontDelete | ReadOnly, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjCONST_VALUE_13), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(0) },
-    { &quot;CONST_VALUE_14&quot;, DontDelete | ReadOnly, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjCONST_VALUE_14), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(0) },
-    { &quot;CONST_JAVASCRIPT&quot;, DontDelete | ReadOnly, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjCONST_JAVASCRIPT), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(0) },
-    { &quot;readonly&quot;, DontDelete | ReadOnly, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjReadonly), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(0) },
</del><ins>+    { &quot;CONST_VALUE_0&quot;, DontDelete | ReadOnly | ConstantInteger, NoIntrinsic, (intptr_t)(0), (intptr_t) (0) },
+    { &quot;CONST_VALUE_1&quot;, DontDelete | ReadOnly | ConstantInteger, NoIntrinsic, (intptr_t)(1), (intptr_t) (0) },
+    { &quot;CONST_VALUE_2&quot;, DontDelete | ReadOnly | ConstantInteger, NoIntrinsic, (intptr_t)(2), (intptr_t) (0) },
+    { &quot;CONST_VALUE_4&quot;, DontDelete | ReadOnly | ConstantInteger, NoIntrinsic, (intptr_t)(4), (intptr_t) (0) },
+    { &quot;CONST_VALUE_8&quot;, DontDelete | ReadOnly | ConstantInteger, NoIntrinsic, (intptr_t)(8), (intptr_t) (0) },
+    { &quot;CONST_VALUE_9&quot;, DontDelete | ReadOnly | ConstantInteger, NoIntrinsic, (intptr_t)(-1), (intptr_t) (0) },
+    { &quot;CONST_VALUE_11&quot;, DontDelete | ReadOnly | ConstantInteger, NoIntrinsic, (intptr_t)(0xffffffff), (intptr_t) (0) },
+    { &quot;CONST_VALUE_12&quot;, DontDelete | ReadOnly | ConstantInteger, NoIntrinsic, (intptr_t)(0x01), (intptr_t) (0) },
+    { &quot;CONST_VALUE_13&quot;, DontDelete | ReadOnly | ConstantInteger, NoIntrinsic, (intptr_t)(0X20), (intptr_t) (0) },
+    { &quot;CONST_VALUE_14&quot;, DontDelete | ReadOnly | ConstantInteger, NoIntrinsic, (intptr_t)(0x1abc), (intptr_t) (0) },
+    { &quot;CONST_JAVASCRIPT&quot;, DontDelete | ReadOnly | ConstantInteger, NoIntrinsic, (intptr_t)(15), (intptr_t) (0) },
+    { &quot;readonly&quot;, DontDelete | ReadOnly | ConstantInteger, NoIntrinsic, (intptr_t)(0), (intptr_t) (0) },
</ins><span class="cx">     { &quot;voidMethod&quot;, JSC::Function, NoIntrinsic, (intptr_t)static_cast&lt;NativeFunction&gt;(jsTestObjPrototypeFunctionVoidMethod), (intptr_t) (0) },
</span><span class="cx">     { &quot;voidMethodWithArgs&quot;, JSC::Function, NoIntrinsic, (intptr_t)static_cast&lt;NativeFunction&gt;(jsTestObjPrototypeFunctionVoidMethodWithArgs), (intptr_t) (3) },
</span><span class="cx">     { &quot;byteMethod&quot;, JSC::Function, NoIntrinsic, (intptr_t)static_cast&lt;NativeFunction&gt;(jsTestObjPrototypeFunctionByteMethod), (intptr_t) (0) },
</span><span class="lines">@@ -957,7 +953,7 @@
</span><span class="cx">     { &quot;any&quot;, JSC::Function, NoIntrinsic, (intptr_t)static_cast&lt;NativeFunction&gt;(jsTestObjPrototypeFunctionAny), (intptr_t) (2) },
</span><span class="cx"> };
</span><span class="cx"> 
</span><del>-static const HashTable JSTestObjPrototypeTable = { 136, 511, true, JSTestObjPrototypeTableValues, 0, JSTestObjPrototypeTableIndex };
</del><ins>+static const HashTable JSTestObjPrototypeTable = { 135, 511, true, JSTestObjPrototypeTableValues, 0, JSTestObjPrototypeTableIndex };
</ins><span class="cx"> const ClassInfo JSTestObjPrototype::s_info = { &quot;TestObjectPrototype&quot;, &amp;Base::s_info, &amp;JSTestObjPrototypeTable, 0, CREATE_METHOD_TABLE(JSTestObjPrototype) };
</span><span class="cx"> 
</span><span class="cx"> JSObject* JSTestObjPrototype::self(VM&amp; vm, JSGlobalObject* globalObject)
</span><span class="lines">@@ -4658,80 +4654,6 @@
</span><span class="cx">     visitor.append(&amp;thisObject-&gt;m_cachedAttribute2);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-// Constant getters
-
-#if ENABLE(Condition1)
-EncodedJSValue jsTestObjCONDITIONAL_CONST(ExecState*, JSObject*, EncodedJSValue, PropertyName)
-{
-    return JSValue::encode(jsNumber(0));
-}
-
-#endif
-EncodedJSValue jsTestObjCONST_VALUE_0(ExecState*, JSObject*, EncodedJSValue, PropertyName)
-{
-    return JSValue::encode(jsNumber(0));
-}
-
-EncodedJSValue jsTestObjCONST_VALUE_1(ExecState*, JSObject*, EncodedJSValue, PropertyName)
-{
-    return JSValue::encode(jsNumber(1));
-}
-
-EncodedJSValue jsTestObjCONST_VALUE_2(ExecState*, JSObject*, EncodedJSValue, PropertyName)
-{
-    return JSValue::encode(jsNumber(2));
-}
-
-EncodedJSValue jsTestObjCONST_VALUE_4(ExecState*, JSObject*, EncodedJSValue, PropertyName)
-{
-    return JSValue::encode(jsNumber(4));
-}
-
-EncodedJSValue jsTestObjCONST_VALUE_8(ExecState*, JSObject*, EncodedJSValue, PropertyName)
-{
-    return JSValue::encode(jsNumber(8));
-}
-
-EncodedJSValue jsTestObjCONST_VALUE_9(ExecState*, JSObject*, EncodedJSValue, PropertyName)
-{
-    return JSValue::encode(jsNumber(-1));
-}
-
-EncodedJSValue jsTestObjCONST_VALUE_10(ExecState* exec, JSObject*, EncodedJSValue, PropertyName)
-{
-    return JSValue::encode(jsStringOrNull(exec, String(&quot;my constant string&quot;)));
-}
-
-EncodedJSValue jsTestObjCONST_VALUE_11(ExecState*, JSObject*, EncodedJSValue, PropertyName)
-{
-    return JSValue::encode(jsNumber(0xffffffff));
-}
-
-EncodedJSValue jsTestObjCONST_VALUE_12(ExecState*, JSObject*, EncodedJSValue, PropertyName)
-{
-    return JSValue::encode(jsNumber(0x01));
-}
-
-EncodedJSValue jsTestObjCONST_VALUE_13(ExecState*, JSObject*, EncodedJSValue, PropertyName)
-{
-    return JSValue::encode(jsNumber(0X20));
-}
-
-EncodedJSValue jsTestObjCONST_VALUE_14(ExecState*, JSObject*, EncodedJSValue, PropertyName)
-{
-    return JSValue::encode(jsNumber(0x1abc));
-}
-
-EncodedJSValue jsTestObjCONST_JAVASCRIPT(ExecState*, JSObject*, EncodedJSValue, PropertyName)
-{
-    return JSValue::encode(jsNumber(15));
-}
-
-EncodedJSValue jsTestObjReadonly(ExecState*, JSObject*, EncodedJSValue, PropertyName)
-{
-    return JSValue::encode(jsNumber(0));
-}
-
</del><span class="cx"> bool JSTestObjOwner::isReachableFromOpaqueRoots(JSC::Handle&lt;JSC::Unknown&gt; handle, void*, SlotVisitor&amp; visitor)
</span><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(handle);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestObjh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestObj.h (169978 => 169979)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestObj.h        2014-06-14 20:33:49 UTC (rev 169978)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestObj.h        2014-06-14 20:38:45 UTC (rev 169979)
</span><span class="lines">@@ -372,25 +372,7 @@
</span><span class="cx"> JSC::EncodedJSValue jsTestObjAttributeWithReservedEnumType(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
</span><span class="cx"> void setJSTestObjAttributeWithReservedEnumType(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
</span><span class="cx"> JSC::EncodedJSValue jsTestObjConstructor(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
</span><del>-// Constants
</del><span class="cx"> 
</span><del>-#if ENABLE(Condition1)
-JSC::EncodedJSValue jsTestObjCONDITIONAL_CONST(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-#endif
-JSC::EncodedJSValue jsTestObjCONST_VALUE_0(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-JSC::EncodedJSValue jsTestObjCONST_VALUE_1(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-JSC::EncodedJSValue jsTestObjCONST_VALUE_2(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-JSC::EncodedJSValue jsTestObjCONST_VALUE_4(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-JSC::EncodedJSValue jsTestObjCONST_VALUE_8(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-JSC::EncodedJSValue jsTestObjCONST_VALUE_9(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-JSC::EncodedJSValue jsTestObjCONST_VALUE_10(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-JSC::EncodedJSValue jsTestObjCONST_VALUE_11(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-JSC::EncodedJSValue jsTestObjCONST_VALUE_12(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-JSC::EncodedJSValue jsTestObjCONST_VALUE_13(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-JSC::EncodedJSValue jsTestObjCONST_VALUE_14(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-JSC::EncodedJSValue jsTestObjCONST_JAVASCRIPT(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-JSC::EncodedJSValue jsTestObjReadonly(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-
</del><span class="cx"> } // namespace WebCore
</span><span class="cx"> 
</span><span class="cx"> #endif
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestObjCDOMTestObjh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/ObjC/DOMTestObj.h (169978 => 169979)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/ObjC/DOMTestObj.h        2014-06-14 20:33:49 UTC (rev 169978)
+++ trunk/Source/WebCore/bindings/scripts/test/ObjC/DOMTestObj.h        2014-06-14 20:38:45 UTC (rev 169979)
</span><span class="lines">@@ -50,7 +50,6 @@
</span><span class="cx">     DOM_CONST_VALUE_4 = 4,
</span><span class="cx">     DOM_CONST_VALUE_8 = 8,
</span><span class="cx">     DOM_CONST_VALUE_9 = -1,
</span><del>-    DOM_CONST_VALUE_10 = &quot;my constant string&quot;,
</del><span class="cx">     DOM_CONST_VALUE_11 = 0xffffffff,
</span><span class="cx">     DOM_CONST_VALUE_12 = 0x01,
</span><span class="cx">     DOM_CONST_VALUE_13 = 0X20,
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestTestObjidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/TestObj.idl (169978 => 169979)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/TestObj.idl        2014-06-14 20:33:49 UTC (rev 169978)
+++ trunk/Source/WebCore/bindings/scripts/test/TestObj.idl        2014-06-14 20:38:45 UTC (rev 169979)
</span><span class="lines">@@ -245,7 +245,6 @@
</span><span class="cx">     const unsigned short CONST_VALUE_4 = 4;
</span><span class="cx">     const unsigned short CONST_VALUE_8 = 8;
</span><span class="cx">     const short CONST_VALUE_9 = -1;
</span><del>-    const DOMString CONST_VALUE_10 = &quot;my constant string&quot;;
</del><span class="cx">     const unsigned short CONST_VALUE_11 = 0xffffffff;
</span><span class="cx">     const unsigned short CONST_VALUE_12 = 0x01;
</span><span class="cx">     const unsigned short CONST_VALUE_13 = 0X20;
</span></span></pre>
</div>
</div>

</body>
</html>