OLD | NEW |
1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 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/code-stubs.h" | 5 #include "src/code-stubs.h" |
6 | 6 |
7 #include "src/bailout-reason.h" | 7 #include "src/bailout-reason.h" |
8 #include "src/crankshaft/hydrogen.h" | 8 #include "src/crankshaft/hydrogen.h" |
9 #include "src/crankshaft/lithium.h" | 9 #include "src/crankshaft/lithium.h" |
10 #include "src/field-index.h" | 10 #include "src/field-index.h" |
(...skipping 1401 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1412 return BuildInternalArrayConstructor(kind, MULTIPLE); | 1412 return BuildInternalArrayConstructor(kind, MULTIPLE); |
1413 } | 1413 } |
1414 | 1414 |
1415 | 1415 |
1416 Handle<Code> InternalArrayNArgumentsConstructorStub::GenerateCode() { | 1416 Handle<Code> InternalArrayNArgumentsConstructorStub::GenerateCode() { |
1417 return DoGenerateCode(this); | 1417 return DoGenerateCode(this); |
1418 } | 1418 } |
1419 | 1419 |
1420 | 1420 |
1421 template <> | 1421 template <> |
| 1422 HValue* CodeStubGraphBuilder<CompareNilICStub>::BuildCodeInitializedStub() { |
| 1423 Isolate* isolate = graph()->isolate(); |
| 1424 CompareNilICStub* stub = casted_stub(); |
| 1425 HIfContinuation continuation; |
| 1426 Handle<Map> sentinel_map(isolate->heap()->meta_map()); |
| 1427 Type* type = stub->GetType(zone(), sentinel_map); |
| 1428 BuildCompareNil(GetParameter(0), type, &continuation, kEmbedMapsViaWeakCells); |
| 1429 IfBuilder if_nil(this, &continuation); |
| 1430 if_nil.Then(); |
| 1431 if (continuation.IsFalseReachable()) { |
| 1432 if_nil.Else(); |
| 1433 if_nil.Return(graph()->GetConstantFalse()); |
| 1434 } |
| 1435 if_nil.End(); |
| 1436 return continuation.IsTrueReachable() ? graph()->GetConstantTrue() |
| 1437 : graph()->GetConstantUndefined(); |
| 1438 } |
| 1439 |
| 1440 |
| 1441 Handle<Code> CompareNilICStub::GenerateCode() { |
| 1442 return DoGenerateCode(this); |
| 1443 } |
| 1444 |
| 1445 |
| 1446 template <> |
1422 HValue* CodeStubGraphBuilder<BinaryOpICStub>::BuildCodeInitializedStub() { | 1447 HValue* CodeStubGraphBuilder<BinaryOpICStub>::BuildCodeInitializedStub() { |
1423 BinaryOpICState state = casted_stub()->state(); | 1448 BinaryOpICState state = casted_stub()->state(); |
1424 | 1449 |
1425 HValue* left = GetParameter(BinaryOpICStub::kLeft); | 1450 HValue* left = GetParameter(BinaryOpICStub::kLeft); |
1426 HValue* right = GetParameter(BinaryOpICStub::kRight); | 1451 HValue* right = GetParameter(BinaryOpICStub::kRight); |
1427 | 1452 |
1428 Type* left_type = state.GetLeftType(); | 1453 Type* left_type = state.GetLeftType(); |
1429 Type* right_type = state.GetRightType(); | 1454 Type* right_type = state.GetRightType(); |
1430 Type* result_type = state.GetResultType(); | 1455 Type* result_type = state.GetResultType(); |
1431 | 1456 |
(...skipping 967 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2399 return Pop(); | 2424 return Pop(); |
2400 } | 2425 } |
2401 | 2426 |
2402 | 2427 |
2403 Handle<Code> KeyedLoadGenericStub::GenerateCode() { | 2428 Handle<Code> KeyedLoadGenericStub::GenerateCode() { |
2404 return DoGenerateCode(this); | 2429 return DoGenerateCode(this); |
2405 } | 2430 } |
2406 | 2431 |
2407 } // namespace internal | 2432 } // namespace internal |
2408 } // namespace v8 | 2433 } // namespace v8 |
OLD | NEW |