+2008-05-21 Maciej Stachowiak <mjs@apple.com>
+
+ Reviewed by Darin.
+
+ - save a hash lookup wne writing to global properties
+ 0.3% speedup on SunSpider, 7% on bitops-bitwise-and
+
+ * VM/Machine.cpp:
+ (KJS::resolveBase): Check for being a the end of the scope chain
+ before hash lookup.
+
2008-05-21 Alp Toker <alp@nuanti.com>
Rubber-stamped by Maciej.
int property = (vPC + 2)->u.operand;
ScopeChainIterator iter = scopeChain->begin();
+ ScopeChainIterator next = iter;
+ ++next;
ScopeChainIterator end = scopeChain->end();
ASSERT(iter != end);
PropertySlot slot;
Identifier& ident = codeBlock->identifiers[property];
JSObject* base;
- do {
+ while (true) {
base = *iter;
- if (base->getPropertySlot(exec, ident, slot)) {
+ if (next == end || base->getPropertySlot(exec, ident, slot)) {
r[dst].u.jsValue = base;
return;
}
- } while (++iter != end);
-
- r[dst].u.jsValue = base;
+ iter = next;
+ ++next;
+ }
}
static bool NEVER_INLINE resolveBaseAndProperty(ExecState* exec, Instruction* vPC, Register* r, ScopeChainNode* scopeChain, CodeBlock* codeBlock, JSValue*& exceptionValue)