diff options
| -rw-r--r-- | compiler/common_compiler_test.cc | 12 | ||||
| -rw-r--r-- | compiler/common_compiler_test.h | 14 | ||||
| -rw-r--r-- | compiler/driver/compiler_driver.h | 2 | ||||
| -rw-r--r-- | compiler/image_test.cc | 1 | ||||
| -rw-r--r-- | dex2oat/dex2oat.cc | 4 | ||||
| -rw-r--r-- | runtime/java_vm_ext.cc | 5 | ||||
| -rw-r--r-- | test/036-finalizer/src/Main.java | 31 | ||||
| -rw-r--r-- | test/Android.run-test.mk | 5 | ||||
| -rwxr-xr-x | test/run-test | 2 |
9 files changed, 41 insertions, 35 deletions
diff --git a/compiler/common_compiler_test.cc b/compiler/common_compiler_test.cc index 0a1e2e35a6..4b6788429a 100644 --- a/compiler/common_compiler_test.cc +++ b/compiler/common_compiler_test.cc @@ -182,13 +182,11 @@ void CommonCompilerTest::SetUp() { } } - // TODO: make selectable - Compiler::Kind compiler_kind = Compiler::kQuick; timer_.reset(new CumulativeLogger("Compilation times")); compiler_driver_.reset(new CompilerDriver(compiler_options_.get(), verification_results_.get(), method_inliner_map_.get(), - compiler_kind, instruction_set, + compiler_kind_, instruction_set, instruction_set_features_.get(), true, GetImageClasses(), @@ -211,6 +209,14 @@ void CommonCompilerTest::SetUpRuntimeOptions(RuntimeOptions* options) { CompilerCallbacks::CallbackMode::kCompileApp)); } +Compiler::Kind CommonCompilerTest::GetCompilerKind() const { + return compiler_kind_; +} + +void CommonCompilerTest::SetCompilerKind(Compiler::Kind compiler_kind) { + compiler_kind_ = compiler_kind; +} + void CommonCompilerTest::TearDown() { timer_.reset(); compiler_driver_.reset(); diff --git a/compiler/common_compiler_test.h b/compiler/common_compiler_test.h index 769319be40..b828fcf7e1 100644 --- a/compiler/common_compiler_test.h +++ b/compiler/common_compiler_test.h @@ -22,6 +22,7 @@ #include <vector> #include "common_runtime_test.h" +#include "compiler.h" #include "oat_file.h" namespace art { @@ -55,7 +56,10 @@ class CommonCompilerTest : public CommonRuntimeTest { protected: virtual void SetUp(); - virtual void SetUpRuntimeOptions(RuntimeOptions *options); + virtual void SetUpRuntimeOptions(RuntimeOptions* options); + + Compiler::Kind GetCompilerKind() const; + void SetCompilerKind(Compiler::Kind compiler_kind); // Get the set of image classes given to the compiler-driver in SetUp. Note: the compiler // driver assumes ownership of the set, so the test should properly release the set. @@ -88,6 +92,7 @@ class CommonCompilerTest : public CommonRuntimeTest { void UnreserveImageSpace(); + Compiler::Kind compiler_kind_ = kUseOptimizingCompiler ? Compiler::kOptimizing : Compiler::kQuick; std::unique_ptr<CompilerOptions> compiler_options_; std::unique_ptr<VerificationResults> verification_results_; std::unique_ptr<DexFileToMethodInlinerMap> method_inliner_map_; @@ -103,6 +108,13 @@ class CommonCompilerTest : public CommonRuntimeTest { std::list<std::vector<uint8_t>> header_code_and_maps_chunks_; }; +// TODO: When non-PIC works with all compilers in use, get rid of this. +#define TEST_DISABLED_FOR_NON_PIC_COMPILING_WITH_OPTIMIZING() \ + if (GetCompilerKind() == Compiler::kOptimizing) { \ + printf("WARNING: TEST DISABLED FOR NON-PIC COMPILING WITH OPTIMIZING\n"); \ + return; \ + } + } // namespace art #endif // ART_COMPILER_COMMON_COMPILER_TEST_H_ diff --git a/compiler/driver/compiler_driver.h b/compiler/driver/compiler_driver.h index f737007308..2d7ceaeea1 100644 --- a/compiler/driver/compiler_driver.h +++ b/compiler/driver/compiler_driver.h @@ -668,7 +668,7 @@ class CompilerDriver { bool dedupe_enabled_; bool dump_stats_; const bool dump_passes_; - const std::string& dump_cfg_file_name_; + const std::string dump_cfg_file_name_; CumulativeLogger* const timings_logger_; diff --git a/compiler/image_test.cc b/compiler/image_test.cc index 772cc80146..7e31a7a08b 100644 --- a/compiler/image_test.cc +++ b/compiler/image_test.cc @@ -45,6 +45,7 @@ class ImageTest : public CommonCompilerTest { }; TEST_F(ImageTest, WriteRead) { + TEST_DISABLED_FOR_NON_PIC_COMPILING_WITH_OPTIMIZING(); // Create a generic location tmp file, to be the base of the .art and .oat temporary files. ScratchFile location; ScratchFile image_location(location, ".art"); diff --git a/dex2oat/dex2oat.cc b/dex2oat/dex2oat.cc index 7a2374681a..74d5c0c0cd 100644 --- a/dex2oat/dex2oat.cc +++ b/dex2oat/dex2oat.cc @@ -1038,6 +1038,10 @@ class Dex2Oat FINAL { bool OpenFile() { bool create_file = !oat_unstripped_.empty(); // as opposed to using open file descriptor if (create_file) { + // We're supposed to create this file. If the file already exists, it may be in use currently. + // We must not change the content of that file, then. So unlink it first. + unlink(oat_unstripped_.c_str()); + oat_file_.reset(OS::CreateEmptyFile(oat_unstripped_.c_str())); if (oat_location_.empty()) { oat_location_ = oat_filename_; diff --git a/runtime/java_vm_ext.cc b/runtime/java_vm_ext.cc index eb9c32d7ad..f1deacf39a 100644 --- a/runtime/java_vm_ext.cc +++ b/runtime/java_vm_ext.cc @@ -132,6 +132,8 @@ class SharedLibrary { } void* FindSymbol(const std::string& symbol_name) { + CHECK(!NeedsNativeBridge()); + return dlsym(handle_, symbol_name.c_str()); } @@ -234,9 +236,6 @@ class Libraries { fn = library->FindSymbol(jni_long_name); } } - if (fn == nullptr) { - fn = library->FindSymbol(jni_long_name); - } if (fn != nullptr) { VLOG(jni) << "[Found native code for " << PrettyMethod(m) << " in \"" << library->GetPath() << "\"]"; diff --git a/test/036-finalizer/src/Main.java b/test/036-finalizer/src/Main.java index e3cf4eedbc..8c7c27d79c 100644 --- a/test/036-finalizer/src/Main.java +++ b/test/036-finalizer/src/Main.java @@ -34,31 +34,10 @@ public class Main { } public static WeakReference<FinalizerTest> makeRef() { - /* - * Make ft in another thread, so there is no danger of - * a conservative reference leaking onto the main thread's - * stack. - */ - - final List<WeakReference<FinalizerTest>> wimp = - new ArrayList<WeakReference<FinalizerTest>>(); - Thread t = new Thread() { - public void run() { - FinalizerTest ft = new FinalizerTest("wahoo"); - wimp.add(new WeakReference<FinalizerTest>(ft)); - ft = null; - } - }; - - t.start(); - - try { - t.join(); - } catch (InterruptedException ie) { - throw new RuntimeException(ie); - } - - return wimp.get(0); + FinalizerTest ft = new FinalizerTest("wahoo"); + WeakReference<FinalizerTest> ref = new WeakReference<FinalizerTest>(ft); + ft = null; + return ref; } public static String wimpString(final WeakReference<FinalizerTest> wimp) { @@ -91,10 +70,12 @@ public class Main { public static void main(String[] args) { WeakReference<FinalizerTest> wimp = makeRef(); + FinalizerTest keepLive = wimp.get(); System.out.println("wimp: " + wimpString(wimp)); /* this will try to collect and finalize ft */ + keepLive = null; System.out.println("gc"); Runtime.getRuntime().gc(); diff --git a/test/Android.run-test.mk b/test/Android.run-test.mk index 6c2ce6256a..5b5c368ebb 100644 --- a/test/Android.run-test.mk +++ b/test/Android.run-test.mk @@ -233,7 +233,10 @@ endif TEST_ART_BROKEN_NO_RELOCATE_TESTS := # Tests that are broken with GC stress. -TEST_ART_BROKEN_GCSTRESS_RUN_TESTS := +# 137-cfi needs to unwind a second forked process. We're using a primitive sleep to wait till we +# hope the second process got into the expected state. The slowness of gcstress makes this bad. +TEST_ART_BROKEN_GCSTRESS_RUN_TESTS := \ + 137-cfi ifneq (,$(filter gcstress,$(GC_TYPES))) ART_TEST_KNOWN_BROKEN += $(call all-run-test-names,$(TARGET_TYPES),$(RUN_TYPES),$(PREBUILD_TYPES), \ diff --git a/test/run-test b/test/run-test index 995d30f545..ffa25eb5ab 100755 --- a/test/run-test +++ b/test/run-test @@ -308,7 +308,7 @@ if [ "$gc_verify" = "true" ]; then run_args="${run_args} --runtime-option -Xgc:preverify_rosalloc --runtime-option -Xgc:postverify_rosalloc" fi if [ "$gc_stress" = "true" ]; then - run_args="${run_args} --runtime-option -Xgc:SS --runtime-option -Xms2m --runtime-option -Xmx2m" + run_args="${run_args} --runtime-option -Xgc:SS,gcstress --runtime-option -Xms2m --runtime-option -Xmx16m" fi if [ "$trace" = "true" ]; then run_args="${run_args} --runtime-option -Xmethod-trace --runtime-option -Xmethod-trace-file-size:2000000" |