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 8703 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
8714 } else { | 8714 } else { |
8715 DCHECK_EQ(holder_lookup, CallOptimization::kHolderIsReceiver); | 8715 DCHECK_EQ(holder_lookup, CallOptimization::kHolderIsReceiver); |
8716 } | 8716 } |
8717 // Includes receiver. | 8717 // Includes receiver. |
8718 PushArgumentsFromEnvironment(argc + 1); | 8718 PushArgumentsFromEnvironment(argc + 1); |
8719 is_function = true; | 8719 is_function = true; |
8720 break; | 8720 break; |
8721 case kCallApiGetter: | 8721 case kCallApiGetter: |
8722 // Receiver and prototype chain cannot have changed. | 8722 // Receiver and prototype chain cannot have changed. |
8723 DCHECK_EQ(0, argc); | 8723 DCHECK_EQ(0, argc); |
8724 DCHECK_EQ(NULL, receiver); | 8724 DCHECK_NULL(receiver); |
8725 // Receiver is on expression stack. | 8725 // Receiver is on expression stack. |
8726 receiver = Pop(); | 8726 receiver = Pop(); |
8727 Add<HPushArguments>(receiver); | 8727 Add<HPushArguments>(receiver); |
8728 break; | 8728 break; |
8729 case kCallApiSetter: | 8729 case kCallApiSetter: |
8730 { | 8730 { |
8731 is_store = true; | 8731 is_store = true; |
8732 // Receiver and prototype chain cannot have changed. | 8732 // Receiver and prototype chain cannot have changed. |
8733 DCHECK_EQ(1, argc); | 8733 DCHECK_EQ(1, argc); |
8734 DCHECK_EQ(NULL, receiver); | 8734 DCHECK_NULL(receiver); |
8735 // Receiver and value are on expression stack. | 8735 // Receiver and value are on expression stack. |
8736 HValue* value = Pop(); | 8736 HValue* value = Pop(); |
8737 receiver = Pop(); | 8737 receiver = Pop(); |
8738 Add<HPushArguments>(receiver, value); | 8738 Add<HPushArguments>(receiver, value); |
8739 break; | 8739 break; |
8740 } | 8740 } |
8741 } | 8741 } |
8742 | 8742 |
8743 HValue* holder = NULL; | 8743 HValue* holder = NULL; |
8744 switch (holder_lookup) { | 8744 switch (holder_lookup) { |
(...skipping 3060 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
11805 Push(object); | 11805 Push(object); |
11806 Add<HSimulate>(call->id(), FIXED_SIMULATE); | 11806 Add<HSimulate>(call->id(), FIXED_SIMULATE); |
11807 } | 11807 } |
11808 if_objectisvalue.End(); | 11808 if_objectisvalue.End(); |
11809 return ast_context()->ReturnValue(Pop()); | 11809 return ast_context()->ReturnValue(Pop()); |
11810 } | 11810 } |
11811 | 11811 |
11812 | 11812 |
11813 void HOptimizedGraphBuilder::GenerateDateField(CallRuntime* call) { | 11813 void HOptimizedGraphBuilder::GenerateDateField(CallRuntime* call) { |
11814 DCHECK(call->arguments()->length() == 2); | 11814 DCHECK(call->arguments()->length() == 2); |
11815 DCHECK_NE(NULL, call->arguments()->at(1)->AsLiteral()); | 11815 DCHECK_NOT_NULL(call->arguments()->at(1)->AsLiteral()); |
11816 Smi* index = Smi::cast(*(call->arguments()->at(1)->AsLiteral()->value())); | 11816 Smi* index = Smi::cast(*(call->arguments()->at(1)->AsLiteral()->value())); |
11817 CHECK_ALIVE(VisitForValue(call->arguments()->at(0))); | 11817 CHECK_ALIVE(VisitForValue(call->arguments()->at(0))); |
11818 HValue* date = Pop(); | 11818 HValue* date = Pop(); |
11819 HDateField* result = New<HDateField>(date, index); | 11819 HDateField* result = New<HDateField>(date, index); |
11820 return ast_context()->ReturnInstruction(result, call->id()); | 11820 return ast_context()->ReturnInstruction(result, call->id()); |
11821 } | 11821 } |
11822 | 11822 |
11823 | 11823 |
11824 void HOptimizedGraphBuilder::GenerateOneByteSeqStringSetChar( | 11824 void HOptimizedGraphBuilder::GenerateOneByteSeqStringSetChar( |
11825 CallRuntime* call) { | 11825 CallRuntime* call) { |
(...skipping 1653 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
13479 if (ShouldProduceTraceOutput()) { | 13479 if (ShouldProduceTraceOutput()) { |
13480 isolate()->GetHTracer()->TraceHydrogen(name(), graph_); | 13480 isolate()->GetHTracer()->TraceHydrogen(name(), graph_); |
13481 } | 13481 } |
13482 | 13482 |
13483 #ifdef DEBUG | 13483 #ifdef DEBUG |
13484 graph_->Verify(false); // No full verify. | 13484 graph_->Verify(false); // No full verify. |
13485 #endif | 13485 #endif |
13486 } | 13486 } |
13487 | 13487 |
13488 } } // namespace v8::internal | 13488 } } // namespace v8::internal |
OLD | NEW |