| 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_NULL(receiver); | 8724 DCHECK_EQ(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_NULL(receiver); | 8734 DCHECK_EQ(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_NOT_NULL(call->arguments()->at(1)->AsLiteral()); | 11815 DCHECK_NE(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 |