diff options
author | Olivier Goffart <ogoffart@trolltech.com> | 2009-11-17 17:41:58 (GMT) |
---|---|---|
committer | Olivier Goffart <ogoffart@trolltech.com> | 2009-11-17 17:42:39 (GMT) |
commit | 484a6043ef84df3d0d01a19247ea2c89eb8b309f (patch) | |
tree | 43cbe0e0da00eff1f82a8ac5a641453cb730ce40 /src/3rdparty/webkit/JavaScriptCore/interpreter/Interpreter.cpp | |
parent | 67b7d3ee2c30a710e765252a29ecb9a0ffd0a7a6 (diff) | |
parent | a61adccf96a8ceefbf1150966adda3f6d226ec6d (diff) | |
download | Qt-484a6043ef84df3d0d01a19247ea2c89eb8b309f.zip Qt-484a6043ef84df3d0d01a19247ea2c89eb8b309f.tar.gz Qt-484a6043ef84df3d0d01a19247ea2c89eb8b309f.tar.bz2 |
Merge upstream/4.6 into oslo-staging-2
Diffstat (limited to 'src/3rdparty/webkit/JavaScriptCore/interpreter/Interpreter.cpp')
-rw-r--r-- | src/3rdparty/webkit/JavaScriptCore/interpreter/Interpreter.cpp | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/src/3rdparty/webkit/JavaScriptCore/interpreter/Interpreter.cpp b/src/3rdparty/webkit/JavaScriptCore/interpreter/Interpreter.cpp index c77a0f1..db0edc4 100644 --- a/src/3rdparty/webkit/JavaScriptCore/interpreter/Interpreter.cpp +++ b/src/3rdparty/webkit/JavaScriptCore/interpreter/Interpreter.cpp @@ -1029,6 +1029,11 @@ NEVER_INLINE void Interpreter::tryCacheGetByID(CallFrame* callFrame, CodeBlock* return; } + if (structure->isDictionary()) { + vPC[0] = getOpcode(op_get_by_id_generic); + return; + } + if (slot.slotBase() == structure->prototypeForLookup(callFrame)) { ASSERT(slot.slotBase().isObject()); @@ -1039,6 +1044,8 @@ NEVER_INLINE void Interpreter::tryCacheGetByID(CallFrame* callFrame, CodeBlock* if (baseObject->structure()->isDictionary()) baseObject->setStructure(Structure::fromDictionaryTransition(baseObject->structure())); + ASSERT(!baseObject->structure()->isUncacheableDictionary()); + vPC[0] = getOpcode(op_get_by_id_proto); vPC[5] = baseObject->structure(); vPC[6] = slot.cachedOffset(); @@ -2134,6 +2141,7 @@ JSValue Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registerFi int offset = vPC[6].u.operand; ASSERT(protoObject->get(callFrame, callFrame->codeBlock()->identifier(vPC[3].u.operand)) == protoObject->getDirectOffset(offset)); + ASSERT(baseValue.get(callFrame, callFrame->codeBlock()->identifier(vPC[3].u.operand)) == protoObject->getDirectOffset(offset)); callFrame->r(dst) = JSValue(protoObject->getDirectOffset(offset)); vPC += OPCODE_LENGTH(op_get_by_id_proto); @@ -2189,6 +2197,7 @@ JSValue Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registerFi int offset = vPC[7].u.operand; ASSERT(baseObject->get(callFrame, callFrame->codeBlock()->identifier(vPC[3].u.operand)) == baseObject->getDirectOffset(offset)); + ASSERT(baseValue.get(callFrame, callFrame->codeBlock()->identifier(vPC[3].u.operand)) == baseObject->getDirectOffset(offset)); callFrame->r(dst) = JSValue(baseObject->getDirectOffset(offset)); vPC += OPCODE_LENGTH(op_get_by_id_chain); |