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 |