| OLD | NEW | 
|     1 // Copyright 2013 the V8 project authors. All rights reserved. |     1 // Copyright 2013 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/crankshaft/arm64/lithium-arm64.h" |     5 #include "src/crankshaft/arm64/lithium-arm64.h" | 
|     6  |     6  | 
|     7 #include <sstream> |     7 #include <sstream> | 
|     8  |     8  | 
|     9 #include "src/crankshaft/arm64/lithium-codegen-arm64.h" |     9 #include "src/crankshaft/arm64/lithium-codegen-arm64.h" | 
|    10 #include "src/crankshaft/hydrogen-osr.h" |    10 #include "src/crankshaft/hydrogen-osr.h" | 
| (...skipping 702 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   713     instr = AssignEnvironment(instr); |   713     instr = AssignEnvironment(instr); | 
|   714   } |   714   } | 
|   715   chunk_->AddInstruction(instr, current_block_); |   715   chunk_->AddInstruction(instr, current_block_); | 
|   716  |   716  | 
|   717   if (instr->IsCall()) { |   717   if (instr->IsCall()) { | 
|   718     HEnvironment* hydrogen_env = current_block_->last_environment(); |   718     HEnvironment* hydrogen_env = current_block_->last_environment(); | 
|   719     HValue* hydrogen_value_for_lazy_bailout = hydrogen_val; |   719     HValue* hydrogen_value_for_lazy_bailout = hydrogen_val; | 
|   720     DCHECK_NOT_NULL(hydrogen_env); |   720     DCHECK_NOT_NULL(hydrogen_env); | 
|   721     if (instr->IsSyntacticTailCall()) { |   721     if (instr->IsSyntacticTailCall()) { | 
|   722       // If it was a syntactic tail call we need to drop the current frame and |   722       // If it was a syntactic tail call we need to drop the current frame and | 
|   723       // an arguments adaptor frame on top of it (if the latter is present). |   723       // all the frames on top of it that are either an arguments adaptor frame | 
 |   724       // or a tail caller frame. | 
|   724       hydrogen_env = hydrogen_env->outer(); |   725       hydrogen_env = hydrogen_env->outer(); | 
|   725       if (hydrogen_env != nullptr && |   726       while (hydrogen_env != nullptr && | 
|   726           hydrogen_env->frame_type() == ARGUMENTS_ADAPTOR) { |   727              (hydrogen_env->frame_type() == ARGUMENTS_ADAPTOR || | 
 |   728               hydrogen_env->frame_type() == TAIL_CALLER_FUNCTION)) { | 
|   727         hydrogen_env = hydrogen_env->outer(); |   729         hydrogen_env = hydrogen_env->outer(); | 
|   728       } |   730       } | 
|   729       if (hydrogen_env != nullptr) { |   731       if (hydrogen_env != nullptr) { | 
|   730         // Push return value on top of outer environment. |   732         // Push return value on top of outer environment. | 
|   731         hydrogen_env = hydrogen_env->Copy(); |   733         hydrogen_env = hydrogen_env->Copy(); | 
|   732         hydrogen_env->Push(hydrogen_val); |   734         hydrogen_env->Push(hydrogen_val); | 
|   733       } else { |   735       } else { | 
|   734         // Although we don't need this lazy bailout for normal execution |   736         // Although we don't need this lazy bailout for normal execution | 
|   735         // (because when we tail call from the outermost function we should pop |   737         // (because when we tail call from the outermost function we should pop | 
|   736         // its frame) we still need it when debugger is on. |   738         // its frame) we still need it when debugger is on. | 
| (...skipping 1911 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  2648  |  2650  | 
|  2649 LInstruction* LChunkBuilder::DoWrapReceiver(HWrapReceiver* instr) { |  2651 LInstruction* LChunkBuilder::DoWrapReceiver(HWrapReceiver* instr) { | 
|  2650   LOperand* receiver = UseRegister(instr->receiver()); |  2652   LOperand* receiver = UseRegister(instr->receiver()); | 
|  2651   LOperand* function = UseRegister(instr->function()); |  2653   LOperand* function = UseRegister(instr->function()); | 
|  2652   LWrapReceiver* result = new(zone()) LWrapReceiver(receiver, function); |  2654   LWrapReceiver* result = new(zone()) LWrapReceiver(receiver, function); | 
|  2653   return AssignEnvironment(DefineAsRegister(result)); |  2655   return AssignEnvironment(DefineAsRegister(result)); | 
|  2654 } |  2656 } | 
|  2655  |  2657  | 
|  2656 }  // namespace internal |  2658 }  // namespace internal | 
|  2657 }  // namespace v8 |  2659 }  // namespace v8 | 
| OLD | NEW |