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

Side by Side Diff: src/interpreter/interpreter-assembler.cc

Issue 2636913002: [liveedit] reimplement frame restarting. (Closed)
Patch Set: rebase Created 3 years, 10 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 unified diff | 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 »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2015 the V8 project authors. All rights reserved. 1 // Copyright 2015 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "src/interpreter/interpreter-assembler.h" 5 #include "src/interpreter/interpreter-assembler.h"
6 6
7 #include <limits> 7 #include <limits>
8 #include <ostream> 8 #include <ostream>
9 9
10 #include "src/code-factory.h" 10 #include "src/code-factory.h"
(...skipping 1205 matching lines...) Expand 10 before | Expand all | Expand 10 after
1216 Label ok(this), abort(this, Label::kDeferred); 1216 Label ok(this), abort(this, Label::kDeferred);
1217 Branch(WordEqual(lhs, rhs), &ok, &abort); 1217 Branch(WordEqual(lhs, rhs), &ok, &abort);
1218 1218
1219 Bind(&abort); 1219 Bind(&abort);
1220 Abort(bailout_reason); 1220 Abort(bailout_reason);
1221 Goto(&ok); 1221 Goto(&ok);
1222 1222
1223 Bind(&ok); 1223 Bind(&ok);
1224 } 1224 }
1225 1225
1226 void InterpreterAssembler::MaybeDropFrames(Node* context) {
1227 Node* restart_fp_address =
1228 ExternalConstant(ExternalReference::debug_restart_fp_address(isolate()));
1229
1230 Node* restart_fp = Load(MachineType::Pointer(), restart_fp_address);
1231 Node* null = IntPtrConstant(0);
1232
1233 Label ok(this), drop_frames(this);
1234 Branch(IntPtrEqual(restart_fp, null), &ok, &drop_frames);
1235
1236 Bind(&drop_frames);
1237 // We don't expect this call to return since the frame dropper tears down
1238 // the stack and jumps into the function on the target frame to restart it.
1239 CallStub(CodeFactory::FrameDropperTrampoline(isolate()), context, restart_fp);
1240 Abort(kUnexpectedReturnFromFrameDropper);
1241 Goto(&ok);
1242
1243 Bind(&ok);
1244 }
1245
1226 void InterpreterAssembler::TraceBytecode(Runtime::FunctionId function_id) { 1246 void InterpreterAssembler::TraceBytecode(Runtime::FunctionId function_id) {
1227 CallRuntime(function_id, GetContext(), BytecodeArrayTaggedPointer(), 1247 CallRuntime(function_id, GetContext(), BytecodeArrayTaggedPointer(),
1228 SmiTag(BytecodeOffset()), GetAccumulatorUnchecked()); 1248 SmiTag(BytecodeOffset()), GetAccumulatorUnchecked());
1229 } 1249 }
1230 1250
1231 void InterpreterAssembler::TraceBytecodeDispatch(Node* target_bytecode) { 1251 void InterpreterAssembler::TraceBytecodeDispatch(Node* target_bytecode) {
1232 Node* counters_table = ExternalConstant( 1252 Node* counters_table = ExternalConstant(
1233 ExternalReference::interpreter_dispatch_counters(isolate())); 1253 ExternalReference::interpreter_dispatch_counters(isolate()));
1234 Node* source_bytecode_table_index = IntPtrConstant( 1254 Node* source_bytecode_table_index = IntPtrConstant(
1235 static_cast<int>(bytecode_) * (static_cast<int>(Bytecode::kLast) + 1)); 1255 static_cast<int>(bytecode_) * (static_cast<int>(Bytecode::kLast) + 1));
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
1343 Goto(&loop); 1363 Goto(&loop);
1344 } 1364 }
1345 Bind(&done_loop); 1365 Bind(&done_loop);
1346 1366
1347 return array; 1367 return array;
1348 } 1368 }
1349 1369
1350 } // namespace interpreter 1370 } // namespace interpreter
1351 } // namespace internal 1371 } // namespace internal
1352 } // namespace v8 1372 } // namespace v8
OLDNEW
« 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