Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(899)

Unified Diff: src/interpreter/interpreter-assembler.cc

Issue 2636913002: [liveedit] reimplement frame restarting. (Closed)
Patch Set: rebase Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/interpreter/interpreter-assembler.h ('k') | src/mips/interface-descriptors-mips.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/interpreter/interpreter-assembler.cc
diff --git a/src/interpreter/interpreter-assembler.cc b/src/interpreter/interpreter-assembler.cc
index ffe8014f06726e6823fe542ea5def51f79262277..6aa1f70683a58ae619aee7cfed037531ef0b9e70 100644
--- a/src/interpreter/interpreter-assembler.cc
+++ b/src/interpreter/interpreter-assembler.cc
@@ -1223,6 +1223,26 @@ void InterpreterAssembler::AbortIfWordNotEqual(Node* lhs, Node* rhs,
Bind(&ok);
}
+void InterpreterAssembler::MaybeDropFrames(Node* context) {
+ Node* restart_fp_address =
+ ExternalConstant(ExternalReference::debug_restart_fp_address(isolate()));
+
+ Node* restart_fp = Load(MachineType::Pointer(), restart_fp_address);
+ Node* null = IntPtrConstant(0);
+
+ Label ok(this), drop_frames(this);
+ Branch(IntPtrEqual(restart_fp, null), &ok, &drop_frames);
+
+ Bind(&drop_frames);
+ // We don't expect this call to return since the frame dropper tears down
+ // the stack and jumps into the function on the target frame to restart it.
+ CallStub(CodeFactory::FrameDropperTrampoline(isolate()), context, restart_fp);
+ Abort(kUnexpectedReturnFromFrameDropper);
+ Goto(&ok);
+
+ Bind(&ok);
+}
+
void InterpreterAssembler::TraceBytecode(Runtime::FunctionId function_id) {
CallRuntime(function_id, GetContext(), BytecodeArrayTaggedPointer(),
SmiTag(BytecodeOffset()), GetAccumulatorUnchecked());
« no previous file with comments | « src/interpreter/interpreter-assembler.h ('k') | src/mips/interface-descriptors-mips.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698