| 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/hydrogen.h" | 5 #include "src/crankshaft/hydrogen.h" |
| 6 | 6 |
| 7 #include <sstream> | 7 #include <sstream> |
| 8 | 8 |
| 9 #include "src/allocation-site-scopes.h" | 9 #include "src/allocation-site-scopes.h" |
| 10 #include "src/ast-numbering.h" | 10 #include "src/ast-numbering.h" |
| (...skipping 7959 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 7970 | 7970 |
| 7971 HInstruction* HOptimizedGraphBuilder::NewPlainFunctionCall(HValue* fun, | 7971 HInstruction* HOptimizedGraphBuilder::NewPlainFunctionCall(HValue* fun, |
| 7972 int argument_count) { | 7972 int argument_count) { |
| 7973 return New<HCallJSFunction>(fun, argument_count); | 7973 return New<HCallJSFunction>(fun, argument_count); |
| 7974 } | 7974 } |
| 7975 | 7975 |
| 7976 | 7976 |
| 7977 HInstruction* HOptimizedGraphBuilder::NewArgumentAdaptorCall( | 7977 HInstruction* HOptimizedGraphBuilder::NewArgumentAdaptorCall( |
| 7978 HValue* fun, HValue* context, | 7978 HValue* fun, HValue* context, |
| 7979 int argument_count, HValue* expected_param_count) { | 7979 int argument_count, HValue* expected_param_count) { |
| 7980 ArgumentAdaptorDescriptor descriptor(isolate()); | 7980 HValue* new_target = graph()->GetConstantUndefined(); |
| 7981 HValue* arity = Add<HConstant>(argument_count - 1); | 7981 HValue* arity = Add<HConstant>(argument_count - 1); |
| 7982 | 7982 |
| 7983 HValue* op_vals[] = { context, fun, arity, expected_param_count }; | 7983 HValue* op_vals[] = {context, fun, new_target, arity, expected_param_count}; |
| 7984 | 7984 |
| 7985 Handle<Code> adaptor = | 7985 Callable callable = CodeFactory::ArgumentAdaptor(isolate()); |
| 7986 isolate()->builtins()->ArgumentsAdaptorTrampoline(); | 7986 HConstant* stub = Add<HConstant>(callable.code()); |
| 7987 HConstant* adaptor_value = Add<HConstant>(adaptor); | |
| 7988 | 7987 |
| 7989 return New<HCallWithDescriptor>(adaptor_value, argument_count, descriptor, | 7988 return New<HCallWithDescriptor>(stub, argument_count, callable.descriptor(), |
| 7990 Vector<HValue*>(op_vals, arraysize(op_vals))); | 7989 Vector<HValue*>(op_vals, arraysize(op_vals))); |
| 7991 } | 7990 } |
| 7992 | 7991 |
| 7993 | 7992 |
| 7994 HInstruction* HOptimizedGraphBuilder::BuildCallConstantFunction( | 7993 HInstruction* HOptimizedGraphBuilder::BuildCallConstantFunction( |
| 7995 Handle<JSFunction> jsfun, int argument_count) { | 7994 Handle<JSFunction> jsfun, int argument_count) { |
| 7996 HValue* target = Add<HConstant>(jsfun); | 7995 HValue* target = Add<HConstant>(jsfun); |
| 7997 // For constant functions, we try to avoid calling the | 7996 // For constant functions, we try to avoid calling the |
| 7998 // argument adaptor and instead call the function directly | 7997 // argument adaptor and instead call the function directly |
| 7999 int formal_parameter_count = | 7998 int formal_parameter_count = |
| (...skipping 5630 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 13630 isolate()->GetHTracer()->TraceHydrogen(name(), graph_); | 13629 isolate()->GetHTracer()->TraceHydrogen(name(), graph_); |
| 13631 } | 13630 } |
| 13632 | 13631 |
| 13633 #ifdef DEBUG | 13632 #ifdef DEBUG |
| 13634 graph_->Verify(false); // No full verify. | 13633 graph_->Verify(false); // No full verify. |
| 13635 #endif | 13634 #endif |
| 13636 } | 13635 } |
| 13637 | 13636 |
| 13638 } // namespace internal | 13637 } // namespace internal |
| 13639 } // namespace v8 | 13638 } // namespace v8 |
| OLD | NEW |