Index: src/frames.h |
diff --git a/src/frames.h b/src/frames.h |
index ef3011a8ffd0e8e76ecbefe5f89fc07083fca8c6..cb791d2d74c7ca9fff8f8cdccfbe01dc6467ca27 100644 |
--- a/src/frames.h |
+++ b/src/frames.h |
@@ -158,7 +158,13 @@ class StackFrame BASE_EMBEDDED { |
virtual Type type() const = 0; |
// Get the code associated with this frame. |
- virtual Code* code() const = 0; |
+ // This method could be called during marking phase of GC. |
+ virtual Code* unchecked_code() const = 0; |
+ |
+ // Get the code associated with this frame. |
+ inline Code* code() const { |
+ return Code::cast(unchecked_code()); |
+ } |
// Garbage collection support. |
static void CookFramesForThread(ThreadLocalTop* thread); |
@@ -224,7 +230,7 @@ class EntryFrame: public StackFrame { |
public: |
virtual Type type() const { return ENTRY; } |
- virtual Code* code() const; |
+ virtual Code* unchecked_code() const; |
// Garbage collection support. |
virtual void Iterate(ObjectVisitor* v) const; |
@@ -255,7 +261,7 @@ class EntryConstructFrame: public EntryFrame { |
public: |
virtual Type type() const { return ENTRY_CONSTRUCT; } |
- virtual Code* code() const; |
+ virtual Code* unchecked_code() const; |
static EntryConstructFrame* cast(StackFrame* frame) { |
ASSERT(frame->is_entry_construct()); |
@@ -277,7 +283,7 @@ class ExitFrame: public StackFrame { |
enum Mode { MODE_NORMAL, MODE_DEBUG }; |
virtual Type type() const { return EXIT; } |
- virtual Code* code() const; |
+ virtual Code* unchecked_code() const; |
Object*& code_slot() const; |
@@ -403,7 +409,7 @@ class JavaScriptFrame: public StandardFrame { |
int index) const; |
// Determine the code for the frame. |
- virtual Code* code() const; |
+ virtual Code* unchecked_code() const; |
static JavaScriptFrame* cast(StackFrame* frame) { |
ASSERT(frame->is_java_script()); |
@@ -439,7 +445,7 @@ class ArgumentsAdaptorFrame: public JavaScriptFrame { |
virtual Type type() const { return ARGUMENTS_ADAPTOR; } |
// Determine the code for the frame. |
- virtual Code* code() const; |
+ virtual Code* unchecked_code() const; |
static ArgumentsAdaptorFrame* cast(StackFrame* frame) { |
ASSERT(frame->is_arguments_adaptor()); |
@@ -469,7 +475,7 @@ class InternalFrame: public StandardFrame { |
virtual void Iterate(ObjectVisitor* v) const; |
// Determine the code for the frame. |
- virtual Code* code() const; |
+ virtual Code* unchecked_code() const; |
static InternalFrame* cast(StackFrame* frame) { |
ASSERT(frame->is_internal()); |