| Index: src/ia32/stub-cache-ia32.cc
 | 
| ===================================================================
 | 
| --- src/ia32/stub-cache-ia32.cc	(revision 4394)
 | 
| +++ src/ia32/stub-cache-ia32.cc	(working copy)
 | 
| @@ -1948,7 +1948,33 @@
 | 
|  }
 | 
|  
 | 
|  
 | 
| +Object* LoadStubCompiler::CompileLoadNonExisting(JSObject* object) {
 | 
| +  // ----------- S t a t e -------------
 | 
| +  //  -- eax    : receiver
 | 
| +  //  -- ecx    : name
 | 
| +  //  -- esp[0] : return address
 | 
| +  // -----------------------------------
 | 
| +  Label miss;
 | 
|  
 | 
| +  // Check the maps of the full prototype chain.
 | 
| +  JSObject* last = object;
 | 
| +  while (last->GetPrototype() != Heap::null_value()) {
 | 
| +    last = JSObject::cast(last->GetPrototype());
 | 
| +  }
 | 
| +  CheckPrototypes(object, eax, last, ebx, edx, Heap::empty_string(), &miss);
 | 
| +
 | 
| +  // Return undefined if maps of the full prototype chain is still the same.
 | 
| +  __ mov(eax, Factory::undefined_value());
 | 
| +  __ ret(0);
 | 
| +
 | 
| +  __ bind(&miss);
 | 
| +  GenerateLoadMiss(masm(), Code::LOAD_IC);
 | 
| +
 | 
| +  // Return the generated code.
 | 
| +  return GetCode(NON_EXISTING, Heap::empty_string());
 | 
| +}
 | 
| +
 | 
| +
 | 
|  Object* LoadStubCompiler::CompileLoadField(JSObject* object,
 | 
|                                             JSObject* holder,
 | 
|                                             int index,
 | 
| 
 |