| Index: src/objects.h
 | 
| ===================================================================
 | 
| --- src/objects.h	(revision 11812)
 | 
| +++ src/objects.h	(working copy)
 | 
| @@ -5229,6 +5229,25 @@
 | 
|    // [code]: Function code.
 | 
|    DECL_ACCESSORS(code, Code)
 | 
|  
 | 
| +  // [optimized_code_map]: Map from global context to optimized code
 | 
| +  // and a shared literals array or Smi 0 if none.
 | 
| +  DECL_ACCESSORS(optimized_code_map, Object)
 | 
| +
 | 
| +  // Returns index i of the entry with the specified context. At position
 | 
| +  // i - 1 is the context, position i the code, and i + 1 the literals array.
 | 
| +  // Returns -1 when no matching entry is found.
 | 
| +  int SearchOptimizedCodeMap(Context* global_context);
 | 
| +
 | 
| +  // Clear optimized code map.
 | 
| +  void ClearOptimizedCodeMap();
 | 
| +
 | 
| +  // Add a new entry to the optimized code map.
 | 
| +  static void AddToOptimizedCodeMap(Handle<SharedFunctionInfo> shared,
 | 
| +                                    Handle<Context> global_context,
 | 
| +                                    Handle<Code> code,
 | 
| +                                    Handle<FixedArray> literals);
 | 
| +  static const int kEntryLength = 3;
 | 
| +
 | 
|    // [scope_info]: Scope info.
 | 
|    DECL_ACCESSORS(scope_info, ScopeInfo)
 | 
|  
 | 
| @@ -5336,6 +5355,10 @@
 | 
|    // IsInobjectSlackTrackingInProgress is false after this call.
 | 
|    void CompleteInobjectSlackTracking();
 | 
|  
 | 
| +  // Invoked before pointers in SharedFunctionInfo are being marked.
 | 
| +  // Also clears the optimized code map.
 | 
| +  inline void BeforeVisitingPointers();
 | 
| +
 | 
|    // Clears the initial_map before the GC marking phase to ensure the reference
 | 
|    // is weak. IsInobjectSlackTrackingInProgress is false after this call.
 | 
|    void DetachInitialMap();
 | 
| @@ -5613,7 +5636,8 @@
 | 
|    // Pointer fields.
 | 
|    static const int kNameOffset = HeapObject::kHeaderSize;
 | 
|    static const int kCodeOffset = kNameOffset + kPointerSize;
 | 
| -  static const int kScopeInfoOffset = kCodeOffset + kPointerSize;
 | 
| +  static const int kOptimizedCodeMapOffset = kCodeOffset + kPointerSize;
 | 
| +  static const int kScopeInfoOffset = kOptimizedCodeMapOffset + kPointerSize;
 | 
|    static const int kConstructStubOffset = kScopeInfoOffset + kPointerSize;
 | 
|    static const int kInstanceClassNameOffset =
 | 
|        kConstructStubOffset + kPointerSize;
 | 
| 
 |