LCOV - code coverage report
Current view: top level - src/builtins - builtins-interpreter.cc (source / functions) Hit Total Coverage
Test: app.info Lines: 21 23 91.3 %
Date: 2017-04-26 Functions: 2 2 100.0 %

          Line data    Source code
       1             : // Copyright 2016 the V8 project authors. All rights reserved.
       2             : // Use of this source code is governed by a BSD-style license that can be
       3             : // found in the LICENSE file.
       4             : 
       5             : #include "src/builtins/builtins-utils.h"
       6             : #include "src/builtins/builtins.h"
       7             : #include "src/globals.h"
       8             : #include "src/handles-inl.h"
       9             : #include "src/objects-inl.h"
      10             : 
      11             : namespace v8 {
      12             : namespace internal {
      13             : 
      14        1447 : Handle<Code> Builtins::InterpreterPushArgsThenCall(
      15             :     ConvertReceiverMode receiver_mode, TailCallMode tail_call_mode,
      16             :     InterpreterPushArgsMode mode) {
      17        1447 :   switch (mode) {
      18             :     case InterpreterPushArgsMode::kJSFunction:
      19         516 :       if (tail_call_mode == TailCallMode::kDisallow) {
      20         387 :         switch (receiver_mode) {
      21             :           case ConvertReceiverMode::kNullOrUndefined:
      22         129 :             return InterpreterPushUndefinedAndArgsThenCallFunction();
      23             :           case ConvertReceiverMode::kNotNullOrUndefined:
      24             :           case ConvertReceiverMode::kAny:
      25         258 :             return InterpreterPushArgsThenCallFunction();
      26             :         }
      27             :       } else {
      28         129 :         CHECK_EQ(receiver_mode, ConvertReceiverMode::kAny);
      29         129 :         return InterpreterPushArgsThenTailCallFunction();
      30             :       }
      31             :     case InterpreterPushArgsMode::kWithFinalSpread:
      32         129 :       CHECK(tail_call_mode == TailCallMode::kDisallow);
      33         129 :       return InterpreterPushArgsThenCallWithFinalSpread();
      34             :     case InterpreterPushArgsMode::kOther:
      35         802 :       if (tail_call_mode == TailCallMode::kDisallow) {
      36         671 :         switch (receiver_mode) {
      37             :           case ConvertReceiverMode::kNullOrUndefined:
      38         137 :             return InterpreterPushUndefinedAndArgsThenCall();
      39             :           case ConvertReceiverMode::kNotNullOrUndefined:
      40             :           case ConvertReceiverMode::kAny:
      41         534 :             return InterpreterPushArgsThenCall();
      42             :         }
      43             :       } else {
      44         131 :         CHECK_EQ(receiver_mode, ConvertReceiverMode::kAny);
      45         131 :         return InterpreterPushArgsThenTailCall();
      46             :       }
      47             :   }
      48           0 :   UNREACHABLE();
      49             :   return Handle<Code>::null();
      50             : }
      51             : 
      52         387 : Handle<Code> Builtins::InterpreterPushArgsThenConstruct(
      53             :     InterpreterPushArgsMode mode) {
      54         387 :   switch (mode) {
      55             :     case InterpreterPushArgsMode::kJSFunction:
      56         129 :       return InterpreterPushArgsThenConstructFunction();
      57             :     case InterpreterPushArgsMode::kWithFinalSpread:
      58         129 :       return InterpreterPushArgsThenConstructWithFinalSpread();
      59             :     case InterpreterPushArgsMode::kOther:
      60         129 :       return InterpreterPushArgsThenConstruct();
      61             :   }
      62           0 :   UNREACHABLE();
      63             :   return Handle<Code>::null();
      64             : }
      65             : 
      66             : }  // namespace internal
      67             : }  // namespace v8

Generated by: LCOV version 1.10