| 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 112 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 123   // Accessors. | 123   // Accessors. | 
| 124   inline Kind kind() const; | 124   inline Kind kind() const; | 
| 125 | 125 | 
| 126   inline Object** context_address() const; | 126   inline Object** context_address() const; | 
| 127   inline Object** code_address() const; | 127   inline Object** code_address() const; | 
| 128 | 128 | 
| 129   DISALLOW_IMPLICIT_CONSTRUCTORS(StackHandler); | 129   DISALLOW_IMPLICIT_CONSTRUCTORS(StackHandler); | 
| 130 }; | 130 }; | 
| 131 | 131 | 
| 132 | 132 | 
| 133 #define STACK_FRAME_TYPE_LIST(V)              \ | 133 #define STACK_FRAME_TYPE_LIST(V)                         \ | 
| 134   V(ENTRY,             EntryFrame)            \ | 134   V(ENTRY,                   EntryFrame)                 \ | 
| 135   V(ENTRY_CONSTRUCT,   EntryConstructFrame)   \ | 135   V(ENTRY_CONSTRUCT,         EntryConstructFrame)        \ | 
| 136   V(EXIT,              ExitFrame)             \ | 136   V(EXIT,                    ExitFrame)                  \ | 
| 137   V(JAVA_SCRIPT,       JavaScriptFrame)       \ | 137   V(JAVA_SCRIPT,             JavaScriptFrame)            \ | 
| 138   V(OPTIMIZED,         OptimizedFrame)        \ | 138   V(OPTIMIZED,               OptimizedFrame)             \ | 
| 139   V(STUB,              StubFrame)             \ | 139   V(STUB,                    StubFrame)                  \ | 
| 140   V(INTERNAL,          InternalFrame)         \ | 140   V(STUB_FAILURE_TRAMPOLINE, StubFailureTrampolineFrame) \ | 
| 141   V(CONSTRUCT,         ConstructFrame)        \ | 141   V(INTERNAL,                InternalFrame)              \ | 
| 142   V(ARGUMENTS_ADAPTOR, ArgumentsAdaptorFrame) | 142   V(CONSTRUCT,               ConstructFrame)             \ | 
|  | 143   V(ARGUMENTS_ADAPTOR,       ArgumentsAdaptorFrame) | 
| 143 | 144 | 
| 144 | 145 | 
| 145 // Abstract base class for all stack frames. | 146 // Abstract base class for all stack frames. | 
| 146 class StackFrame BASE_EMBEDDED { | 147 class StackFrame BASE_EMBEDDED { | 
| 147  public: | 148  public: | 
| 148 #define DECLARE_TYPE(type, ignore) type, | 149 #define DECLARE_TYPE(type, ignore) type, | 
| 149   enum Type { | 150   enum Type { | 
| 150     NONE = 0, | 151     NONE = 0, | 
| 151     STACK_FRAME_TYPE_LIST(DECLARE_TYPE) | 152     STACK_FRAME_TYPE_LIST(DECLARE_TYPE) | 
| 152     NUMBER_OF_TYPES, | 153     NUMBER_OF_TYPES, | 
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 187     this->isolate_ = original.isolate_; | 188     this->isolate_ = original.isolate_; | 
| 188   } | 189   } | 
| 189 | 190 | 
| 190   // Type testers. | 191   // Type testers. | 
| 191   bool is_entry() const { return type() == ENTRY; } | 192   bool is_entry() const { return type() == ENTRY; } | 
| 192   bool is_entry_construct() const { return type() == ENTRY_CONSTRUCT; } | 193   bool is_entry_construct() const { return type() == ENTRY_CONSTRUCT; } | 
| 193   bool is_exit() const { return type() == EXIT; } | 194   bool is_exit() const { return type() == EXIT; } | 
| 194   bool is_optimized() const { return type() == OPTIMIZED; } | 195   bool is_optimized() const { return type() == OPTIMIZED; } | 
| 195   bool is_arguments_adaptor() const { return type() == ARGUMENTS_ADAPTOR; } | 196   bool is_arguments_adaptor() const { return type() == ARGUMENTS_ADAPTOR; } | 
| 196   bool is_internal() const { return type() == INTERNAL; } | 197   bool is_internal() const { return type() == INTERNAL; } | 
|  | 198   bool is_stub_failure_trampoline() const { | 
|  | 199     return type() == STUB_FAILURE_TRAMPOLINE; | 
|  | 200   } | 
| 197   bool is_construct() const { return type() == CONSTRUCT; } | 201   bool is_construct() const { return type() == CONSTRUCT; } | 
| 198   virtual bool is_standard() const { return false; } | 202   virtual bool is_standard() const { return false; } | 
| 199 | 203 | 
| 200   bool is_java_script() const { | 204   bool is_java_script() const { | 
| 201     Type type = this->type(); | 205     Type type = this->type(); | 
| 202     return (type == JAVA_SCRIPT) || (type == OPTIMIZED); | 206     return (type == JAVA_SCRIPT) || (type == OPTIMIZED); | 
| 203   } | 207   } | 
| 204 | 208 | 
| 205   // Accessors. | 209   // Accessors. | 
| 206   Address sp() const { return state_.sp; } | 210   Address sp() const { return state_.sp; } | 
| (...skipping 454 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 661  protected: | 665  protected: | 
| 662   inline explicit InternalFrame(StackFrameIterator* iterator); | 666   inline explicit InternalFrame(StackFrameIterator* iterator); | 
| 663 | 667 | 
| 664   virtual Address GetCallerStackPointer() const; | 668   virtual Address GetCallerStackPointer() const; | 
| 665 | 669 | 
| 666  private: | 670  private: | 
| 667   friend class StackFrameIterator; | 671   friend class StackFrameIterator; | 
| 668 }; | 672 }; | 
| 669 | 673 | 
| 670 | 674 | 
|  | 675 class StubFailureTrampolineFrame: public InternalFrame { | 
|  | 676  public: | 
|  | 677   virtual Type type() const { return STUB_FAILURE_TRAMPOLINE; } | 
|  | 678 | 
|  | 679   virtual void Iterate(ObjectVisitor* v) const; | 
|  | 680 | 
|  | 681  protected: | 
|  | 682   inline explicit StubFailureTrampolineFrame( | 
|  | 683       StackFrameIterator* iterator); | 
|  | 684 | 
|  | 685  private: | 
|  | 686   friend class StackFrameIterator; | 
|  | 687 }; | 
|  | 688 | 
|  | 689 | 
| 671 // Construct frames are special trampoline frames introduced to handle | 690 // Construct frames are special trampoline frames introduced to handle | 
| 672 // function invocations through 'new'. | 691 // function invocations through 'new'. | 
| 673 class ConstructFrame: public InternalFrame { | 692 class ConstructFrame: public InternalFrame { | 
| 674  public: | 693  public: | 
| 675   virtual Type type() const { return CONSTRUCT; } | 694   virtual Type type() const { return CONSTRUCT; } | 
| 676 | 695 | 
| 677   static ConstructFrame* cast(StackFrame* frame) { | 696   static ConstructFrame* cast(StackFrame* frame) { | 
| 678     ASSERT(frame->is_construct()); | 697     ASSERT(frame->is_construct()); | 
| 679     return static_cast<ConstructFrame*>(frame); | 698     return static_cast<ConstructFrame*>(frame); | 
| 680   } | 699   } | 
| (...skipping 240 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 921 }; | 940 }; | 
| 922 | 941 | 
| 923 | 942 | 
| 924 // Reads all frames on the current stack and copies them into the current | 943 // Reads all frames on the current stack and copies them into the current | 
| 925 // zone memory. | 944 // zone memory. | 
| 926 Vector<StackFrame*> CreateStackMap(Zone* zone); | 945 Vector<StackFrame*> CreateStackMap(Zone* zone); | 
| 927 | 946 | 
| 928 } }  // namespace v8::internal | 947 } }  // namespace v8::internal | 
| 929 | 948 | 
| 930 #endif  // V8_FRAMES_H_ | 949 #endif  // V8_FRAMES_H_ | 
| OLD | NEW | 
|---|