summaryrefslogtreecommitdiff
path: root/runtime/runtime.h
diff options
context:
space:
mode:
Diffstat (limited to 'runtime/runtime.h')
-rw-r--r--runtime/runtime.h17
1 files changed, 15 insertions, 2 deletions
diff --git a/runtime/runtime.h b/runtime/runtime.h
index 3bf0edabfae..3c0c6a08a51 100644
--- a/runtime/runtime.h
+++ b/runtime/runtime.h
@@ -291,7 +291,12 @@ class Runtime {
// Get the special object used to mark a cleared JNI weak global.
mirror::Object* GetClearedJniWeakGlobal() REQUIRES_SHARED(Locks::mutator_lock_);
- mirror::Throwable* GetPreAllocatedOutOfMemoryError() REQUIRES_SHARED(Locks::mutator_lock_);
+ mirror::Throwable* GetPreAllocatedOutOfMemoryErrorWhenThrowingException()
+ REQUIRES_SHARED(Locks::mutator_lock_);
+ mirror::Throwable* GetPreAllocatedOutOfMemoryErrorWhenThrowingOOME()
+ REQUIRES_SHARED(Locks::mutator_lock_);
+ mirror::Throwable* GetPreAllocatedOutOfMemoryErrorWhenHandlingStackOverflow()
+ REQUIRES_SHARED(Locks::mutator_lock_);
mirror::Throwable* GetPreAllocatedNoClassDefFoundError()
REQUIRES_SHARED(Locks::mutator_lock_);
@@ -772,6 +777,11 @@ class Runtime {
bool Init(RuntimeArgumentMap&& runtime_options)
SHARED_TRYLOCK_FUNCTION(true, Locks::mutator_lock_);
+ void InitPreAllocatedException(Thread* self,
+ GcRoot<mirror::Throwable> Runtime::* exception,
+ const char* exception_class_descriptor,
+ const char* msg)
+ REQUIRES_SHARED(Locks::mutator_lock_);
void InitNativeMethods() REQUIRES(!Locks::mutator_lock_);
void RegisterRuntimeNativeMethods(JNIEnv* env);
@@ -804,7 +814,10 @@ class Runtime {
// 64 bit so that we can share the same asm offsets for both 32 and 64 bits.
uint64_t callee_save_methods_[kCalleeSaveSize];
- GcRoot<mirror::Throwable> pre_allocated_OutOfMemoryError_;
+ // Pre-allocated exceptions (see Runtime::Init).
+ GcRoot<mirror::Throwable> pre_allocated_OutOfMemoryError_when_throwing_exception_;
+ GcRoot<mirror::Throwable> pre_allocated_OutOfMemoryError_when_throwing_oome_;
+ GcRoot<mirror::Throwable> pre_allocated_OutOfMemoryError_when_handling_stack_overflow_;
GcRoot<mirror::Throwable> pre_allocated_NoClassDefFoundError_;
ArtMethod* resolution_method_;
ArtMethod* imt_conflict_method_;