Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 1165 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1176 Label ok(this), abort(this, Label::kDeferred); | 1176 Label ok(this), abort(this, Label::kDeferred); |
| 1177 Branch(WordEqual(lhs, rhs), &ok, &abort); | 1177 Branch(WordEqual(lhs, rhs), &ok, &abort); |
| 1178 | 1178 |
| 1179 Bind(&abort); | 1179 Bind(&abort); |
| 1180 Abort(bailout_reason); | 1180 Abort(bailout_reason); |
| 1181 Goto(&ok); | 1181 Goto(&ok); |
| 1182 | 1182 |
| 1183 Bind(&ok); | 1183 Bind(&ok); |
| 1184 } | 1184 } |
| 1185 | 1185 |
| 1186 void InterpreterAssembler::MaybeDropFrames(Node* context) { | |
| 1187 Node* new_fp_address = | |
| 1188 ExternalConstant(ExternalReference::debug_new_fp_address(isolate())); | |
| 1189 Node* new_fp = Load(MachineType::TaggedPointer(), new_fp_address); | |
|
jgruber
2017/01/17 13:29:58
Is new_fp really a TaggedPointer? Looking at the F
Michael Starzinger
2017/01/17 14:45:27
+1, nice catch, I totally missed that!
Yang
2017/01/18 07:49:08
Done.
| |
| 1190 Node* null = IntPtrConstant(static_cast<intptr_t>(0)); | |
|
jgruber
2017/01/17 13:29:58
Nit: we don't need the static_cast.
Yang
2017/01/18 07:49:08
Done.
| |
| 1191 | |
| 1192 Label ok(this), drop_frames(this); | |
| 1193 Branch(IntPtrEqual(new_fp, null), &ok, &drop_frames); | |
| 1194 | |
| 1195 Bind(&drop_frames); | |
| 1196 // We don't expect this call to return since the frame dropper tears down | |
| 1197 // the stack and jumps into the function on the target frame to restart it. | |
| 1198 CallStub(CodeFactory::FrameDropperTrampoline(isolate()), context, new_fp); | |
| 1199 Abort(kUnexpectedReturnFromFrameDropper); | |
| 1200 Goto(&ok); | |
| 1201 | |
| 1202 Bind(&ok); | |
| 1203 } | |
| 1204 | |
| 1186 void InterpreterAssembler::TraceBytecode(Runtime::FunctionId function_id) { | 1205 void InterpreterAssembler::TraceBytecode(Runtime::FunctionId function_id) { |
| 1187 CallRuntime(function_id, GetContext(), BytecodeArrayTaggedPointer(), | 1206 CallRuntime(function_id, GetContext(), BytecodeArrayTaggedPointer(), |
| 1188 SmiTag(BytecodeOffset()), GetAccumulatorUnchecked()); | 1207 SmiTag(BytecodeOffset()), GetAccumulatorUnchecked()); |
| 1189 } | 1208 } |
| 1190 | 1209 |
| 1191 void InterpreterAssembler::TraceBytecodeDispatch(Node* target_bytecode) { | 1210 void InterpreterAssembler::TraceBytecodeDispatch(Node* target_bytecode) { |
| 1192 Node* counters_table = ExternalConstant( | 1211 Node* counters_table = ExternalConstant( |
| 1193 ExternalReference::interpreter_dispatch_counters(isolate())); | 1212 ExternalReference::interpreter_dispatch_counters(isolate())); |
| 1194 Node* source_bytecode_table_index = IntPtrConstant( | 1213 Node* source_bytecode_table_index = IntPtrConstant( |
| 1195 static_cast<int>(bytecode_) * (static_cast<int>(Bytecode::kLast) + 1)); | 1214 static_cast<int>(bytecode_) * (static_cast<int>(Bytecode::kLast) + 1)); |
| (...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1303 Goto(&loop); | 1322 Goto(&loop); |
| 1304 } | 1323 } |
| 1305 Bind(&done_loop); | 1324 Bind(&done_loop); |
| 1306 | 1325 |
| 1307 return array; | 1326 return array; |
| 1308 } | 1327 } |
| 1309 | 1328 |
| 1310 } // namespace interpreter | 1329 } // namespace interpreter |
| 1311 } // namespace internal | 1330 } // namespace internal |
| 1312 } // namespace v8 | 1331 } // namespace v8 |
| OLD | NEW |