Index: src/ia32/ic-ia32.cc |
diff --git a/src/ia32/ic-ia32.cc b/src/ia32/ic-ia32.cc |
index 83a4496b73ee047b2eeec162929352c99f286e85..b0e4ca0c60c2675899383b5a0fd95fe16546115d 100644 |
--- a/src/ia32/ic-ia32.cc |
+++ b/src/ia32/ic-ia32.cc |
@@ -947,15 +947,19 @@ void LoadIC::GenerateNormal(MacroAssembler* masm) { |
// -- edx : receiver |
// -- esp[0] : return address |
// ----------------------------------- |
- Label miss; |
+ Label miss, slow; |
GenerateNameDictionaryReceiverCheck(masm, edx, eax, ebx, &miss); |
// eax: elements |
// Search the dictionary placing the result in eax. |
- GenerateDictionaryLoad(masm, &miss, eax, ecx, edi, ebx, eax); |
+ GenerateDictionaryLoad(masm, &slow, eax, ecx, edi, ebx, eax); |
__ ret(0); |
+ // Dictionary load failed, go slow (but don't miss). |
+ __ bind(&slow); |
+ GenerateRuntimeGetProperty(masm); |
+ |
// Cache miss: Jump to runtime. |
__ bind(&miss); |
GenerateMiss(masm); |