| OLD | NEW |
| 1 // Copyright 2014 the V8 project authors. All rights reserved. | 1 // Copyright 2014 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/compiler/verifier.h" | 5 #include "src/compiler/verifier.h" |
| 6 | 6 |
| 7 #include <deque> | 7 #include <deque> |
| 8 #include <queue> | 8 #include <queue> |
| 9 | 9 |
| 10 #include "src/compiler/generic-algorithm.h" | 10 #include "src/compiler/generic-algorithm.h" |
| (...skipping 476 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 487 // Type* from = Type::Intersect(Type::Signed32(), Type::Tagged()); | 487 // Type* from = Type::Intersect(Type::Signed32(), Type::Tagged()); |
| 488 // Type* to = Type::Intersect(Type::Signed32(), Type::UntaggedInt32()); | 488 // Type* to = Type::Intersect(Type::Signed32(), Type::UntaggedInt32()); |
| 489 // CHECK(bounds(Operand(node)).upper->Is(from)); | 489 // CHECK(bounds(Operand(node)).upper->Is(from)); |
| 490 // CHECK(bounds(node).upper->Is(to)); | 490 // CHECK(bounds(node).upper->Is(to)); |
| 491 break; | 491 break; |
| 492 } | 492 } |
| 493 case IrOpcode::kChangeTaggedToUint32: { | 493 case IrOpcode::kChangeTaggedToUint32: { |
| 494 // Unsigned32 /\ Tagged -> Unsigned32 /\ UntaggedInt32 | 494 // Unsigned32 /\ Tagged -> Unsigned32 /\ UntaggedInt32 |
| 495 // TODO(neis): Activate once ChangeRepresentation works in typer. | 495 // TODO(neis): Activate once ChangeRepresentation works in typer. |
| 496 // Type* from = Type::Intersect(Type::Unsigned32(), Type::Tagged()); | 496 // Type* from = Type::Intersect(Type::Unsigned32(), Type::Tagged()); |
| 497 // Type* to = Type::Intersect(Type::Unsigned32(), Type::UntaggedInt32())
; | 497 // Type* to =Type::Intersect(Type::Unsigned32(), Type::UntaggedInt32()); |
| 498 // CHECK(bounds(Operand(node)).upper->Is(from)); | 498 // CHECK(bounds(Operand(node)).upper->Is(from)); |
| 499 // CHECK(bounds(node).upper->Is(to)); | 499 // CHECK(bounds(node).upper->Is(to)); |
| 500 break; | 500 break; |
| 501 } | 501 } |
| 502 case IrOpcode::kChangeTaggedToFloat64: { | 502 case IrOpcode::kChangeTaggedToFloat64: { |
| 503 // Number /\ Tagged -> Number /\ UntaggedFloat64 | 503 // Number /\ Tagged -> Number /\ UntaggedFloat64 |
| 504 // TODO(neis): Activate once ChangeRepresentation works in typer. | 504 // TODO(neis): Activate once ChangeRepresentation works in typer. |
| 505 // Type* from = Type::Intersect(Type::Number(), Type::Tagged()); | 505 // Type* from = Type::Intersect(Type::Number(), Type::Tagged()); |
| 506 // Type* to = Type::Intersect(Type::Number(), Type::UntaggedFloat64()); | 506 // Type* to = Type::Intersect(Type::Number(), Type::UntaggedFloat64()); |
| 507 // CHECK(bounds(Operand(node)).upper->Is(from)); | 507 // CHECK(bounds(Operand(node)).upper->Is(from)); |
| 508 // CHECK(bounds(node).upper->Is(to)); | 508 // CHECK(bounds(node).upper->Is(to)); |
| 509 break; | 509 break; |
| 510 } | 510 } |
| 511 case IrOpcode::kChangeInt32ToTagged: { | 511 case IrOpcode::kChangeInt32ToTagged: { |
| 512 // Signed32 /\ UntaggedInt32 -> Signed32 /\ Tagged | 512 // Signed32 /\ UntaggedInt32 -> Signed32 /\ Tagged |
| 513 // TODO(neis): Activate once ChangeRepresentation works in typer. | 513 // TODO(neis): Activate once ChangeRepresentation works in typer. |
| 514 // Type* from = Type::Intersect(Type::Signed32(), Type::UntaggedInt32())
; | 514 // Type* from =Type::Intersect(Type::Signed32(), Type::UntaggedInt32()); |
| 515 // Type* to = Type::Intersect(Type::Signed32(), Type::Tagged()); | 515 // Type* to = Type::Intersect(Type::Signed32(), Type::Tagged()); |
| 516 // CHECK(bounds(Operand(node)).upper->Is(from)); | 516 // CHECK(bounds(Operand(node)).upper->Is(from)); |
| 517 // CHECK(bounds(node).upper->Is(to)); | 517 // CHECK(bounds(node).upper->Is(to)); |
| 518 break; | 518 break; |
| 519 } | 519 } |
| 520 case IrOpcode::kChangeUint32ToTagged: { | 520 case IrOpcode::kChangeUint32ToTagged: { |
| 521 // Unsigned32 /\ UntaggedInt32 -> Unsigned32 /\ Tagged | 521 // Unsigned32 /\ UntaggedInt32 -> Unsigned32 /\ Tagged |
| 522 // TODO(neis): Activate once ChangeRepresentation works in typer. | 522 // TODO(neis): Activate once ChangeRepresentation works in typer. |
| 523 // Type* from = Type::Intersect(Type::Unsigned32(), Type::UntaggedInt32(
)); | 523 // Type* from=Type::Intersect(Type::Unsigned32(),Type::UntaggedInt32()); |
| 524 // Type* to = Type::Intersect(Type::Unsigned32(), Type::Tagged()); | 524 // Type* to = Type::Intersect(Type::Unsigned32(), Type::Tagged()); |
| 525 // CHECK(bounds(Operand(node)).upper->Is(from)); | 525 // CHECK(bounds(Operand(node)).upper->Is(from)); |
| 526 // CHECK(bounds(node).upper->Is(to)); | 526 // CHECK(bounds(node).upper->Is(to)); |
| 527 break; | 527 break; |
| 528 } | 528 } |
| 529 case IrOpcode::kChangeFloat64ToTagged: { | 529 case IrOpcode::kChangeFloat64ToTagged: { |
| 530 // Number /\ UntaggedFloat64 -> Number /\ Tagged | 530 // Number /\ UntaggedFloat64 -> Number /\ Tagged |
| 531 // TODO(neis): Activate once ChangeRepresentation works in typer. | 531 // TODO(neis): Activate once ChangeRepresentation works in typer. |
| 532 // Type* from = Type::Intersect(Type::Number(), Type::UntaggedFloat64())
; | 532 // Type* from =Type::Intersect(Type::Number(), Type::UntaggedFloat64()); |
| 533 // Type* to = Type::Intersect(Type::Number(), Type::Tagged()); | 533 // Type* to = Type::Intersect(Type::Number(), Type::Tagged()); |
| 534 // CHECK(bounds(Operand(node)).upper->Is(from)); | 534 // CHECK(bounds(Operand(node)).upper->Is(from)); |
| 535 // CHECK(bounds(node).upper->Is(to)); | 535 // CHECK(bounds(node).upper->Is(to)); |
| 536 break; | 536 break; |
| 537 } | 537 } |
| 538 case IrOpcode::kChangeBoolToBit: { | 538 case IrOpcode::kChangeBoolToBit: { |
| 539 // Boolean /\ TaggedPtr -> Boolean /\ UntaggedInt1 | 539 // Boolean /\ TaggedPtr -> Boolean /\ UntaggedInt1 |
| 540 // TODO(neis): Activate once ChangeRepresentation works in typer. | 540 // TODO(neis): Activate once ChangeRepresentation works in typer. |
| 541 // Type* from = Type::Intersect(Type::Boolean(), Type::TaggedPtr()); | 541 // Type* from = Type::Intersect(Type::Boolean(), Type::TaggedPtr()); |
| 542 // Type* to = Type::Intersect(Type::Boolean(), Type::UntaggedInt1()); | 542 // Type* to = Type::Intersect(Type::Boolean(), Type::UntaggedInt1()); |
| (...skipping 342 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 885 // Check inputs for all nodes in the block. | 885 // Check inputs for all nodes in the block. |
| 886 for (size_t i = 0; i < block->NodeCount(); i++) { | 886 for (size_t i = 0; i < block->NodeCount(); i++) { |
| 887 Node* node = block->NodeAt(i); | 887 Node* node = block->NodeAt(i); |
| 888 CheckInputsDominate(schedule, block, node, static_cast<int>(i) - 1); | 888 CheckInputsDominate(schedule, block, node, static_cast<int>(i) - 1); |
| 889 } | 889 } |
| 890 } | 890 } |
| 891 } | 891 } |
| 892 } | 892 } |
| 893 } | 893 } |
| 894 } // namespace v8::internal::compiler | 894 } // namespace v8::internal::compiler |
| OLD | NEW |