From 19a19cffd197a28ae4c9c3e59eff6352fd392241 Mon Sep 17 00:00:00 2001 From: Nicolas Geoffray Date: Wed, 22 Oct 2014 16:07:05 +0100 Subject: Add support for static fields in optimizing compiler. Change-Id: Id2f010589e2bd6faf42c05bb33abf6816ebe9fa9 --- compiler/driver/compiler_driver.cc | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'compiler/driver/compiler_driver.cc') diff --git a/compiler/driver/compiler_driver.cc b/compiler/driver/compiler_driver.cc index eb5739f3e4..05785a89fa 100644 --- a/compiler/driver/compiler_driver.cc +++ b/compiler/driver/compiler_driver.cc @@ -1071,7 +1071,8 @@ bool CompilerDriver::ComputeInstanceFieldInfo(uint32_t field_idx, const DexCompi bool CompilerDriver::ComputeStaticFieldInfo(uint32_t field_idx, const DexCompilationUnit* mUnit, bool is_put, MemberOffset* field_offset, uint32_t* storage_index, bool* is_referrers_class, - bool* is_volatile, bool* is_initialized) { + bool* is_volatile, bool* is_initialized, + Primitive::Type* type) { ScopedObjectAccess soa(Thread::Current()); // Try to resolve the field and compiling method's class. mirror::ArtField* resolved_field; @@ -1104,6 +1105,7 @@ bool CompilerDriver::ComputeStaticFieldInfo(uint32_t field_idx, const DexCompila *is_initialized = (*is_referrers_class) || (IsStaticFieldsClassInitialized(referrer_class, resolved_field) && CanAssumeTypeIsPresentInDexCache(*mUnit->GetDexFile(), *storage_index)); + *type = resolved_field->GetTypeAsPrimitiveType(); } else { // Conservative defaults. *is_volatile = true; @@ -1111,6 +1113,7 @@ bool CompilerDriver::ComputeStaticFieldInfo(uint32_t field_idx, const DexCompila *storage_index = -1; *is_referrers_class = false; *is_initialized = false; + *type = Primitive::kPrimVoid; } ProcessedStaticField(result, *is_referrers_class); return result; -- cgit v1.2.3-59-g8ed1b