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/ast-numbering.h" | 10 #include "src/ast/ast-numbering.h" |
(...skipping 12445 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
12456 void HOptimizedGraphBuilder::GenerateIsDate(CallRuntime* call) { | 12456 void HOptimizedGraphBuilder::GenerateIsDate(CallRuntime* call) { |
12457 DCHECK_EQ(1, call->arguments()->length()); | 12457 DCHECK_EQ(1, call->arguments()->length()); |
12458 CHECK_ALIVE(VisitForValue(call->arguments()->at(0))); | 12458 CHECK_ALIVE(VisitForValue(call->arguments()->at(0))); |
12459 HValue* value = Pop(); | 12459 HValue* value = Pop(); |
12460 HHasInstanceTypeAndBranch* result = | 12460 HHasInstanceTypeAndBranch* result = |
12461 New<HHasInstanceTypeAndBranch>(value, JS_DATE_TYPE); | 12461 New<HHasInstanceTypeAndBranch>(value, JS_DATE_TYPE); |
12462 return ast_context()->ReturnControl(result, call->id()); | 12462 return ast_context()->ReturnControl(result, call->id()); |
12463 } | 12463 } |
12464 | 12464 |
12465 | 12465 |
12466 void HOptimizedGraphBuilder::GenerateThrowNotDateError(CallRuntime* call) { | |
12467 DCHECK_EQ(0, call->arguments()->length()); | |
12468 Add<HDeoptimize>(Deoptimizer::kNotADateObject, Deoptimizer::EAGER); | |
12469 Add<HSimulate>(call->id(), FIXED_SIMULATE); | |
12470 return ast_context()->ReturnValue(graph()->GetConstantUndefined()); | |
12471 } | |
12472 | |
12473 | |
12474 void HOptimizedGraphBuilder::GenerateDateField(CallRuntime* call) { | |
12475 DCHECK(call->arguments()->length() == 2); | |
12476 DCHECK_NOT_NULL(call->arguments()->at(1)->AsLiteral()); | |
12477 Smi* index = Smi::cast(*(call->arguments()->at(1)->AsLiteral()->value())); | |
12478 CHECK_ALIVE(VisitForValue(call->arguments()->at(0))); | |
12479 HValue* date = Pop(); | |
12480 HDateField* result = New<HDateField>(date, index); | |
12481 return ast_context()->ReturnInstruction(result, call->id()); | |
12482 } | |
12483 | |
12484 | |
12485 void HOptimizedGraphBuilder::GenerateOneByteSeqStringSetChar( | 12466 void HOptimizedGraphBuilder::GenerateOneByteSeqStringSetChar( |
12486 CallRuntime* call) { | 12467 CallRuntime* call) { |
12487 DCHECK(call->arguments()->length() == 3); | 12468 DCHECK(call->arguments()->length() == 3); |
12488 CHECK_ALIVE(VisitForValue(call->arguments()->at(0))); | 12469 CHECK_ALIVE(VisitForValue(call->arguments()->at(0))); |
12489 CHECK_ALIVE(VisitForValue(call->arguments()->at(1))); | 12470 CHECK_ALIVE(VisitForValue(call->arguments()->at(1))); |
12490 CHECK_ALIVE(VisitForValue(call->arguments()->at(2))); | 12471 CHECK_ALIVE(VisitForValue(call->arguments()->at(2))); |
12491 HValue* string = Pop(); | 12472 HValue* string = Pop(); |
12492 HValue* value = Pop(); | 12473 HValue* value = Pop(); |
12493 HValue* index = Pop(); | 12474 HValue* index = Pop(); |
12494 Add<HSeqStringSetChar>(String::ONE_BYTE_ENCODING, string, | 12475 Add<HSeqStringSetChar>(String::ONE_BYTE_ENCODING, string, |
(...skipping 1125 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
13620 isolate()->GetHTracer()->TraceHydrogen(name(), graph_); | 13601 isolate()->GetHTracer()->TraceHydrogen(name(), graph_); |
13621 } | 13602 } |
13622 | 13603 |
13623 #ifdef DEBUG | 13604 #ifdef DEBUG |
13624 graph_->Verify(false); // No full verify. | 13605 graph_->Verify(false); // No full verify. |
13625 #endif | 13606 #endif |
13626 } | 13607 } |
13627 | 13608 |
13628 } // namespace internal | 13609 } // namespace internal |
13629 } // namespace v8 | 13610 } // namespace v8 |
OLD | NEW |