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.h" | 5 #include "src/interpreter/interpreter.h" |
6 | 6 |
7 #include <fstream> | 7 #include <fstream> |
8 #include <memory> | 8 #include <memory> |
9 | 9 |
10 #include "src/ast/prettyprinter.h" | 10 #include "src/ast/prettyprinter.h" |
(...skipping 1608 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1619 | 1619 |
1620 // Call <callable> <receiver> <arg_count> <feedback_slot_id> | 1620 // Call <callable> <receiver> <arg_count> <feedback_slot_id> |
1621 // | 1621 // |
1622 // Call a JSfunction or Callable in |callable| with the |receiver| and | 1622 // Call a JSfunction or Callable in |callable| with the |receiver| and |
1623 // |arg_count| arguments in subsequent registers. Collect type feedback | 1623 // |arg_count| arguments in subsequent registers. Collect type feedback |
1624 // into |feedback_slot_id| | 1624 // into |feedback_slot_id| |
1625 void Interpreter::DoCall(InterpreterAssembler* assembler) { | 1625 void Interpreter::DoCall(InterpreterAssembler* assembler) { |
1626 DoJSCall(assembler, TailCallMode::kDisallow); | 1626 DoJSCall(assembler, TailCallMode::kDisallow); |
1627 } | 1627 } |
1628 | 1628 |
| 1629 // CallProperty <callable> <receiver> <arg_count> <feedback_slot_id> |
| 1630 // |
| 1631 // Call a JSfunction or Callable in |callable| with the |receiver| and |
| 1632 // |arg_count| arguments in subsequent registers. Collect type feedback into |
| 1633 // |feedback_slot_id|. The callable is known to be a property of the receiver. |
| 1634 void Interpreter::DoCallProperty(InterpreterAssembler* assembler) { |
| 1635 // TODO(leszeks): Look into making the interpreter use the fact that the |
| 1636 // receiver is non-null. |
| 1637 DoJSCall(assembler, TailCallMode::kDisallow); |
| 1638 } |
| 1639 |
1629 // TailCall <callable> <receiver> <arg_count> <feedback_slot_id> | 1640 // TailCall <callable> <receiver> <arg_count> <feedback_slot_id> |
1630 // | 1641 // |
1631 // Tail call a JSfunction or Callable in |callable| with the |receiver| and | 1642 // Tail call a JSfunction or Callable in |callable| with the |receiver| and |
1632 // |arg_count| arguments in subsequent registers. Collect type feedback | 1643 // |arg_count| arguments in subsequent registers. Collect type feedback |
1633 // into |feedback_slot_id| | 1644 // into |feedback_slot_id| |
1634 void Interpreter::DoTailCall(InterpreterAssembler* assembler) { | 1645 void Interpreter::DoTailCall(InterpreterAssembler* assembler) { |
1635 DoJSCall(assembler, TailCallMode::kAllow); | 1646 DoJSCall(assembler, TailCallMode::kAllow); |
1636 } | 1647 } |
1637 | 1648 |
1638 // CallRuntime <function_id> <first_arg> <arg_count> | 1649 // CallRuntime <function_id> <first_arg> <arg_count> |
(...skipping 1007 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2646 __ StoreObjectField(generator, JSGeneratorObject::kContinuationOffset, | 2657 __ StoreObjectField(generator, JSGeneratorObject::kContinuationOffset, |
2647 __ SmiTag(new_state)); | 2658 __ SmiTag(new_state)); |
2648 __ SetAccumulator(old_state); | 2659 __ SetAccumulator(old_state); |
2649 | 2660 |
2650 __ Dispatch(); | 2661 __ Dispatch(); |
2651 } | 2662 } |
2652 | 2663 |
2653 } // namespace interpreter | 2664 } // namespace interpreter |
2654 } // namespace internal | 2665 } // namespace internal |
2655 } // namespace v8 | 2666 } // namespace v8 |
OLD | NEW |