Index: src/hydrogen-instructions.cc |
diff --git a/src/hydrogen-instructions.cc b/src/hydrogen-instructions.cc |
index e93d3402037c11d59698db991e77e4c9ba3f0c17..ea0d4f5ba2ffb8d893b0dc491e17534b7fc008fd 100644 |
--- a/src/hydrogen-instructions.cc |
+++ b/src/hydrogen-instructions.cc |
@@ -2659,6 +2659,7 @@ bool HConstant::EmitAtUses() { |
if (UseCount() == 0) return true; |
if (IsCell()) return false; |
if (representation().IsDouble()) return false; |
+ if (representation().IsExternal()) return false; |
return true; |
} |
@@ -3130,7 +3131,7 @@ void HLoadKeyed::PrintDataTo(StringStream* stream) { |
stream->Add("["); |
key()->PrintNameTo(stream); |
if (IsDehoisted()) { |
- stream->Add(" + %d]", index_offset()); |
+ stream->Add(" + %d]", base_offset()); |
} else { |
stream->Add("]"); |
} |
@@ -3231,11 +3232,19 @@ HValue* HLoadKeyedGeneric::Canonicalize() { |
index_cache, |
key_load->key(), |
key_load->key(), |
- key_load->elements_kind()); |
+ key_load->elements_kind(), |
Toon Verwaest
2013/12/04 17:29:26
Why is this the same elements kind as the array of
danno
2014/06/06 15:43:50
That's beyond the scope of this change, which itse
|
+ NEVER_RETURN_HOLE, |
+ key_load->base_offset()); |
map_check->InsertBefore(this); |
index->InsertBefore(this); |
- HLoadFieldByIndex* load = new(block()->zone()) HLoadFieldByIndex( |
- object(), index); |
+ HInstruction* int_index = new(block()->zone()) HChange( |
+ index, Representation::Integer32(), false, false); |
+ HChange::cast(int_index)->InsertBefore(this); |
Toon Verwaest
2013/12/04 17:29:26
So this change is actually (or better, will be) su
danno
2014/06/06 15:43:50
This change is no longer necessary, after unrelate
|
+ HLoadFieldByIndex* load = |
+ HLoadFieldByIndex::New(block()->graph()->zone(), |
+ block()->graph()->GetInvalidContext(), |
+ object(), |
+ int_index); |
load->InsertBefore(this); |
return load; |
} |
@@ -3284,7 +3293,7 @@ void HStoreKeyed::PrintDataTo(StringStream* stream) { |
stream->Add("["); |
key()->PrintNameTo(stream); |
if (IsDehoisted()) { |
- stream->Add(" + %d] = ", index_offset()); |
+ stream->Add(" + %d] = ", base_offset()); |
} else { |
stream->Add("] = "); |
} |