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/hydrogen.h" | 5 #include "src/hydrogen.h" |
6 | 6 |
7 #include <sstream> | 7 #include <sstream> |
8 | 8 |
9 #include "src/v8.h" | 9 #include "src/v8.h" |
10 | 10 |
(...skipping 8758 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
8769 HInstruction* call = nullptr; | 8769 HInstruction* call = nullptr; |
8770 if (!is_function) { | 8770 if (!is_function) { |
8771 CallApiAccessorStub stub(isolate(), is_store, call_data_undefined); | 8771 CallApiAccessorStub stub(isolate(), is_store, call_data_undefined); |
8772 Handle<Code> code = stub.GetCode(); | 8772 Handle<Code> code = stub.GetCode(); |
8773 HConstant* code_value = Add<HConstant>(code); | 8773 HConstant* code_value = Add<HConstant>(code); |
8774 ApiAccessorDescriptor descriptor(isolate()); | 8774 ApiAccessorDescriptor descriptor(isolate()); |
8775 DCHECK(arraysize(op_vals) - 1 == descriptor.GetEnvironmentLength()); | 8775 DCHECK(arraysize(op_vals) - 1 == descriptor.GetEnvironmentLength()); |
8776 call = New<HCallWithDescriptor>( | 8776 call = New<HCallWithDescriptor>( |
8777 code_value, argc + 1, descriptor, | 8777 code_value, argc + 1, descriptor, |
8778 Vector<HValue*>(op_vals, descriptor.GetEnvironmentLength())); | 8778 Vector<HValue*>(op_vals, descriptor.GetEnvironmentLength())); |
| 8779 } else if (argc <= CallApiFunctionWithFixedArgsStub::kMaxFixedArgs) { |
| 8780 CallApiFunctionWithFixedArgsStub stub(isolate(), argc, call_data_undefined); |
| 8781 Handle<Code> code = stub.GetCode(); |
| 8782 HConstant* code_value = Add<HConstant>(code); |
| 8783 ApiFunctionWithFixedArgsDescriptor descriptor(isolate()); |
| 8784 DCHECK(arraysize(op_vals) - 1 == descriptor.GetEnvironmentLength()); |
| 8785 call = New<HCallWithDescriptor>( |
| 8786 code_value, argc + 1, descriptor, |
| 8787 Vector<HValue*>(op_vals, descriptor.GetEnvironmentLength())); |
| 8788 Drop(1); // Drop function. |
8779 } else { | 8789 } else { |
8780 op_vals[arraysize(op_vals) - 1] = Add<HConstant>(argc); | 8790 op_vals[arraysize(op_vals) - 1] = Add<HConstant>(argc); |
8781 CallApiFunctionStub stub(isolate(), call_data_undefined); | 8791 CallApiFunctionStub stub(isolate(), call_data_undefined); |
8782 Handle<Code> code = stub.GetCode(); | 8792 Handle<Code> code = stub.GetCode(); |
8783 HConstant* code_value = Add<HConstant>(code); | 8793 HConstant* code_value = Add<HConstant>(code); |
8784 ApiFunctionDescriptor descriptor(isolate()); | 8794 ApiFunctionDescriptor descriptor(isolate()); |
8785 DCHECK(arraysize(op_vals) == descriptor.GetEnvironmentLength()); | 8795 DCHECK(arraysize(op_vals) == descriptor.GetEnvironmentLength()); |
8786 call = New<HCallWithDescriptor>( | 8796 call = New<HCallWithDescriptor>( |
8787 code_value, argc + 1, descriptor, | 8797 code_value, argc + 1, descriptor, |
8788 Vector<HValue*>(op_vals, descriptor.GetEnvironmentLength())); | 8798 Vector<HValue*>(op_vals, descriptor.GetEnvironmentLength())); |
(...skipping 4668 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
13457 if (ShouldProduceTraceOutput()) { | 13467 if (ShouldProduceTraceOutput()) { |
13458 isolate()->GetHTracer()->TraceHydrogen(name(), graph_); | 13468 isolate()->GetHTracer()->TraceHydrogen(name(), graph_); |
13459 } | 13469 } |
13460 | 13470 |
13461 #ifdef DEBUG | 13471 #ifdef DEBUG |
13462 graph_->Verify(false); // No full verify. | 13472 graph_->Verify(false); // No full verify. |
13463 #endif | 13473 #endif |
13464 } | 13474 } |
13465 | 13475 |
13466 } } // namespace v8::internal | 13476 } } // namespace v8::internal |
OLD | NEW |