| OLD | NEW |
| 1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #ifndef V8_FRAMES_H_ | 5 #ifndef V8_FRAMES_H_ |
| 6 #define V8_FRAMES_H_ | 6 #define V8_FRAMES_H_ |
| 7 | 7 |
| 8 #include "src/allocation.h" | 8 #include "src/allocation.h" |
| 9 #include "src/handles.h" | 9 #include "src/handles.h" |
| 10 #include "src/safepoint-table.h" | 10 #include "src/safepoint-table.h" |
| (...skipping 260 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 271 Address* constant_pool_address() const { | 271 Address* constant_pool_address() const { |
| 272 return state_.constant_pool_address; | 272 return state_.constant_pool_address; |
| 273 } | 273 } |
| 274 | 274 |
| 275 // Get the id of this stack frame. | 275 // Get the id of this stack frame. |
| 276 Id id() const { return static_cast<Id>(OffsetFrom(caller_sp())); } | 276 Id id() const { return static_cast<Id>(OffsetFrom(caller_sp())); } |
| 277 | 277 |
| 278 // Checks if this frame includes any stack handlers. | 278 // Checks if this frame includes any stack handlers. |
| 279 bool HasHandler() const; | 279 bool HasHandler() const; |
| 280 | 280 |
| 281 // Get the top handler from the current stack iterator. |
| 282 inline StackHandler* top_handler() const; |
| 283 |
| 281 // Get the type of this frame. | 284 // Get the type of this frame. |
| 282 virtual Type type() const = 0; | 285 virtual Type type() const = 0; |
| 283 | 286 |
| 284 // Get the code associated with this frame. | 287 // Get the code associated with this frame. |
| 285 // This method could be called during marking phase of GC. | 288 // This method could be called during marking phase of GC. |
| 286 virtual Code* unchecked_code() const = 0; | 289 virtual Code* unchecked_code() const = 0; |
| 287 | 290 |
| 288 // Get the code associated with this frame. | 291 // Get the code associated with this frame. |
| 289 inline Code* LookupCode() const; | 292 inline Code* LookupCode() const; |
| 290 | 293 |
| (...skipping 13 matching lines...) Expand all Loading... |
| 304 | 307 |
| 305 // Sets a callback function for return-address rewriting profilers | 308 // Sets a callback function for return-address rewriting profilers |
| 306 // to resolve the location of a return address to the location of the | 309 // to resolve the location of a return address to the location of the |
| 307 // profiler's stashed return address. | 310 // profiler's stashed return address. |
| 308 static void SetReturnAddressLocationResolver( | 311 static void SetReturnAddressLocationResolver( |
| 309 ReturnAddressLocationResolver resolver); | 312 ReturnAddressLocationResolver resolver); |
| 310 | 313 |
| 311 // Resolves pc_address through the resolution address function if one is set. | 314 // Resolves pc_address through the resolution address function if one is set. |
| 312 static inline Address* ResolveReturnAddressLocation(Address* pc_address); | 315 static inline Address* ResolveReturnAddressLocation(Address* pc_address); |
| 313 | 316 |
| 314 | |
| 315 // Printing support. | 317 // Printing support. |
| 316 enum PrintMode { OVERVIEW, DETAILS }; | 318 enum PrintMode { OVERVIEW, DETAILS }; |
| 317 virtual void Print(StringStream* accumulator, | 319 virtual void Print(StringStream* accumulator, |
| 318 PrintMode mode, | 320 PrintMode mode, |
| 319 int index) const { } | 321 int index) const { } |
| 320 | 322 |
| 321 Isolate* isolate() const { return isolate_; } | 323 Isolate* isolate() const { return isolate_; } |
| 322 | 324 |
| 323 protected: | 325 protected: |
| 324 inline explicit StackFrame(StackFrameIteratorBase* iterator); | 326 inline explicit StackFrame(StackFrameIteratorBase* iterator); |
| 325 virtual ~StackFrame() { } | 327 virtual ~StackFrame() { } |
| 326 | 328 |
| 327 // Compute the stack pointer for the calling frame. | 329 // Compute the stack pointer for the calling frame. |
| 328 virtual Address GetCallerStackPointer() const = 0; | 330 virtual Address GetCallerStackPointer() const = 0; |
| 329 | 331 |
| 330 // Printing support. | 332 // Printing support. |
| 331 static void PrintIndex(StringStream* accumulator, | 333 static void PrintIndex(StringStream* accumulator, |
| 332 PrintMode mode, | 334 PrintMode mode, |
| 333 int index); | 335 int index); |
| 334 | 336 |
| 335 // Get the top handler from the current stack iterator. | |
| 336 inline StackHandler* top_handler() const; | |
| 337 | |
| 338 // Compute the stack frame type for the given state. | 337 // Compute the stack frame type for the given state. |
| 339 static Type ComputeType(const StackFrameIteratorBase* iterator, State* state); | 338 static Type ComputeType(const StackFrameIteratorBase* iterator, State* state); |
| 340 | 339 |
| 341 #ifdef DEBUG | 340 #ifdef DEBUG |
| 342 bool can_access_heap_objects() const; | 341 bool can_access_heap_objects() const; |
| 343 #endif | 342 #endif |
| 344 | 343 |
| 345 private: | 344 private: |
| 346 const StackFrameIteratorBase* iterator_; | 345 const StackFrameIteratorBase* iterator_; |
| 347 Isolate* isolate_; | 346 Isolate* isolate_; |
| (...skipping 591 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 939 }; | 938 }; |
| 940 | 939 |
| 941 | 940 |
| 942 // Reads all frames on the current stack and copies them into the current | 941 // Reads all frames on the current stack and copies them into the current |
| 943 // zone memory. | 942 // zone memory. |
| 944 Vector<StackFrame*> CreateStackMap(Isolate* isolate, Zone* zone); | 943 Vector<StackFrame*> CreateStackMap(Isolate* isolate, Zone* zone); |
| 945 | 944 |
| 946 } } // namespace v8::internal | 945 } } // namespace v8::internal |
| 947 | 946 |
| 948 #endif // V8_FRAMES_H_ | 947 #endif // V8_FRAMES_H_ |
| OLD | NEW |