Diff
Modified: trunk/Source/_javascript_Core/ChangeLog (188823 => 188824)
--- trunk/Source/_javascript_Core/ChangeLog 2015-08-22 17:42:46 UTC (rev 188823)
+++ trunk/Source/_javascript_Core/ChangeLog 2015-08-22 18:05:50 UTC (rev 188824)
@@ -1,3 +1,55 @@
+2015-08-22 Andreas Kling <[email protected]>
+
+ [JSC] Static hash tables should be 100% compile-time constant.
+ <https://webkit.org/b/148359>
+
+ Reviewed by Michael Saboff.
+
+ We were dirtying the memory pages containing static hash tables the
+ first time they were used, when a dynamically allocated index-to-key
+ table was built and cached in the HashTable struct.
+
+ It turns out that this "optimization" was completely useless, since
+ we've long since decoupled static hash tables from the JSC::VM and
+ we can get the key for an index via HashTable::values[index].m_key!
+
+ We also get rid of VM::keywords which was a little wrapper around
+ a VM-specific copy of JSC::mainTable. There was nothing VM-specific
+ about it at all, so clients now use JSC::mainTable directly.
+
+ After this change all fooHashTable structs end up in __DATA __const
+ and no runtime initialization/allocation takes place.
+
+ * create_hash_table:
+ * jsc.cpp:
+ * parser/Lexer.cpp:
+ (JSC::isLexerKeyword):
+ (JSC::Lexer<LChar>::parseIdentifier):
+ (JSC::Lexer<UChar>::parseIdentifier):
+ (JSC::Lexer<CharacterType>::parseIdentifierSlowCase):
+ (JSC::Keywords::Keywords): Deleted.
+ * parser/Lexer.h:
+ (JSC::Keywords::isKeyword): Deleted.
+ (JSC::Keywords::getKeyword): Deleted.
+ (JSC::Keywords::~Keywords): Deleted.
+ * runtime/LiteralParser.cpp:
+ (JSC::LiteralParser<CharType>::tryJSONPParse):
+ * runtime/Lookup.cpp:
+ (JSC::HashTable::createTable): Deleted.
+ (JSC::HashTable::deleteTable): Deleted.
+ * runtime/Lookup.h:
+ (JSC::HashTable::entry):
+ (JSC::HashTable::ConstIterator::key):
+ (JSC::HashTable::ConstIterator::skipInvalidKeys):
+ (JSC::HashTable::copy): Deleted.
+ (JSC::HashTable::initializeIfNeeded): Deleted.
+ (JSC::HashTable::begin): Deleted.
+ (JSC::HashTable::end): Deleted.
+ * runtime/VM.cpp:
+ (JSC::VM::VM): Deleted.
+ * runtime/VM.h:
+ * testRegExp.cpp:
+
2015-08-21 Commit Queue <[email protected]>
Unreviewed, rolling out r188792 and r188803.
Modified: trunk/Source/_javascript_Core/create_hash_table (188823 => 188824)
--- trunk/Source/_javascript_Core/create_hash_table 2015-08-22 17:42:46 UTC (rev 188823)
+++ trunk/Source/_javascript_Core/create_hash_table 2015-08-22 18:05:50 UTC (rev 188824)
@@ -330,7 +330,7 @@
$i++;
}
print "};\n\n";
- print "JS_EXPORT_PRIVATE extern const struct HashTable $name =\n";
- print " \{ $packedSize, $compactHashSizeMask, $hasSetter, $nameEntries, 0, $nameIndex \};\n";
+ print "static const struct HashTable $name =\n";
+ print " \{ $packedSize, $compactHashSizeMask, $hasSetter, $nameEntries, $nameIndex \};\n";
print "} // namespace\n";
}
Modified: trunk/Source/_javascript_Core/jsc.cpp (188823 => 188824)
--- trunk/Source/_javascript_Core/jsc.cpp 2015-08-22 17:42:46 UTC (rev 188823)
+++ trunk/Source/_javascript_Core/jsc.cpp 2015-08-22 18:05:50 UTC (rev 188824)
@@ -103,10 +103,6 @@
using namespace JSC;
using namespace WTF;
-namespace JSC {
-WTF_IMPORT extern const struct HashTable globalObjectTable;
-}
-
namespace {
NO_RETURN_WITH_VALUE static void jscExit(int status)
@@ -720,7 +716,7 @@
}
};
-const ClassInfo GlobalObject::s_info = { "global", &JSGlobalObject::s_info, &globalObjectTable, CREATE_METHOD_TABLE(GlobalObject) };
+const ClassInfo GlobalObject::s_info = { "global", &JSGlobalObject::s_info, nullptr, CREATE_METHOD_TABLE(GlobalObject) };
const GlobalObjectMethodTable GlobalObject::s_globalObjectMethodTable = { &allowsAccessFrom, &supportsProfiling, &supportsRichSourceInfo, &shouldInterruptScript, &_javascript_RuntimeFlags, 0, &shouldInterruptScriptBeforeTimeout, nullptr, &moduleLoaderFetch, nullptr, nullptr };
Modified: trunk/Source/_javascript_Core/parser/Lexer.cpp (188823 => 188824)
--- trunk/Source/_javascript_Core/parser/Lexer.cpp 2015-08-22 17:42:46 UTC (rev 188823)
+++ trunk/Source/_javascript_Core/parser/Lexer.cpp 2015-08-22 18:05:50 UTC (rev 188824)
@@ -44,10 +44,9 @@
namespace JSC {
-Keywords::Keywords(VM& vm)
- : m_vm(vm)
- , m_keywordTable(JSC::mainTable)
+bool isLexerKeyword(const Identifier& identifier)
{
+ return JSC::mainTable.entry(identifier);
}
enum CharacterType {
@@ -948,7 +947,7 @@
if (UNLIKELY((remaining < maxTokenLength) && !(lexerFlags & LexerFlagsIgnoreReservedWords)) && !isPrivateName) {
ASSERT(shouldCreateIdentifier);
if (remaining < maxTokenLength) {
- const HashTableValue* entry = m_vm->keywords->getKeyword(*ident);
+ const HashTableValue* entry = JSC::mainTable.entry(*ident);
ASSERT((remaining < maxTokenLength) || !entry);
if (!entry)
return IDENT;
@@ -1025,7 +1024,7 @@
if (UNLIKELY((remaining < maxTokenLength) && !(lexerFlags & LexerFlagsIgnoreReservedWords)) && !isPrivateName) {
ASSERT(shouldCreateIdentifier);
if (remaining < maxTokenLength) {
- const HashTableValue* entry = m_vm->keywords->getKeyword(*ident);
+ const HashTableValue* entry = JSC::mainTable.entry(*ident);
ASSERT((remaining < maxTokenLength) || !entry);
if (!entry)
return IDENT;
@@ -1089,7 +1088,7 @@
if (LIKELY(!(lexerFlags & LexerFlagsIgnoreReservedWords))) {
ASSERT(shouldCreateIdentifier);
- const HashTableValue* entry = m_vm->keywords->getKeyword(*ident);
+ const HashTableValue* entry = JSC::mainTable.entry(*ident);
if (!entry)
return IDENT;
JSTokenType token = static_cast<JSTokenType>(entry->lexerValue());
Modified: trunk/Source/_javascript_Core/parser/Lexer.h (188823 => 188824)
--- trunk/Source/_javascript_Core/parser/Lexer.h 2015-08-22 17:42:46 UTC (rev 188823)
+++ trunk/Source/_javascript_Core/parser/Lexer.h 2015-08-22 18:05:50 UTC (rev 188824)
@@ -33,33 +33,6 @@
namespace JSC {
-class Keywords {
- WTF_MAKE_FAST_ALLOCATED;
-public:
- bool isKeyword(const Identifier& ident) const
- {
- return m_keywordTable.entry(ident);
- }
-
- const HashTableValue* getKeyword(const Identifier& ident) const
- {
- return m_keywordTable.entry(ident);
- }
-
- explicit Keywords(VM&);
-
- ~Keywords()
- {
- m_keywordTable.deleteTable();
- }
-
-private:
- friend class VM;
-
- VM& m_vm;
- const HashTable m_keywordTable;
-};
-
enum LexerFlags {
LexerFlagsIgnoreReservedWords = 1,
LexerFlagsDontBuildStrings = 2,
@@ -68,6 +41,8 @@
struct ParsedUnicodeEscapeValue;
+bool isLexerKeyword(const Identifier&);
+
template <typename T>
class Lexer {
WTF_MAKE_NONCOPYABLE(Lexer);
Modified: trunk/Source/_javascript_Core/runtime/LiteralParser.cpp (188823 => 188824)
--- trunk/Source/_javascript_Core/runtime/LiteralParser.cpp 2015-08-22 17:42:46 UTC (rev 188823)
+++ trunk/Source/_javascript_Core/runtime/LiteralParser.cpp 2015-08-22 18:05:50 UTC (rev 188824)
@@ -70,7 +70,7 @@
entry.m_pathEntryName = Identifier::fromString(&m_exec->vm(), m_lexer.currentToken().start, m_lexer.currentToken().end - m_lexer.currentToken().start);
path.append(entry);
}
- if (m_exec->vm().keywords->isKeyword(entry.m_pathEntryName))
+ if (isLexerKeyword(entry.m_pathEntryName))
return false;
TokenType tokenType = m_lexer.next();
if (entry.m_type == JSONPPathEntryTypeDeclare && tokenType != TokAssign)
Modified: trunk/Source/_javascript_Core/runtime/Lookup.cpp (188823 => 188824)
--- trunk/Source/_javascript_Core/runtime/Lookup.cpp 2015-08-22 17:42:46 UTC (rev 188823)
+++ trunk/Source/_javascript_Core/runtime/Lookup.cpp 2015-08-22 18:05:50 UTC (rev 188824)
@@ -27,27 +27,6 @@
namespace JSC {
-void HashTable::createTable() const
-{
- ASSERT(!keys);
- keys = static_cast<const char**>(fastMalloc(sizeof(char*) * numberOfValues));
-
- for (int i = 0; i < numberOfValues; ++i) {
- if (values[i].m_key)
- keys[i] = values[i].m_key;
- else
- keys[i] = 0;
- }
-}
-
-void HashTable::deleteTable() const
-{
- if (keys) {
- fastFree(keys);
- keys = nullptr;
- }
-}
-
void reifyStaticAccessor(VM& vm, const HashTableValue& value, JSObject& thisObj, PropertyName propertyName)
{
JSGlobalObject* globalObject = thisObj.globalObject();
Modified: trunk/Source/_javascript_Core/runtime/Lookup.h (188823 => 188824)
--- trunk/Source/_javascript_Core/runtime/Lookup.h 2015-08-22 17:42:46 UTC (rev 188823)
+++ trunk/Source/_javascript_Core/runtime/Lookup.h 2015-08-22 18:05:50 UTC (rev 188824)
@@ -72,34 +72,16 @@
};
struct HashTable {
- mutable int numberOfValues;
+ int numberOfValues;
int indexMask;
bool hasSetterOrReadonlyProperties;
const HashTableValue* values; // Fixed values generated by script.
- mutable const char** keys; // Table allocated at runtime.
const CompactHashIndex* index;
- ALWAYS_INLINE HashTable copy() const
- {
- // Don't copy dynamic table since it's thread specific.
- HashTable result = { numberOfValues, indexMask, hasSetterOrReadonlyProperties, values, 0, index };
- return result;
- }
-
- ALWAYS_INLINE void initializeIfNeeded() const
- {
- if (!keys)
- createTable();
- }
-
- JS_EXPORT_PRIVATE void deleteTable() const;
-
// Find an entry in the table, and return the entry.
ALWAYS_INLINE const HashTableValue* entry(PropertyName propertyName) const
{
- initializeIfNeeded();
-
if (propertyName.isSymbol())
return nullptr;
@@ -107,15 +89,13 @@
if (!uid)
return nullptr;
- ASSERT(keys);
-
int indexEntry = IdentifierRepHash::hash(uid) & indexMask;
int valueIndex = index[indexEntry].value;
if (valueIndex == -1)
return nullptr;
while (true) {
- if (WTF::equal(uid, keys[valueIndex]))
+ if (WTF::equal(uid, values[valueIndex].m_key))
return &values[valueIndex];
indexEntry = index[indexEntry].next;
@@ -142,7 +122,7 @@
const char* key()
{
- return m_table->keys[m_position];
+ return m_table->values[m_position].m_key;
}
const HashTableValue* operator->()
@@ -168,7 +148,7 @@
void skipInvalidKeys()
{
ASSERT(m_position <= m_table->numberOfValues);
- while (m_position < m_table->numberOfValues && !m_table->keys[m_position])
+ while (m_position < m_table->numberOfValues && !m_table->values[m_position].m_key)
++m_position;
ASSERT(m_position <= m_table->numberOfValues);
}
@@ -179,18 +159,12 @@
ConstIterator begin() const
{
- initializeIfNeeded();
return ConstIterator(this, 0);
}
ConstIterator end() const
{
- initializeIfNeeded();
return ConstIterator(this, numberOfValues);
}
-
-private:
- // Convert the hash table keys to identifiers.
- JS_EXPORT_PRIVATE void createTable() const;
};
JS_EXPORT_PRIVATE bool setUpStaticFunctionSlot(ExecState*, const HashTableValue*, JSObject* thisObject, PropertyName, PropertySlot&);
Modified: trunk/Source/_javascript_Core/runtime/VM.cpp (188823 => 188824)
--- trunk/Source/_javascript_Core/runtime/VM.cpp 2015-08-22 17:42:46 UTC (rev 188823)
+++ trunk/Source/_javascript_Core/runtime/VM.cpp 2015-08-22 18:05:50 UTC (rev 188824)
@@ -154,7 +154,6 @@
, emptyList(new MarkedArgumentBuffer)
, stringCache(*this)
, prototypeMap(*this)
- , keywords(std::make_unique<Keywords>(*this))
, interpreter(0)
, jsArrayClassInfo(JSArray::info())
, jsFinalObjectClassInfo(JSFinalObject::info())
Modified: trunk/Source/_javascript_Core/runtime/VM.h (188823 => 188824)
--- trunk/Source/_javascript_Core/runtime/VM.h 2015-08-22 17:42:46 UTC (rev 188823)
+++ trunk/Source/_javascript_Core/runtime/VM.h 2015-08-22 18:05:50 UTC (rev 188824)
@@ -86,7 +86,6 @@
class Interpreter;
class JSGlobalObject;
class JSObject;
-class Keywords;
class LLIntOffsetsExtractor;
class LegacyProfiler;
class NativeExecutable;
@@ -349,7 +348,6 @@
typedef HashMap<RefPtr<SourceProvider>, RefPtr<SourceProviderCache>> SourceProviderCacheMap;
SourceProviderCacheMap sourceProviderCacheMap;
- std::unique_ptr<Keywords> keywords;
Interpreter* interpreter;
#if ENABLE(JIT)
std::unique_ptr<JITThunks> jitStubs;
Modified: trunk/Source/_javascript_Core/testRegExp.cpp (188823 => 188824)
--- trunk/Source/_javascript_Core/testRegExp.cpp 2015-08-22 17:42:46 UTC (rev 188823)
+++ trunk/Source/_javascript_Core/testRegExp.cpp 2015-08-22 18:05:50 UTC (rev 188824)
@@ -45,10 +45,6 @@
#include <windows.h>
#endif
-namespace JSC {
-WTF_IMPORT extern const struct HashTable globalObjectTable;
-}
-
const int MaxLineLength = 100 * 1024;
using namespace JSC;
@@ -137,7 +133,7 @@
}
};
-const ClassInfo GlobalObject::s_info = { "global", &JSGlobalObject::s_info, &globalObjectTable, CREATE_METHOD_TABLE(GlobalObject) };
+const ClassInfo GlobalObject::s_info = { "global", &JSGlobalObject::s_info, nullptr, CREATE_METHOD_TABLE(GlobalObject) };
GlobalObject::GlobalObject(VM& vm, Structure* structure, const Vector<String>& arguments)
: JSGlobalObject(vm, structure)
Modified: trunk/Source/WebCore/ChangeLog (188823 => 188824)
--- trunk/Source/WebCore/ChangeLog 2015-08-22 17:42:46 UTC (rev 188823)
+++ trunk/Source/WebCore/ChangeLog 2015-08-22 18:05:50 UTC (rev 188824)
@@ -1,3 +1,24 @@
+2015-08-22 Andreas Kling <[email protected]>
+
+ [JSC] Static hash tables should be 100% compile-time constant.
+ <https://webkit.org/b/148359>
+
+ Reviewed by Michael Saboff.
+
+ Adjust WebCore bindings generator for new JSC::HashTable layout
+ and rebaseline the bindings tests for that change.
+
+ * bindings/scripts/CodeGeneratorJS.pm:
+ (GenerateHashTable):
+ * bindings/scripts/test/JS/JSTestActiveDOMObject.cpp:
+ * bindings/scripts/test/JS/JSTestCustomNamedGetter.cpp:
+ * bindings/scripts/test/JS/JSTestEventTarget.cpp:
+ * bindings/scripts/test/JS/JSTestException.cpp:
+ * bindings/scripts/test/JS/JSTestInterface.cpp:
+ * bindings/scripts/test/JS/JSTestObj.cpp:
+ * bindings/scripts/test/JS/JSTestOverrideBuiltins.cpp:
+ * bindings/scripts/test/JS/JSTestTypedefs.cpp:
+
2015-08-22 Michael Catanzaro <[email protected]>
Unreviewed, fix build without ENABLE_CSS_GRID_LAYOUT after r188582
Modified: trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm (188823 => 188824)
--- trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm 2015-08-22 17:42:46 UTC (rev 188823)
+++ trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm 2015-08-22 18:05:50 UTC (rev 188824)
@@ -4228,7 +4228,7 @@
my $packedSize = scalar @{$keys};
my $compactSizeMask = $numEntries - 1;
- push(@implContent, "static const HashTable $name = { $packedSize, $compactSizeMask, $hasSetter, $nameEntries, 0, $nameIndex };\n");
+ push(@implContent, "static const HashTable $name = { $packedSize, $compactSizeMask, $hasSetter, $nameEntries, $nameIndex };\n");
}
sub WriteData
Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestActiveDOMObject.cpp (188823 => 188824)
--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestActiveDOMObject.cpp 2015-08-22 17:42:46 UTC (rev 188823)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestActiveDOMObject.cpp 2015-08-22 18:05:50 UTC (rev 188824)
@@ -104,7 +104,7 @@
{ "excitingAttr", DontDelete | ReadOnly | CustomAccessor, NoIntrinsic, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestActiveDOMObjectExcitingAttr), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(0) },
};
-static const HashTable JSTestActiveDOMObjectTable = { 2, 3, true, JSTestActiveDOMObjectTableValues, 0, JSTestActiveDOMObjectTableIndex };
+static const HashTable JSTestActiveDOMObjectTable = { 2, 3, true, JSTestActiveDOMObjectTableValues, JSTestActiveDOMObjectTableIndex };
const ClassInfo JSTestActiveDOMObjectConstructor::s_info = { "TestActiveDOMObjectConstructor", &Base::s_info, 0, CREATE_METHOD_TABLE(JSTestActiveDOMObjectConstructor) };
JSTestActiveDOMObjectConstructor::JSTestActiveDOMObjectConstructor(Structure* structure, JSDOMGlobalObject* globalObject)
Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCustomNamedGetter.cpp (188823 => 188824)
--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCustomNamedGetter.cpp 2015-08-22 17:42:46 UTC (rev 188823)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCustomNamedGetter.cpp 2015-08-22 18:05:50 UTC (rev 188824)
@@ -99,7 +99,7 @@
{ "constructor", DontEnum | ReadOnly, NoIntrinsic, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestCustomNamedGetterConstructor), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(0) },
};
-static const HashTable JSTestCustomNamedGetterTable = { 1, 1, true, JSTestCustomNamedGetterTableValues, 0, JSTestCustomNamedGetterTableIndex };
+static const HashTable JSTestCustomNamedGetterTable = { 1, 1, true, JSTestCustomNamedGetterTableValues, JSTestCustomNamedGetterTableIndex };
const ClassInfo JSTestCustomNamedGetterConstructor::s_info = { "TestCustomNamedGetterConstructor", &Base::s_info, 0, CREATE_METHOD_TABLE(JSTestCustomNamedGetterConstructor) };
JSTestCustomNamedGetterConstructor::JSTestCustomNamedGetterConstructor(Structure* structure, JSDOMGlobalObject* globalObject)
Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventTarget.cpp (188823 => 188824)
--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventTarget.cpp 2015-08-22 17:42:46 UTC (rev 188823)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventTarget.cpp 2015-08-22 18:05:50 UTC (rev 188824)
@@ -108,7 +108,7 @@
{ "constructor", DontEnum | ReadOnly, NoIntrinsic, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestEventTargetConstructor), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(0) },
};
-static const HashTable JSTestEventTargetTable = { 1, 1, true, JSTestEventTargetTableValues, 0, JSTestEventTargetTableIndex };
+static const HashTable JSTestEventTargetTable = { 1, 1, true, JSTestEventTargetTableValues, JSTestEventTargetTableIndex };
const ClassInfo JSTestEventTargetConstructor::s_info = { "TestEventTargetConstructor", &Base::s_info, 0, CREATE_METHOD_TABLE(JSTestEventTargetConstructor) };
JSTestEventTargetConstructor::JSTestEventTargetConstructor(Structure* structure, JSDOMGlobalObject* globalObject)
Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestException.cpp (188823 => 188824)
--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestException.cpp 2015-08-22 17:42:46 UTC (rev 188823)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestException.cpp 2015-08-22 18:05:50 UTC (rev 188824)
@@ -95,7 +95,7 @@
{ "name", DontDelete | ReadOnly | CustomAccessor, NoIntrinsic, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestExceptionName), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(0) },
};
-static const HashTable JSTestExceptionTable = { 1, 1, true, JSTestExceptionTableValues, 0, JSTestExceptionTableIndex };
+static const HashTable JSTestExceptionTable = { 1, 1, true, JSTestExceptionTableValues, JSTestExceptionTableIndex };
const ClassInfo JSTestExceptionConstructor::s_info = { "TestExceptionConstructor", &Base::s_info, 0, CREATE_METHOD_TABLE(JSTestExceptionConstructor) };
JSTestExceptionConstructor::JSTestExceptionConstructor(Structure* structure, JSDOMGlobalObject* globalObject)
Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterface.cpp (188823 => 188824)
--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterface.cpp 2015-08-22 17:42:46 UTC (rev 188823)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterface.cpp 2015-08-22 18:05:50 UTC (rev 188824)
@@ -194,7 +194,7 @@
#endif
};
-static const HashTable JSTestInterfaceTable = { 2, 3, true, JSTestInterfaceTableValues, 0, JSTestInterfaceTableIndex };
+static const HashTable JSTestInterfaceTable = { 2, 3, true, JSTestInterfaceTableValues, JSTestInterfaceTableIndex };
/* Hash table for constructor */
static const HashTableValue JSTestInterfaceConstructorTableValues[] =
Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp (188823 => 188824)
--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp 2015-08-22 17:42:46 UTC (rev 188823)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp 2015-08-22 18:05:50 UTC (rev 188824)
@@ -394,7 +394,7 @@
{ "contentDocument", DontDelete | ReadOnly | CustomAccessor, NoIntrinsic, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjContentDocument), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(0) },
};
-static const HashTable JSTestObjTable = { 6, 15, true, JSTestObjTableValues, 0, JSTestObjTableIndex };
+static const HashTable JSTestObjTable = { 6, 15, true, JSTestObjTableValues, JSTestObjTableIndex };
/* Hash table for constructor */
static const HashTableValue JSTestObjConstructorTableValues[] =
Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverrideBuiltins.cpp (188823 => 188824)
--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverrideBuiltins.cpp 2015-08-22 17:42:46 UTC (rev 188823)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverrideBuiltins.cpp 2015-08-22 18:05:50 UTC (rev 188824)
@@ -101,7 +101,7 @@
{ "constructor", DontEnum | ReadOnly, NoIntrinsic, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestOverrideBuiltinsConstructor), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(0) },
};
-static const HashTable JSTestOverrideBuiltinsTable = { 1, 1, true, JSTestOverrideBuiltinsTableValues, 0, JSTestOverrideBuiltinsTableIndex };
+static const HashTable JSTestOverrideBuiltinsTable = { 1, 1, true, JSTestOverrideBuiltinsTableValues, JSTestOverrideBuiltinsTableIndex };
const ClassInfo JSTestOverrideBuiltinsConstructor::s_info = { "TestOverrideBuiltinsConstructor", &Base::s_info, 0, CREATE_METHOD_TABLE(JSTestOverrideBuiltinsConstructor) };
JSTestOverrideBuiltinsConstructor::JSTestOverrideBuiltinsConstructor(Structure* structure, JSDOMGlobalObject* globalObject)
Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestTypedefs.cpp (188823 => 188824)
--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestTypedefs.cpp 2015-08-22 17:42:46 UTC (rev 188823)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestTypedefs.cpp 2015-08-22 18:05:50 UTC (rev 188824)
@@ -135,7 +135,7 @@
{ 0, 0, NoIntrinsic, 0, 0 }
};
-static const HashTable JSTestTypedefsTable = { 0, 1, false, JSTestTypedefsTableValues, 0, JSTestTypedefsTableIndex };
+static const HashTable JSTestTypedefsTable = { 0, 1, false, JSTestTypedefsTableValues, JSTestTypedefsTableIndex };
/* Hash table for constructor */
static const HashTableValue JSTestTypedefsConstructorTableValues[] =