Refactoring type verification in Art.
Each type now has its own class instead of one class with enums.
Improved test cases for reg_type. Added test cases for testing precision, Merge,
Dump messages, etc.
Fixed bugs for:
1- Creating precise references in cache was ignoring the passed parameter
for reference types and only creating precise for final classes. Now creating
for final classes or if boolean set to true.
2- Precise constants were created if precise boolean passed as false ( and vice
versa ). Fixed.
Change-Id: Ia5450d6c732f848e6b94298e43e8cfb819897fc6
diff --git a/src/runtime.cc b/src/runtime.cc
index f6fdef4..3e9cd8e 100644
--- a/src/runtime.cc
+++ b/src/runtime.cc
@@ -136,18 +136,16 @@
// Make sure all other non-daemon threads have terminated, and all daemon threads are suspended.
delete thread_list_;
delete monitor_list_;
-
delete class_linker_;
delete heap_;
- verifier::MethodVerifier::Shutdown();
delete intern_table_;
delete java_vm_;
Thread::Shutdown();
QuasiAtomic::Shutdown();
-
// TODO: acquire a static mutex on Runtime to avoid racing.
CHECK(instance_ == NULL || instance_ == this);
instance_ = NULL;
+ verifier::MethodVerifier::Shutdown();
}
struct AbortState {
@@ -810,7 +808,6 @@
thread_list_ = new ThreadList;
intern_table_ = new InternTable;
- verifier::MethodVerifier::Init();
heap_ = new Heap(options->heap_initial_size_,
options->heap_growth_limit_,
@@ -850,6 +847,7 @@
class_linker_ = ClassLinker::CreateFromCompiler(*options->boot_class_path_, intern_table_);
}
CHECK(class_linker_ != NULL);
+ verifier::MethodVerifier::Init();
method_trace_ = options->method_trace_;
method_trace_file_ = options->method_trace_file_;