Chromium Code Reviews| Index: runtime/vm/intermediate_language_ia32.cc |
| =================================================================== |
| --- runtime/vm/intermediate_language_ia32.cc (revision 24013) |
| +++ runtime/vm/intermediate_language_ia32.cc (working copy) |
| @@ -1759,16 +1759,22 @@ |
| LocationSummary* LoadStaticFieldInstr::MakeLocationSummary() const { |
| - return LocationSummary::Make(0, |
| - Location::RequiresRegister(), |
| - LocationSummary::kNoCall); |
| + const intptr_t kNumInputs = 1; |
| + const intptr_t kNumTemps = 0; |
| + LocationSummary* summary = |
| + new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| + summary->set_in(0, Location::RequiresRegister()); |
| + // By specifying same register as input, our simple register allocator can |
| + // generate better code. |
|
Florian Schneider
2013/06/14 08:55:05
Side note: We have a similar issue for LoadField:
srdjan
2013/06/14 14:00:04
Yes, that is a good idea. I think that would help
|
| + summary->set_out(Location::SameAsFirstInput()); |
| + return summary; |
| } |
| void LoadStaticFieldInstr::EmitNativeCode(FlowGraphCompiler* compiler) { |
| + Register field = locs()->in(0).reg(); |
| Register result = locs()->out().reg(); |
| - __ LoadObject(result, field()); |
| - __ movl(result, FieldAddress(result, Field::value_offset())); |
| + __ movl(result, FieldAddress(field, Field::value_offset())); |
|
Florian Schneider
2013/06/14 08:55:05
Do static fields move in memory due to GC?
If not
srdjan
2013/06/14 14:00:04
They don't now, but they will.
|
| } |