Revision: 5154
Author: [email protected]
Date: Thu Jul 29 14:46:19 2010
Log: Roll back all step-in-fix-related changes
Review URL: http://codereview.chromium.org/3012035
http://code.google.com/p/v8/source/detail?r=5154
Modified:
/branches/bleeding_edge/src/arm/debug-arm.cc
/branches/bleeding_edge/src/debug-debugger.js
/branches/bleeding_edge/src/debug.cc
/branches/bleeding_edge/src/debug.h
/branches/bleeding_edge/src/ia32/debug-ia32.cc
/branches/bleeding_edge/src/liveedit.cc
/branches/bleeding_edge/src/mips/debug-mips.cc
/branches/bleeding_edge/src/serialize.cc
/branches/bleeding_edge/src/x64/debug-x64.cc
=======================================
--- /branches/bleeding_edge/src/arm/debug-arm.cc Thu Jul 29 09:40:14 2010
+++ /branches/bleeding_edge/src/arm/debug-arm.cc Thu Jul 29 14:46:19 2010
@@ -296,10 +296,9 @@
#undef __
-Object** Debug::SetUpFrameDropperFrame(StackFrame* bottom_js_frame,
- Handle<Code> code) {
+void Debug::SetUpFrameDropperFrame(StackFrame* bottom_js_frame,
+ Handle<Code> code) {
UNREACHABLE();
- return NULL;
}
const int Debug::kFrameDropperFrameSize = -1;
=======================================
--- /branches/bleeding_edge/src/debug-debugger.js Thu Jul 29 09:40:14 2010
+++ /branches/bleeding_edge/src/debug-debugger.js Thu Jul 29 14:46:19 2010
@@ -2115,10 +2115,6 @@
var result_description = Debug.LiveEdit.SetScriptSource(the_script,
new_source, preview_only, change_log);
response.body = {change_log: change_log, result: result_description};
-
- if (!preview_only && !this.running_ &&
result_description.stack_modified) {
- response.body.stepin_recommended = true;
- }
};
=======================================
--- /branches/bleeding_edge/src/debug.cc Thu Jul 29 14:29:45 2010
+++ /branches/bleeding_edge/src/debug.cc Thu Jul 29 14:46:19 2010
@@ -1224,42 +1224,36 @@
it.FindBreakLocationFromAddress(frame->pc());
// Compute whether or not the target is a call target.
+ bool is_call_target = false;
bool is_load_or_store = false;
bool is_inline_cache_stub = false;
- bool is_at_restarted_function = false;
Handle<Code> call_function_stub;
-
- if (thread_local_.restarter_frame_function_pointer_ == NULL) {
- if (RelocInfo::IsCodeTarget(it.rinfo()->rmode())) {
- bool is_call_target = false;
- Address target = it.rinfo()->target_address();
- Code* code = Code::GetCodeFromTargetAddress(target);
- if (code->is_call_stub() || code->is_keyed_call_stub()) {
- is_call_target = true;
- }
- if (code->is_inline_cache_stub()) {
- is_inline_cache_stub = true;
- is_load_or_store = !is_call_target;
- }
-
- // Check if target code is CallFunction stub.
- Code* maybe_call_function_stub = code;
- // If there is a breakpoint at this line look at the original code to
- // check if it is a CallFunction stub.
- if (it.IsDebugBreak()) {
- Address original_target = it.original_rinfo()->target_address();
- maybe_call_function_stub =
- Code::GetCodeFromTargetAddress(original_target);
- }
- if (maybe_call_function_stub->kind() == Code::STUB &&
- maybe_call_function_stub->major_key() == CodeStub::CallFunction)
{
- // Save reference to the code as we may need it to find out
arguments
- // count for 'step in' later.
- call_function_stub = Handle<Code>(maybe_call_function_stub);
- }
- }
- } else {
- is_at_restarted_function = true;
+ if (RelocInfo::IsCodeTarget(it.rinfo()->rmode())) {
+ Address target = it.rinfo()->target_address();
+ Code* code = Code::GetCodeFromTargetAddress(target);
+ if (code->is_call_stub() || code->is_keyed_call_stub()) {
+ is_call_target = true;
+ }
+ if (code->is_inline_cache_stub()) {
+ is_inline_cache_stub = true;
+ is_load_or_store = !is_call_target;
+ }
+
+ // Check if target code is CallFunction stub.
+ Code* maybe_call_function_stub = code;
+ // If there is a breakpoint at this line look at the original code to
+ // check if it is a CallFunction stub.
+ if (it.IsDebugBreak()) {
+ Address original_target = it.original_rinfo()->target_address();
+ maybe_call_function_stub =
+ Code::GetCodeFromTargetAddress(original_target);
+ }
+ if (maybe_call_function_stub->kind() == Code::STUB &&
+ maybe_call_function_stub->major_key() == CodeStub::CallFunction) {
+ // Save reference to the code as we may need it to find out arguments
+ // count for 'step in' later.
+ call_function_stub = Handle<Code>(maybe_call_function_stub);
+ }
}
// If this is the last break code target step out is the only
possibility.
@@ -1288,7 +1282,7 @@
ActivateStepOut(frames_it.frame());
}
} else if (!(is_inline_cache_stub ||
RelocInfo::IsConstructCall(it.rmode()) ||
- !call_function_stub.is_null() || is_at_restarted_function)
+ !call_function_stub.is_null())
|| step_action == StepNext || step_action == StepMin) {
// Step next or step min.
@@ -1300,18 +1294,9 @@
debug_info->code()->SourceStatementPosition(frame->pc());
thread_local_.last_fp_ = frame->fp();
} else {
- // If there's restarter frame on top of the stack, just get the pointer
- // to function which is going to be restarted.
- if (is_at_restarted_function) {
- Handle<JSFunction> restarted_function(
-
JSFunction::cast(*thread_local_.restarter_frame_function_pointer_));
- Handle<SharedFunctionInfo> restarted_shared(
- restarted_function->shared());
- FloodWithOneShot(restarted_shared);
- } else if (!call_function_stub.is_null()) {
- // If it's CallFunction stub ensure target function is compiled and
flood
- // it with one shot breakpoints.
-
+ // If it's CallFunction stub ensure target function is compiled and
flood
+ // it with one shot breakpoints.
+ if (!call_function_stub.is_null()) {
// Find out number of arguments from the stub minor key.
// Reverse lookup required as the minor key cannot be retrieved
// from the code object.
@@ -1782,12 +1767,9 @@
void Debug::FramesHaveBeenDropped(StackFrame::Id new_break_frame_id,
- FrameDropMode mode,
- Object**
restarter_frame_function_pointer) {
+ FrameDropMode mode) {
thread_local_.frame_drop_mode_ = mode;
thread_local_.break_frame_id_ = new_break_frame_id;
- thread_local_.restarter_frame_function_pointer_ =
- restarter_frame_function_pointer;
}
=======================================
--- /branches/bleeding_edge/src/debug.h Thu Jul 29 09:40:14 2010
+++ /branches/bleeding_edge/src/debug.h Thu Jul 29 14:46:19 2010
@@ -332,7 +332,6 @@
k_after_break_target_address,
k_debug_break_return_address,
k_debug_break_slot_address,
- k_restarter_frame_function_pointer,
k_register_address
};
@@ -340,10 +339,6 @@
static Address* after_break_target_address() {
return reinterpret_cast<Address*>(&thread_local_.after_break_target_);
}
- static Address* restarter_frame_function_pointer_address() {
- Object*** address = &thread_local_.restarter_frame_function_pointer_;
- return reinterpret_cast<Address*>(address);
- }
// Support for saving/restoring registers when handling debug break
calls.
static Object** register_address(int r) {
@@ -420,22 +415,10 @@
};
static void FramesHaveBeenDropped(StackFrame::Id new_break_frame_id,
- FrameDropMode mode,
- Object**
restarter_frame_function_pointer);
-
- // Initializes an artificial stack frame. The data it contains is used
for:
- // a. successful work of frame dropper code which eventually gets
control,
- // b. being compatible with regular stack structure for various stack
- // iterators.
- // Returns address of stack allocated pointer to restarted function,
- // the value that is called 'restarter_frame_function_pointer'. The value
- // at this address (possibly updated by GC) may be used later when
preparing
- // 'step in' operation.
- // The implementation is architecture-specific.
- // TODO(LiveEdit): consider reviewing it as architecture-independent.
- static Object** SetUpFrameDropperFrame(StackFrame* bottom_js_frame,
- Handle<Code> code);
-
+ FrameDropMode mode);
+
+ static void SetUpFrameDropperFrame(StackFrame* bottom_js_frame,
+ Handle<Code> code);
static const int kFrameDropperFrameSize;
private:
@@ -512,11 +495,6 @@
// Pending interrupts scheduled while debugging.
int pending_interrupts_;
-
- // When restarter frame is on stack, stores the address
- // of the pointer to function being restarted. Otherwise (most of the
time)
- // stores NULL. This pointer is used with 'step in' implementation.
- Object** restarter_frame_function_pointer_;
};
// Storage location for registers when handling debug break calls
@@ -959,10 +937,6 @@
static Debug_Address DebugBreakReturn() {
return Debug_Address(Debug::k_debug_break_return_address);
}
-
- static Debug_Address RestarterFrameFunctionPointer() {
- return Debug_Address(Debug::k_restarter_frame_function_pointer);
- }
static Debug_Address Register(int reg) {
return Debug_Address(Debug::k_register_address, reg);
@@ -976,9 +950,6 @@
return
reinterpret_cast<Address>(Debug::debug_break_return_address());
case Debug::k_debug_break_slot_address:
return
reinterpret_cast<Address>(Debug::debug_break_slot_address());
- case Debug::k_restarter_frame_function_pointer:
- return reinterpret_cast<Address>(
- Debug::restarter_frame_function_pointer_address());
case Debug::k_register_address:
return reinterpret_cast<Address>(Debug::register_address(reg_));
default:
=======================================
--- /branches/bleeding_edge/src/ia32/debug-ia32.cc Thu Jul 29 13:32:14 2010
+++ /branches/bleeding_edge/src/ia32/debug-ia32.cc Thu Jul 29 14:46:19 2010
@@ -265,10 +265,6 @@
// -- context
// -- frame base
void Debug::GenerateFrameDropperLiveEdit(MacroAssembler* masm) {
- ExternalReference restarter_frame_function_slot =
- ExternalReference(Debug_Address::RestarterFrameFunctionPointer());
- __ mov(Operand::StaticVariable(restarter_frame_function_slot),
Immediate(0));
-
// We do not know our frame height, but set esp based on ebp.
__ lea(esp, Operand(ebp, -4 * kPointerSize));
@@ -292,10 +288,8 @@
#undef __
-// TODO(LiveEdit): consider making it platform-independent.
-// TODO(LiveEdit): use more named constants instead of numbers.
-Object** Debug::SetUpFrameDropperFrame(StackFrame* bottom_js_frame,
- Handle<Code> code) {
+void Debug::SetUpFrameDropperFrame(StackFrame* bottom_js_frame,
+ Handle<Code> code) {
ASSERT(bottom_js_frame->is_java_script());
Address fp = bottom_js_frame->fp();
@@ -304,10 +298,7 @@
Memory::Object_at(fp - 3 * kPointerSize) = *code;
Memory::Object_at(fp - 2 * kPointerSize) =
Smi::FromInt(StackFrame::INTERNAL);
-
- return reinterpret_cast<Object**>(&Memory::Object_at(fp - 4 *
kPointerSize));
-}
-
+}
const int Debug::kFrameDropperFrameSize = 5;
=======================================
--- /branches/bleeding_edge/src/liveedit.cc Thu Jul 29 09:40:14 2010
+++ /branches/bleeding_edge/src/liveedit.cc Thu Jul 29 14:46:19 2010
@@ -1188,8 +1188,7 @@
static const char* DropFrames(Vector<StackFrame*> frames,
int top_frame_index,
int bottom_js_frame_index,
- Debug::FrameDropMode* mode,
- Object*** restarter_frame_function_pointer) {
+ Debug::FrameDropMode* mode) {
if (Debug::kFrameDropperFrameSize < 0) {
return "Stack manipulations are not supported in this architecture.";
}
@@ -1239,10 +1238,7 @@
top_frame->set_pc(code->entry());
pre_top_frame->SetCallerFp(bottom_js_frame->fp());
- *restarter_frame_function_pointer =
- Debug::SetUpFrameDropperFrame(bottom_js_frame, code);
-
- ASSERT((**restarter_frame_function_pointer)->IsJSFunction());
+ Debug::SetUpFrameDropperFrame(bottom_js_frame, code);
for (Address a = unused_stack_top;
a < unused_stack_bottom;
@@ -1332,10 +1328,8 @@
}
Debug::FrameDropMode drop_mode = Debug::FRAMES_UNTOUCHED;
- Object** restarter_frame_function_pointer = NULL;
const char* error_message = DropFrames(frames, top_frame_index,
- bottom_js_frame_index, &drop_mode,
-
&restarter_frame_function_pointer);
+ bottom_js_frame_index,
&drop_mode);
if (error_message != NULL) {
return error_message;
@@ -1349,8 +1343,7 @@
break;
}
}
- Debug::FramesHaveBeenDropped(new_id, drop_mode,
- restarter_frame_function_pointer);
+ Debug::FramesHaveBeenDropped(new_id, drop_mode);
// Replace "blocked on active" with "replaced on active" status.
for (int i = 0; i < array_len; i++) {
=======================================
--- /branches/bleeding_edge/src/mips/debug-mips.cc Thu Jul 29 09:40:14 2010
+++ /branches/bleeding_edge/src/mips/debug-mips.cc Thu Jul 29 14:46:19 2010
@@ -117,10 +117,9 @@
#undef __
-Object** Debug::SetUpFrameDropperFrame(StackFrame* bottom_js_frame,
- Handle<Code> code) {
+void Debug::SetUpFrameDropperFrame(StackFrame* bottom_js_frame,
+ Handle<Code> code) {
UNREACHABLE();
- return NULL;
}
const int Debug::kFrameDropperFrameSize = -1;
=======================================
--- /branches/bleeding_edge/src/serialize.cc Thu Jul 29 14:29:45 2010
+++ /branches/bleeding_edge/src/serialize.cc Thu Jul 29 14:46:19 2010
@@ -237,10 +237,6 @@
DEBUG_ADDRESS,
Debug::k_debug_break_return_address << kDebugIdShift,
"Debug::debug_break_return_address()");
- Add(Debug_Address(Debug::k_restarter_frame_function_pointer).address(),
- DEBUG_ADDRESS,
- Debug::k_restarter_frame_function_pointer << kDebugIdShift,
- "Debug::restarter_frame_function_pointer_address()");
const char* debug_register_format = "Debug::register_address(%i)";
int dr_format_length = StrLength(debug_register_format);
for (int i = 0; i < kNumJSCallerSaved; ++i) {
@@ -482,7 +478,6 @@
uint32_t ExternalReferenceEncoder::Encode(Address key) const {
int index = IndexOf(key);
- ASSERT(key == NULL || index >= 0);
return index >=0 ? ExternalReferenceTable::instance()->code(index) : 0;
}
=======================================
--- /branches/bleeding_edge/src/x64/debug-x64.cc Thu Jul 29 09:40:14 2010
+++ /branches/bleeding_edge/src/x64/debug-x64.cc Thu Jul 29 14:46:19 2010
@@ -213,10 +213,9 @@
#undef __
-Object** Debug::SetUpFrameDropperFrame(StackFrame* bottom_js_frame,
- Handle<Code> code) {
+void Debug::SetUpFrameDropperFrame(StackFrame* bottom_js_frame,
+ Handle<Code> code) {
UNREACHABLE();
- return NULL;
}
const int Debug::kFrameDropperFrameSize = -1;
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev