Index: src/compiler/register-allocator-verifier.cc |
diff --git a/src/compiler/register-allocator-verifier.cc b/src/compiler/register-allocator-verifier.cc |
index 2d10de081c5d9abaf0d095520ef61ebb0859cc28..cefd04af1faeffdfc4b2cc8a7934a0248d2508cd 100644 |
--- a/src/compiler/register-allocator-verifier.cc |
+++ b/src/compiler/register-allocator-verifier.cc |
@@ -160,7 +160,7 @@ void RegisterAllocatorVerifier::BuildConstraint(const InstructionOperand* op, |
int vreg = unallocated->virtual_register(); |
constraint->virtual_register_ = vreg; |
if (unallocated->basic_policy() == UnallocatedOperand::FIXED_SLOT) { |
- constraint->type_ = sequence()->IsFP(vreg) ? kFPSlot : kSlot; |
+ constraint->type_ = kFixedSlot; |
constraint->value_ = unallocated->fixed_slot_index(); |
} else { |
switch (unallocated->extended_policy()) { |
@@ -193,7 +193,9 @@ void RegisterAllocatorVerifier::BuildConstraint(const InstructionOperand* op, |
} |
break; |
case UnallocatedOperand::MUST_HAVE_SLOT: |
- constraint->type_ = sequence()->IsFP(vreg) ? kFPSlot : kSlot; |
+ constraint->type_ = kSlot; |
+ constraint->value_ = |
+ ElementSizeLog2Of(sequence()->GetRepresentation(vreg)); |
break; |
case UnallocatedOperand::SAME_AS_FIRST_INPUT: |
constraint->type_ = kSameAsFirst; |
@@ -239,14 +241,13 @@ void RegisterAllocatorVerifier::CheckConstraint( |
CHECK_EQ(LocationOperand::cast(op)->register_code(), constraint->value_); |
return; |
case kFixedSlot: |
- CHECK(op->IsStackSlot()); |
+ CHECK(op->IsStackSlot() || op->IsFPStackSlot()); |
CHECK_EQ(LocationOperand::cast(op)->index(), constraint->value_); |
return; |
case kSlot: |
- CHECK(op->IsStackSlot()); |
- return; |
- case kFPSlot: |
- CHECK(op->IsFPStackSlot()); |
+ CHECK(op->IsStackSlot() || op->IsFPStackSlot()); |
+ CHECK_EQ(ElementSizeLog2Of(LocationOperand::cast(op)->representation()), |
+ constraint->value_); |
return; |
case kNone: |
CHECK(op->IsRegister() || op->IsStackSlot()); |