Index: src/hydrogen.cc |
=================================================================== |
--- src/hydrogen.cc (revision 6414) |
+++ src/hydrogen.cc (working copy) |
@@ -4820,7 +4820,12 @@ |
if (FLAG_trace_representation) { |
PrintF("Info: %s/%s\n", info.ToString(), ToRepresentation(info).Mnemonic()); |
} |
- AssumeRepresentation(instr, ToRepresentation(info)); |
+ Representation rep = ToRepresentation(info); |
+ // We only generate either int32 or generic tagged bitwise operations. |
+ if (instr->IsBitwiseBinaryOperation() && rep.IsDouble()) { |
+ rep = Representation::Integer32(); |
+ } |
+ AssumeRepresentation(instr, rep); |
return instr; |
} |
@@ -4901,7 +4906,8 @@ |
graph_->GetMaximumValueID()); |
} |
value->ChangeRepresentation(r); |
- // The representation of the value is dictated by type feedback. |
+ // The representation of the value is dictated by type feedback and |
+ // will not be changed later. |
value->ClearFlag(HValue::kFlexibleRepresentation); |
} else if (FLAG_trace_representation) { |
PrintF("No representation assumed\n"); |