summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--runtime/oat_file_manager.cc7
-rw-r--r--test/845-data-image/src-art/Main.java3
-rw-r--r--test/846-multidex-data-image/src-art/Main.java3
-rw-r--r--test/common/runtime_state.cc18
4 files changed, 20 insertions, 11 deletions
diff --git a/runtime/oat_file_manager.cc b/runtime/oat_file_manager.cc
index fcfda96503..bd3165146d 100644
--- a/runtime/oat_file_manager.cc
+++ b/runtime/oat_file_manager.cc
@@ -338,13 +338,6 @@ std::vector<std::unique_ptr<const DexFile>> OatFileManager::OpenDexFilesFromOat(
for (const auto& dex_file : dex_files) {
dex::tracking::RegisterDexFile(dex_file.get());
}
-
- if (!compilation_enabled) {
- // Update the filter we are going to report to 'speed-profile'.
- // Ideally, we would also update the compiler filter of the odex
- // file, but at this point it's just too late.
- compilation_filter = CompilerFilter::NameOfFilter(CompilerFilter::kSpeedProfile);
- }
} else {
LOG(INFO) << "Failed to add image file: " << temp_error_msg;
dex_files.clear();
diff --git a/test/845-data-image/src-art/Main.java b/test/845-data-image/src-art/Main.java
index 36cc9d0bca..eb217d8253 100644
--- a/test/845-data-image/src-art/Main.java
+++ b/test/845-data-image/src-art/Main.java
@@ -162,7 +162,7 @@ public class Main implements Itf {
if (args.length == 2 && "--second-run".equals(args[1])) {
DexFile.OptimizationInfo info = VMRuntime.getBaseApkOptimizationInfo();
- if (!info.isOptimized()) {
+ if (!info.isOptimized() && !isInImageSpace(Main.class)) {
throw new Error("Expected image to be loaded");
}
}
@@ -336,6 +336,7 @@ public class Main implements Itf {
private static native boolean hasOatFile();
private static native boolean hasImage();
private static native String getCompilerFilter(Class<?> cls);
+ private static native boolean isInImageSpace(Class<?> cls);
private static final String TEMP_FILE_NAME_PREFIX = "temp";
private static final String TEMP_FILE_NAME_SUFFIX = "-file";
diff --git a/test/846-multidex-data-image/src-art/Main.java b/test/846-multidex-data-image/src-art/Main.java
index aea92a46a7..8e425d1cb3 100644
--- a/test/846-multidex-data-image/src-art/Main.java
+++ b/test/846-multidex-data-image/src-art/Main.java
@@ -48,7 +48,7 @@ public class Main {
if (args.length == 2 && "--second-run".equals(args[1])) {
DexFile.OptimizationInfo info = VMRuntime.getBaseApkOptimizationInfo();
- if (!info.isOptimized()) {
+ if (!info.isOptimized() && !isInImageSpace(Main.class)) {
throw new Error("Expected image to be loaded");
}
}
@@ -77,6 +77,7 @@ public class Main {
private static native boolean hasOatFile();
private static native boolean hasImage();
private static native String getCompilerFilter(Class<?> cls);
+ private static native boolean isInImageSpace(Class<?> cls);
private static final String TEMP_FILE_NAME_PREFIX = "temp";
private static final String TEMP_FILE_NAME_SUFFIX = "-file";
diff --git a/test/common/runtime_state.cc b/test/common/runtime_state.cc
index 517eeaef96..635feffefb 100644
--- a/test/common/runtime_state.cc
+++ b/test/common/runtime_state.cc
@@ -14,8 +14,6 @@
* limitations under the License.
*/
-#include "jni.h"
-
#include <android-base/logging.h>
#include <android-base/macros.h>
#include <sys/resource.h>
@@ -25,10 +23,12 @@
#include "base/enums.h"
#include "common_throws.h"
#include "dex/dex_file-inl.h"
+#include "gc/heap.h"
#include "instrumentation.h"
#include "jit/jit.h"
#include "jit/jit_code_cache.h"
#include "jit/profiling_info.h"
+#include "jni.h"
#include "jni/jni_internal.h"
#include "mirror/class-inl.h"
#include "mirror/class.h"
@@ -469,4 +469,18 @@ extern "C" JNIEXPORT void JNICALL Java_Main_setRlimitNoFile(JNIEnv*, jclass, jin
setrlimit(RLIMIT_NOFILE, &limit);
}
+extern "C" JNIEXPORT jboolean JNICALL Java_Main_isInImageSpace(JNIEnv* env,
+ [[maybe_unused]] jclass caller,
+ jclass cls) {
+ ScopedObjectAccess soa(env);
+
+ ObjPtr<mirror::Class> klass = soa.Decode<mirror::Class>(cls);
+ gc::space::Space* space =
+ Runtime::Current()->GetHeap()->FindSpaceFromObject(klass, /*fail_ok=*/true);
+ if (space == nullptr) {
+ return JNI_FALSE;
+ }
+ return space->IsImageSpace() ? JNI_TRUE : JNI_FALSE;
+}
+
} // namespace art