Reviewers: Sven Panne, loislo,
Description:
Move ExitFrame::ComputeStackPointer from frames-<arch>.cc to frames.cc
The method has identical implementation for all architectures. Moved it into
frames.cc
Drive-by: deleted SafeStackFrameIterator::is_working_iterator_,
SafeStackFrameIterator::iteration_done_ is used instead.
BUG=None
Please review this at https://codereview.chromium.org/17581004/
SVN Base: https://v8.googlecode.com/svn/branches/bleeding_edge
Affected files:
M src/arm/frames-arm.cc
M src/frames.h
M src/frames.cc
M src/ia32/frames-ia32.cc
M src/mips/frames-mips.cc
M src/x64/frames-x64.cc
Index: src/arm/frames-arm.cc
diff --git a/src/arm/frames-arm.cc b/src/arm/frames-arm.cc
index
f5a7dbd3ee1a791d193f4ad9bafb821325988007..72fc5cea001706c83039a546e45d00651597affc
100644
--- a/src/arm/frames-arm.cc
+++ b/src/arm/frames-arm.cc
@@ -32,7 +32,7 @@
#include "assembler.h"
#include "assembler-arm.h"
#include "assembler-arm-inl.h"
-#include "frames-inl.h"
+#include "frames.h"
#include "macro-assembler.h"
#include "macro-assembler-arm.h"
@@ -40,11 +40,6 @@ namespace v8 {
namespace internal {
-Address ExitFrame::ComputeStackPointer(Address fp) {
- return Memory::Address_at(fp + ExitFrameConstants::kSPOffset);
-}
-
-
Register JavaScriptFrame::fp_register() { return v8::internal::fp; }
Register JavaScriptFrame::context_register() { return cp; }
Index: src/frames.cc
diff --git a/src/frames.cc b/src/frames.cc
index
16b73c0e019502a16d595e8e3ca379b7af0e7f57..5ea0fd84ca3eac49fe61cb92aeefb0dae972a066
100644
--- a/src/frames.cc
+++ b/src/frames.cc
@@ -289,8 +289,7 @@ SafeStackFrameIterator::SafeStackFrameIterator(
stack_validator_(low_bound, high_bound),
is_valid_top_(IsValidTop(isolate, low_bound, high_bound)),
is_valid_fp_(IsWithinBounds(low_bound, high_bound, fp)),
- is_working_iterator_(is_valid_top_ || is_valid_fp_),
- iteration_done_(!is_working_iterator_),
+ iteration_done_(!is_valid_top_ && !is_valid_fp_),
iterator_(isolate, is_valid_top_, is_valid_fp_ ? fp : NULL, sp) {
}
@@ -310,7 +309,6 @@ bool SafeStackFrameIterator::IsValidTop(Isolate*
isolate,
void SafeStackFrameIterator::Advance() {
- ASSERT(is_working_iterator_);
ASSERT(!done());
StackFrame* last_frame = iterator_.frame();
Address last_sp = last_frame->sp(), last_fp = last_frame->fp();
@@ -564,6 +562,11 @@ StackFrame::Type
ExitFrame::GetStateForFramePointer(Address fp, State* state) {
}
+Address ExitFrame::ComputeStackPointer(Address fp) {
+ return Memory::Address_at(fp + ExitFrameConstants::kSPOffset);
+}
+
+
void ExitFrame::FillState(Address fp, Address sp, State* state) {
state->sp = sp;
state->fp = fp;
Index: src/frames.h
diff --git a/src/frames.h b/src/frames.h
index
53668d09d98e9a89f1f01a6f6ea73184a45e0bf8..5c3acf2b861af6209c647e35b123df8dc39258f3
100644
--- a/src/frames.h
+++ b/src/frames.h
@@ -860,7 +860,6 @@ class JavaScriptFrameIterator BASE_EMBEDDED {
// functions in runtime.js.
class StackTraceFrameIterator: public JavaScriptFrameIterator {
public:
- StackTraceFrameIterator();
explicit StackTraceFrameIterator(Isolate* isolate);
void Advance();
@@ -876,22 +875,22 @@ class SafeStackFrameIterator BASE_EMBEDDED {
Address low_bound, Address high_bound);
StackFrame* frame() const {
- ASSERT(is_working_iterator_);
+ ASSERT(!iteration_done_);
return iterator_.frame();
}
- bool done() const { return iteration_done_ ? true : iterator_.done(); }
+ bool done() const { return iteration_done_ || iterator_.done(); }
void Advance();
static bool is_active(Isolate* isolate);
+ private:
static bool IsWithinBounds(
Address low_bound, Address high_bound, Address addr) {
return low_bound <= addr && addr <= high_bound;
}
- private:
class StackAddressValidator {
public:
StackAddressValidator(Address low_bound, Address high_bound)
@@ -941,7 +940,6 @@ class SafeStackFrameIterator BASE_EMBEDDED {
StackAddressValidator stack_validator_;
const bool is_valid_top_;
const bool is_valid_fp_;
- const bool is_working_iterator_;
bool iteration_done_;
StackFrameIterator iterator_;
};
Index: src/ia32/frames-ia32.cc
diff --git a/src/ia32/frames-ia32.cc b/src/ia32/frames-ia32.cc
index
ea19e9f6ba96266fbb1796235494b1199f2f35f2..61d6876a136542e20e861489ccb6489b6b75b83e
100644
--- a/src/ia32/frames-ia32.cc
+++ b/src/ia32/frames-ia32.cc
@@ -32,17 +32,12 @@
#include "assembler.h"
#include "assembler-ia32.h"
#include "assembler-ia32-inl.h"
-#include "frames-inl.h"
+#include "frames.h"
namespace v8 {
namespace internal {
-Address ExitFrame::ComputeStackPointer(Address fp) {
- return Memory::Address_at(fp + ExitFrameConstants::kSPOffset);
-}
-
-
Register JavaScriptFrame::fp_register() { return ebp; }
Register JavaScriptFrame::context_register() { return esi; }
Index: src/mips/frames-mips.cc
diff --git a/src/mips/frames-mips.cc b/src/mips/frames-mips.cc
index
540caa9d0d6edf87ad96fe246d4acd7697f7b26c..d070b56a81e35dba8aa4ac3a1fe7a34b4d9bffa5
100644
--- a/src/mips/frames-mips.cc
+++ b/src/mips/frames-mips.cc
@@ -33,20 +33,12 @@
#include "assembler.h"
#include "assembler-mips.h"
#include "assembler-mips-inl.h"
-#include "frames-inl.h"
-#include "mips/assembler-mips-inl.h"
-#include "macro-assembler.h"
-#include "macro-assembler-mips.h"
+#include "frames.h"
namespace v8 {
namespace internal {
-Address ExitFrame::ComputeStackPointer(Address fp) {
- return Memory::Address_at(fp + ExitFrameConstants::kSPOffset);
-}
-
-
Register JavaScriptFrame::fp_register() { return v8::internal::fp; }
Register JavaScriptFrame::context_register() { return cp; }
Index: src/x64/frames-x64.cc
diff --git a/src/x64/frames-x64.cc b/src/x64/frames-x64.cc
index
a811a34ba963f0c81409fb2e563c92ac9be785da..21cb79c7402c1bb31635834d1a96265c69e07cb1
100644
--- a/src/x64/frames-x64.cc
+++ b/src/x64/frames-x64.cc
@@ -32,17 +32,12 @@
#include "assembler.h"
#include "assembler-x64.h"
#include "assembler-x64-inl.h"
-#include "frames-inl.h"
+#include "frames.h"
namespace v8 {
namespace internal {
-Address ExitFrame::ComputeStackPointer(Address fp) {
- return Memory::Address_at(fp + ExitFrameConstants::kSPOffset);
-}
-
-
Register JavaScriptFrame::fp_register() { return rbp; }
Register JavaScriptFrame::context_register() { return rsi; }
--
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
---
You received this message because you are subscribed to the Google Groups "v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.