| Index: src/builtins/builtins-constructor.h | 
| diff --git a/src/builtins/builtins-constructor.h b/src/builtins/builtins-constructor.h | 
| index b58522eb82f225084e9f9e96195035570acb606b..86c412b91f714bf79d2d96c23bbaa88cd48195b1 100644 | 
| --- a/src/builtins/builtins-constructor.h | 
| +++ b/src/builtins/builtins-constructor.h | 
| @@ -9,6 +9,7 @@ namespace internal { | 
|  | 
| typedef compiler::Node Node; | 
| typedef compiler::CodeAssemblerState CodeAssemblerState; | 
| +typedef compiler::CodeAssemblerLabel CodeAssemblerLabel; | 
|  | 
| class ConstructorBuiltinsAssembler : public CodeStubAssembler { | 
| public: | 
| @@ -20,10 +21,37 @@ class ConstructorBuiltinsAssembler : public CodeStubAssembler { | 
| ScopeType scope_type); | 
| static int MaximumFunctionContextSlots(); | 
|  | 
| +  Node* EmitFastCloneRegExp(Node* closure, Node* literal_index, Node* pattern, | 
| +                            Node* flags, Node* context); | 
| +  Node* EmitFastCloneShallowArray(Node* closure, Node* literal_index, | 
| +                                  Node* context, | 
| +                                  CodeAssemblerLabel* call_runtime, | 
| +                                  AllocationSiteMode allocation_site_mode); | 
| + | 
| +  // Maximum number of elements in copied array (chosen so that even an array | 
| +  // backed by a double backing store will fit into new-space). | 
| +  static const int kMaximumClonedShallowArrayElements = | 
| +      JSArray::kInitialMaxFastElementArray * kPointerSize / kDoubleSize; | 
| + | 
| +  void CreateFastCloneShallowArrayBuiltin( | 
| +      AllocationSiteMode allocation_site_mode); | 
| + | 
| +  // Maximum number of properties in copied objects. | 
| +  static const int kMaximumClonedShallowObjectProperties = 6; | 
| +  static int FastCloneShallowObjectPropertiesCount(int literal_length); | 
| +  Node* EmitFastCloneShallowObject(CodeAssemblerLabel* call_runtime, | 
| +                                   Node* closure, Node* literals_index, | 
| +                                   Node* properties_count); | 
| +  void CreateFastCloneShallowObjectBuiltin(int properties_count); | 
| + | 
| private: | 
| static const int kMaximumSlots = 0x8000; | 
| static const int kSmallMaximumSlots = 10; | 
|  | 
| +  Node* NonEmptyShallowClone(Node* boilerplate, Node* boilerplate_map, | 
| +                             Node* boilerplate_elements, Node* allocation_site, | 
| +                             Node* capacity, ElementsKind kind); | 
| + | 
| // FastNewFunctionContext can only allocate closures which fit in the | 
| // new space. | 
| STATIC_ASSERT(((kMaximumSlots + Context::MIN_CONTEXT_SLOTS) * kPointerSize + | 
|  |