Chromium Code Reviews| Index: runtime/vm/intermediate_language_ia32.cc |
| diff --git a/runtime/vm/intermediate_language_ia32.cc b/runtime/vm/intermediate_language_ia32.cc |
| index 6a8e1b48cf903224f983d4ada849bad14e6524c4..b40fda4f6f040cd7636a1f25a6c346fff052abad 100644 |
| --- a/runtime/vm/intermediate_language_ia32.cc |
| +++ b/runtime/vm/intermediate_language_ia32.cc |
| @@ -1882,6 +1882,9 @@ void StoreInstanceFieldInstr::EmitNativeCode(FlowGraphCompiler* compiler) { |
| locs()->live_registers()->Add(locs()->in(1)); |
| } |
| + // Manually preserve temp which could be clobbered on the slow path. |
| + locs()->live_registers()->Add(locs()->temp(0)); |
|
Vyacheslav Egorov (Google)
2014/12/09 17:49:46
Actually I have been looking at this code and it d
zerny-google
2014/12/10 09:49:15
Your right, the updated patch set won't clobber te
|
| + |
| { |
| __ Bind(&store_double); |
| EnsureMutableBox(compiler, |
| @@ -3800,6 +3803,9 @@ void LoadCodeUnitsInstr::EmitNativeCode(FlowGraphCompiler* compiler) { |
| } else { |
| // If the value cannot fit in a smi then allocate a mint box for it. |
| Register temp = locs()->temp(0).reg(); |
| + // Temp register needs to be manually preserved on allocation slow-path. |
| + locs()->live_registers()->Add(locs()->temp(0), kUnboxedInt32); |
| + |
| ASSERT(temp != result); |
| __ MoveRegister(temp, result); |
| __ SmiTag(result); |