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; |