summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--compiler/dex/compiler_ir.cc25
-rw-r--r--compiler/dex/compiler_ir.h1
-rw-r--r--compiler/optimizing/nodes.h40
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()),