| 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/bytecode-generator.h" | 5 #include "src/interpreter/bytecode-generator.h" | 
| 6 | 6 | 
| 7 #include "src/ast/scopes.h" | 7 #include "src/ast/scopes.h" | 
| 8 #include "src/compiler.h" | 8 #include "src/compiler.h" | 
| 9 #include "src/interpreter/bytecode-register-allocator.h" | 9 #include "src/interpreter/bytecode-register-allocator.h" | 
| 10 #include "src/interpreter/control-flow-builders.h" | 10 #include "src/interpreter/control-flow-builders.h" | 
| (...skipping 2443 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 2454             Smi::FromInt(execution_context()->scope()->start_position())) | 2454             Smi::FromInt(execution_context()->scope()->start_position())) | 
| 2455         .StoreAccumulatorInRegister(position); | 2455         .StoreAccumulatorInRegister(position); | 
| 2456 | 2456 | 
| 2457     // Call ResolvePossiblyDirectEval and modify the callee. | 2457     // Call ResolvePossiblyDirectEval and modify the callee. | 
| 2458     builder() | 2458     builder() | 
| 2459         ->CallRuntime(Runtime::kResolvePossiblyDirectEval, callee_for_eval, 5) | 2459         ->CallRuntime(Runtime::kResolvePossiblyDirectEval, callee_for_eval, 5) | 
| 2460         .StoreAccumulatorInRegister(callee); | 2460         .StoreAccumulatorInRegister(callee); | 
| 2461   } | 2461   } | 
| 2462 | 2462 | 
| 2463   builder()->SetExpressionPosition(expr); | 2463   builder()->SetExpressionPosition(expr); | 
| 2464   if (expr->CallFeedbackICSlot().IsInvalid()) { | 2464   builder()->Call(callee, receiver, 1 + args->length(), | 
| 2465     builder()->Call(callee, receiver, 1 + args->length(), | 2465                   feedback_index(expr->CallFeedbackICSlot()), | 
| 2466                     expr->tail_call_mode()); | 2466                   expr->tail_call_mode()); | 
| 2467   } else { |  | 
| 2468     DCHECK(call_type != Call::POSSIBLY_EVAL_CALL); |  | 
| 2469     builder()->CallIC(callee, receiver, 1 + args->length(), |  | 
| 2470                       feedback_index(expr->CallFeedbackICSlot()), |  | 
| 2471                       expr->tail_call_mode()); |  | 
| 2472   } |  | 
| 2473   execution_result()->SetResultInAccumulator(); | 2467   execution_result()->SetResultInAccumulator(); | 
| 2474 } | 2468 } | 
| 2475 | 2469 | 
| 2476 void BytecodeGenerator::VisitCallSuper(Call* expr) { | 2470 void BytecodeGenerator::VisitCallSuper(Call* expr) { | 
| 2477   RegisterAllocationScope register_scope(this); | 2471   RegisterAllocationScope register_scope(this); | 
| 2478   SuperCallReference* super = expr->expression()->AsSuperCallReference(); | 2472   SuperCallReference* super = expr->expression()->AsSuperCallReference(); | 
| 2479 | 2473 | 
| 2480   // Prepare the constructor to the super call. | 2474   // Prepare the constructor to the super call. | 
| 2481   Register this_function = register_allocator()->NewRegister(); | 2475   Register this_function = register_allocator()->NewRegister(); | 
| 2482   VisitForAccumulatorValue(super->this_function_var()); | 2476   VisitForAccumulatorValue(super->this_function_var()); | 
| (...skipping 634 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 3117 } | 3111 } | 
| 3118 | 3112 | 
| 3119 | 3113 | 
| 3120 int BytecodeGenerator::feedback_index(FeedbackVectorSlot slot) const { | 3114 int BytecodeGenerator::feedback_index(FeedbackVectorSlot slot) const { | 
| 3121   return info()->feedback_vector()->GetIndex(slot); | 3115   return info()->feedback_vector()->GetIndex(slot); | 
| 3122 } | 3116 } | 
| 3123 | 3117 | 
| 3124 }  // namespace interpreter | 3118 }  // namespace interpreter | 
| 3125 }  // namespace internal | 3119 }  // namespace internal | 
| 3126 }  // namespace v8 | 3120 }  // namespace v8 | 
| OLD | NEW | 
|---|