| Index: src/code-stub-assembler.h
 | 
| diff --git a/src/code-stub-assembler.h b/src/code-stub-assembler.h
 | 
| index f10e3ad948c227d9c6bc6fd11a4c443de7ad51dc..f29701020791ffe5f67d9099c2236a2b4836d204 100644
 | 
| --- a/src/code-stub-assembler.h
 | 
| +++ b/src/code-stub-assembler.h
 | 
| @@ -5,6 +5,8 @@
 | 
|  #ifndef V8_CODE_STUB_ASSEMBLER_H_
 | 
|  #define V8_CODE_STUB_ASSEMBLER_H_
 | 
|  
 | 
| +#include <functional>
 | 
| +
 | 
|  #include "src/compiler/code-assembler.h"
 | 
|  #include "src/objects.h"
 | 
|  
 | 
| @@ -270,6 +272,11 @@ class CodeStubAssembler : public compiler::CodeAssembler {
 | 
|    void IncrementCounter(StatsCounter* counter, int delta);
 | 
|    void DecrementCounter(StatsCounter* counter, int delta);
 | 
|  
 | 
| +  // Generates "if (false) goto label" code. Useful for marking a label as
 | 
| +  // "live" to avoid assertion failures during graph building. In the resulting
 | 
| +  // code this check will be eliminated.
 | 
| +  void Use(Label* label);
 | 
| +
 | 
|    // Various building blocks for stubs doing property lookups.
 | 
|    void TryToName(compiler::Node* key, Label* if_keyisindex, Variable* var_index,
 | 
|                   Label* if_keyisunique, Label* if_bailout);
 | 
| @@ -356,6 +363,26 @@ class CodeStubAssembler : public compiler::CodeAssembler {
 | 
|                          Label* if_found, Label* if_not_found,
 | 
|                          Label* if_bailout);
 | 
|  
 | 
| +  // This is a type of a lookup in holder generator function. In case of a
 | 
| +  // property lookup the {key} is guaranteed to be a unique name and in case of
 | 
| +  // element lookup the key is an Int32 index.
 | 
| +  typedef std::function<void(compiler::Node* receiver, compiler::Node* holder,
 | 
| +                             compiler::Node* map, compiler::Node* instance_type,
 | 
| +                             compiler::Node* key, Label* next_holder,
 | 
| +                             Label* if_bailout)>
 | 
| +      LookupInHolder;
 | 
| +
 | 
| +  // Generic property prototype chain lookup generator.
 | 
| +  // For properties it generates lookup using given {lookup_property_in_holder}
 | 
| +  // and for elements it uses {lookup_element_in_holder}.
 | 
| +  // Upon reaching the end of prototype chain the control goes to {if_end}.
 | 
| +  // If it can't handle the case {receiver}/{key} case then the control goes
 | 
| +  // to {if_bailout}.
 | 
| +  void TryPrototypeChainLookup(compiler::Node* receiver, compiler::Node* key,
 | 
| +                               LookupInHolder& lookup_property_in_holder,
 | 
| +                               LookupInHolder& lookup_element_in_holder,
 | 
| +                               Label* if_end, Label* if_bailout);
 | 
| +
 | 
|    // Instanceof helpers.
 | 
|    // ES6 section 7.3.19 OrdinaryHasInstance (C, O)
 | 
|    compiler::Node* OrdinaryHasInstance(compiler::Node* context,
 | 
| 
 |