| Index: runtime/vm/jit_optimizer.cc
|
| diff --git a/runtime/vm/jit_optimizer.cc b/runtime/vm/jit_optimizer.cc
|
| index b98b07c34d4e091a4f2450ee4c369409111f83d5..f5f221110d591c90a0e93a73c14cdfad1864a120 100644
|
| --- a/runtime/vm/jit_optimizer.cc
|
| +++ b/runtime/vm/jit_optimizer.cc
|
| @@ -1262,7 +1262,7 @@ bool JitOptimizer::TryReplaceWithUnaryOp(InstanceCallInstr* call,
|
| }
|
|
|
|
|
| -// Using field class
|
| +// Using field class.
|
| RawField* JitOptimizer::GetField(intptr_t class_id,
|
| const String& field_name) {
|
| Class& cls = Class::Handle(Z, isolate()->class_table()->At(class_id));
|
| @@ -1270,7 +1270,12 @@ RawField* JitOptimizer::GetField(intptr_t class_id,
|
| while (!cls.IsNull()) {
|
| field = cls.LookupInstanceField(field_name);
|
| if (!field.IsNull()) {
|
| - return field.raw();
|
| + if (Compiler::IsBackgroundCompilation() ||
|
| + FLAG_force_clone_compiler_objects) {
|
| + return field.CloneFromOriginal();
|
| + } else {
|
| + return field.raw();
|
| + }
|
| }
|
| cls = cls.SuperClass();
|
| }
|
|
|