OLD | NEW |
1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
4 // met: | 4 // met: |
5 // | 5 // |
6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
(...skipping 5121 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5132 // SharedFunctionInfo describes the JSFunction information that can be | 5132 // SharedFunctionInfo describes the JSFunction information that can be |
5133 // shared by multiple instances of the function. | 5133 // shared by multiple instances of the function. |
5134 class SharedFunctionInfo: public HeapObject { | 5134 class SharedFunctionInfo: public HeapObject { |
5135 public: | 5135 public: |
5136 // [name]: Function name. | 5136 // [name]: Function name. |
5137 DECL_ACCESSORS(name, Object) | 5137 DECL_ACCESSORS(name, Object) |
5138 | 5138 |
5139 // [code]: Function code. | 5139 // [code]: Function code. |
5140 DECL_ACCESSORS(code, Code) | 5140 DECL_ACCESSORS(code, Code) |
5141 | 5141 |
| 5142 // [optimized_code_map]: Map from global context to optimized code |
| 5143 // or Smi 0 if none. |
| 5144 DECL_ACCESSORS(optimized_code_map, Object) |
| 5145 |
| 5146 Code* SearchOptimizedCodeMap(Context* global_context); |
| 5147 |
5142 // [scope_info]: Scope info. | 5148 // [scope_info]: Scope info. |
5143 DECL_ACCESSORS(scope_info, ScopeInfo) | 5149 DECL_ACCESSORS(scope_info, ScopeInfo) |
5144 | 5150 |
5145 // [construct stub]: Code stub for constructing instances of this function. | 5151 // [construct stub]: Code stub for constructing instances of this function. |
5146 DECL_ACCESSORS(construct_stub, Code) | 5152 DECL_ACCESSORS(construct_stub, Code) |
5147 | 5153 |
5148 inline Code* unchecked_code(); | 5154 inline Code* unchecked_code(); |
5149 | 5155 |
5150 // Returns if this function has been compiled to native code yet. | 5156 // Returns if this function has been compiled to native code yet. |
5151 inline bool is_compiled(); | 5157 inline bool is_compiled(); |
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5239 // Stores the initial map and installs the countdown stub. | 5245 // Stores the initial map and installs the countdown stub. |
5240 // IsInobjectSlackTrackingInProgress is normally true after this call, | 5246 // IsInobjectSlackTrackingInProgress is normally true after this call, |
5241 // except when tracking have not been started (e.g. the map has no unused | 5247 // except when tracking have not been started (e.g. the map has no unused |
5242 // properties or the snapshot is being built). | 5248 // properties or the snapshot is being built). |
5243 void StartInobjectSlackTracking(Map* map); | 5249 void StartInobjectSlackTracking(Map* map); |
5244 | 5250 |
5245 // Completes the tracking. | 5251 // Completes the tracking. |
5246 // IsInobjectSlackTrackingInProgress is false after this call. | 5252 // IsInobjectSlackTrackingInProgress is false after this call. |
5247 void CompleteInobjectSlackTracking(); | 5253 void CompleteInobjectSlackTracking(); |
5248 | 5254 |
| 5255 // Invoked before pointers in SharedFunctionInfo are being marked. |
| 5256 inline void BeforeVisitingPointers(); |
| 5257 |
5249 // Clears the initial_map before the GC marking phase to ensure the reference | 5258 // Clears the initial_map before the GC marking phase to ensure the reference |
5250 // is weak. IsInobjectSlackTrackingInProgress is false after this call. | 5259 // is weak. IsInobjectSlackTrackingInProgress is false after this call. |
5251 void DetachInitialMap(); | 5260 void DetachInitialMap(); |
5252 | 5261 |
5253 // Restores the link to the initial map after the GC marking phase. | 5262 // Restores the link to the initial map after the GC marking phase. |
5254 // IsInobjectSlackTrackingInProgress is true after this call. | 5263 // IsInobjectSlackTrackingInProgress is true after this call. |
5255 void AttachInitialMap(Map* map); | 5264 void AttachInitialMap(Map* map); |
5256 | 5265 |
5257 // False if there are definitely no live objects created from this function. | 5266 // False if there are definitely no live objects created from this function. |
5258 // True if live objects _may_ exist (existence not guaranteed). | 5267 // True if live objects _may_ exist (existence not guaranteed). |
(...skipping 238 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5497 // Casting. | 5506 // Casting. |
5498 static inline SharedFunctionInfo* cast(Object* obj); | 5507 static inline SharedFunctionInfo* cast(Object* obj); |
5499 | 5508 |
5500 // Constants. | 5509 // Constants. |
5501 static const int kDontAdaptArgumentsSentinel = -1; | 5510 static const int kDontAdaptArgumentsSentinel = -1; |
5502 | 5511 |
5503 // Layout description. | 5512 // Layout description. |
5504 // Pointer fields. | 5513 // Pointer fields. |
5505 static const int kNameOffset = HeapObject::kHeaderSize; | 5514 static const int kNameOffset = HeapObject::kHeaderSize; |
5506 static const int kCodeOffset = kNameOffset + kPointerSize; | 5515 static const int kCodeOffset = kNameOffset + kPointerSize; |
5507 static const int kScopeInfoOffset = kCodeOffset + kPointerSize; | 5516 static const int kOptimizedCodeMapOffset = kCodeOffset + kPointerSize; |
| 5517 static const int kScopeInfoOffset = kOptimizedCodeMapOffset + kPointerSize; |
5508 static const int kConstructStubOffset = kScopeInfoOffset + kPointerSize; | 5518 static const int kConstructStubOffset = kScopeInfoOffset + kPointerSize; |
5509 static const int kInstanceClassNameOffset = | 5519 static const int kInstanceClassNameOffset = |
5510 kConstructStubOffset + kPointerSize; | 5520 kConstructStubOffset + kPointerSize; |
5511 static const int kFunctionDataOffset = | 5521 static const int kFunctionDataOffset = |
5512 kInstanceClassNameOffset + kPointerSize; | 5522 kInstanceClassNameOffset + kPointerSize; |
5513 static const int kScriptOffset = kFunctionDataOffset + kPointerSize; | 5523 static const int kScriptOffset = kFunctionDataOffset + kPointerSize; |
5514 static const int kDebugInfoOffset = kScriptOffset + kPointerSize; | 5524 static const int kDebugInfoOffset = kScriptOffset + kPointerSize; |
5515 static const int kInferredNameOffset = kDebugInfoOffset + kPointerSize; | 5525 static const int kInferredNameOffset = kDebugInfoOffset + kPointerSize; |
5516 static const int kInitialMapOffset = | 5526 static const int kInitialMapOffset = |
5517 kInferredNameOffset + kPointerSize; | 5527 kInferredNameOffset + kPointerSize; |
(...skipping 3111 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
8629 } else { | 8639 } else { |
8630 value &= ~(1 << bit_position); | 8640 value &= ~(1 << bit_position); |
8631 } | 8641 } |
8632 return value; | 8642 return value; |
8633 } | 8643 } |
8634 }; | 8644 }; |
8635 | 8645 |
8636 } } // namespace v8::internal | 8646 } } // namespace v8::internal |
8637 | 8647 |
8638 #endif // V8_OBJECTS_H_ | 8648 #endif // V8_OBJECTS_H_ |
OLD | NEW |