diff options
-rw-r--r-- | compiler/dex/compiler_ir.cc | 25 | ||||
-rw-r--r-- | compiler/dex/compiler_ir.h | 1 | ||||
-rw-r--r-- | compiler/optimizing/nodes.h | 40 |
3 files changed, 66 insertions, 0 deletions
diff --git a/compiler/dex/compiler_ir.cc b/compiler/dex/compiler_ir.cc index 3d1251e..3a25b03 100644 --- a/compiler/dex/compiler_ir.cc +++ b/compiler/dex/compiler_ir.cc @@ -27,6 +27,31 @@ namespace art { CompilationUnit::CompilationUnit(ArenaPool* pool, InstructionSet isa, CompilerDriver* driver, + ClassLinker* linker) + : compiler_driver(driver), + class_linker(linker), + dex_file(nullptr), + class_loader(nullptr), + class_def_idx(0), + method_idx(0), + access_flags(0), + invoke_type(kDirect), + shorty(nullptr), + disable_opt(0), + enable_debug(0), + verbose(false), + instruction_set(isa), + target64(Is64BitInstructionSet(isa)), + arena(pool), + arena_stack(pool), + mir_graph(nullptr), + cg(nullptr), + timings("QuickCompiler", true, false), + print_pass(false), + compiler_(nullptr) { +} + +CompilationUnit::CompilationUnit(ArenaPool* pool, InstructionSet isa, CompilerDriver* driver, ClassLinker* linker, const QuickCompiler* compiler) : compiler_driver(driver), class_linker(linker), diff --git a/compiler/dex/compiler_ir.h b/compiler/dex/compiler_ir.h index 6a45f7b..dc5af72 100644 --- a/compiler/dex/compiler_ir.h +++ b/compiler/dex/compiler_ir.h @@ -161,6 +161,7 @@ struct OptionContent { }; struct CompilationUnit { + CompilationUnit(ArenaPool* pool, InstructionSet isa, CompilerDriver* driver, ClassLinker* linker); CompilationUnit(ArenaPool* pool, InstructionSet isa, CompilerDriver* driver, ClassLinker* linker, const QuickCompiler* compiler); ~CompilationUnit(); diff --git a/compiler/optimizing/nodes.h b/compiler/optimizing/nodes.h index 5d23285..a537430 100644 --- a/compiler/optimizing/nodes.h +++ b/compiler/optimizing/nodes.h @@ -3166,6 +3166,15 @@ class HInstanceFieldGet : public HExpression<1> { HInstanceFieldGet(HInstruction* value, Primitive::Type field_type, MemberOffset field_offset, + bool is_volatile) + : HExpression(field_type, SideEffects::DependsOnSomething()), + field_info_(field_offset, field_type, is_volatile, 0) { + SetRawInputAt(0, value); + } + + HInstanceFieldGet(HInstruction* value, + Primitive::Type field_type, + MemberOffset field_offset, bool is_volatile, uint32_t field_idx) : HExpression(field_type, SideEffects::DependsOnSomething()), @@ -3210,6 +3219,17 @@ class HInstanceFieldSet : public HTemplateInstruction<2> { HInstruction* value, Primitive::Type field_type, MemberOffset field_offset, + bool is_volatile) + : HTemplateInstruction(SideEffects::ChangesSomething()), + field_info_(field_offset, field_type, is_volatile, 0) { + SetRawInputAt(0, object); + SetRawInputAt(1, value); + } + + HInstanceFieldSet(HInstruction* object, + HInstruction* value, + Primitive::Type field_type, + MemberOffset field_offset, bool is_volatile, uint32_t field_idx) : HTemplateInstruction(SideEffects::ChangesSomething()), @@ -3592,6 +3612,15 @@ class HStaticFieldGet : public HExpression<1> { HStaticFieldGet(HInstruction* cls, Primitive::Type field_type, MemberOffset field_offset, + bool is_volatile) + : HExpression(field_type, SideEffects::DependsOnSomething()), + field_info_(field_offset, field_type, is_volatile, 0) { + SetRawInputAt(0, cls); + } + + HStaticFieldGet(HInstruction* cls, + Primitive::Type field_type, + MemberOffset field_offset, bool is_volatile, uint32_t field_idx) : HExpression(field_type, SideEffects::DependsOnSomething()), @@ -3632,6 +3661,17 @@ class HStaticFieldSet : public HTemplateInstruction<2> { HInstruction* value, Primitive::Type field_type, MemberOffset field_offset, + bool is_volatile) + : HTemplateInstruction(SideEffects::ChangesSomething()), + field_info_(field_offset, field_type, is_volatile, 0) { + SetRawInputAt(0, cls); + SetRawInputAt(1, value); + } + + HStaticFieldSet(HInstruction* cls, + HInstruction* value, + Primitive::Type field_type, + MemberOffset field_offset, bool is_volatile, uint32_t field_idx) : HTemplateInstruction(SideEffects::ChangesSomething()), |