diff options
author | Bradley T. Hughes <bradley.hughes@nokia.com> | 2009-06-15 09:57:36 (GMT) |
---|---|---|
committer | Bradley T. Hughes <bradley.hughes@nokia.com> | 2009-06-15 09:57:36 (GMT) |
commit | 336dfcef05cb63df0a6d550b59a4badc7a0f01c1 (patch) | |
tree | a218ec97413e0c8ebc9600ac5db9b2adea485b32 /src/3rdparty/webkit/JavaScriptCore/runtime/Lookup.cpp | |
parent | e44d64510e019e5d3b379b704cfb824e0d7ccc9d (diff) | |
download | Qt-336dfcef05cb63df0a6d550b59a4badc7a0f01c1.zip Qt-336dfcef05cb63df0a6d550b59a4badc7a0f01c1.tar.gz Qt-336dfcef05cb63df0a6d550b59a4badc7a0f01c1.tar.bz2 |
Merge of master
Diffstat (limited to 'src/3rdparty/webkit/JavaScriptCore/runtime/Lookup.cpp')
-rw-r--r-- | src/3rdparty/webkit/JavaScriptCore/runtime/Lookup.cpp | 26 |
1 files changed, 5 insertions, 21 deletions
diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/Lookup.cpp b/src/3rdparty/webkit/JavaScriptCore/runtime/Lookup.cpp index 98133a8..8359ff7 100644 --- a/src/3rdparty/webkit/JavaScriptCore/runtime/Lookup.cpp +++ b/src/3rdparty/webkit/JavaScriptCore/runtime/Lookup.cpp @@ -20,25 +20,13 @@ #include "config.h" #include "Lookup.h" +#include "JSFunction.h" #include "PrototypeFunction.h" namespace JSC { void HashTable::createTable(JSGlobalData* globalData) const { -#if ENABLE(PERFECT_HASH_SIZE) - ASSERT(!table); - HashEntry* entries = new HashEntry[hashSizeMask + 1]; - for (int i = 0; i <= hashSizeMask; ++i) - entries[i].setKey(0); - for (int i = 0; values[i].key; ++i) { - UString::Rep* identifier = Identifier::add(globalData, values[i].key).releaseRef(); - int hashIndex = identifier->computedHash() & hashSizeMask; - ASSERT(!entries[hashIndex].key()); - entries[hashIndex].initialize(identifier, values[i].attributes, values[i].value1, values[i].value2); - } - table = entries; -#else ASSERT(!table); int linkIndex = compactHashSizeMask + 1; HashEntry* entries = new HashEntry[compactSize]; @@ -61,17 +49,12 @@ void HashTable::createTable(JSGlobalData* globalData) const entry->initialize(identifier, values[i].attributes, values[i].value1, values[i].value2); } table = entries; -#endif } void HashTable::deleteTable() const { if (table) { -#if ENABLE(PERFECT_HASH_SIZE) - int max = hashSizeMask + 1; -#else int max = compactSize; -#endif for (int i = 0; i != max; ++i) { if (UString::Rep* key = table[i].key()) key->deref(); @@ -84,11 +67,12 @@ void HashTable::deleteTable() const void setUpStaticFunctionSlot(ExecState* exec, const HashEntry* entry, JSObject* thisObj, const Identifier& propertyName, PropertySlot& slot) { ASSERT(entry->attributes() & Function); - JSValuePtr* location = thisObj->getDirectLocation(propertyName); + JSValue* location = thisObj->getDirectLocation(propertyName); if (!location) { - PrototypeFunction* function = new (exec) PrototypeFunction(exec, entry->functionLength(), propertyName, entry->function()); - thisObj->putDirect(propertyName, function, entry->attributes()); + InternalFunction* function = new (exec) NativeFunctionWrapper(exec, exec->lexicalGlobalObject()->prototypeFunctionStructure(), entry->functionLength(), propertyName, entry->function()); + + thisObj->putDirectFunction(propertyName, function, entry->attributes()); location = thisObj->getDirectLocation(propertyName); } |