| Index: src/hydrogen-escape-analysis.cc
|
| diff --git a/src/hydrogen-escape-analysis.cc b/src/hydrogen-escape-analysis.cc
|
| index 311091b6d993ddf78f7b373309d60b6869a249e7..b5086442fea9a62dc10685d2016ee85e8014848d 100644
|
| --- a/src/hydrogen-escape-analysis.cc
|
| +++ b/src/hydrogen-escape-analysis.cc
|
| @@ -172,11 +172,14 @@ void HEscapeAnalysisPhase::AnalyzeDataFlow(HInstruction* allocate) {
|
| int index = store->access().offset() / kPointerSize;
|
| if (store->object() != allocate) continue;
|
| ASSERT(store->access().IsInobject());
|
| - state = NewStateCopy(store, state);
|
| + state = NewStateCopy(store->previous(), state);
|
| state->SetOperandAt(index, store->value());
|
| if (store->has_transition()) {
|
| state->SetOperandAt(0, store->transition());
|
| }
|
| + if (store->HasObservableSideEffects()) {
|
| + state->ReuseSideEffectsFromStore(store);
|
| + }
|
| store->DeleteAndReplaceWith(NULL);
|
| if (FLAG_trace_escape_analysis) {
|
| PrintF("Replacing store #%d%s\n", instr->id(),
|
|
|