summaryrefslogtreecommitdiffstats
path: root/src/runtime.h
diff options
context:
space:
mode:
authorIan Rogers <irogers@google.com>2012-02-24 11:42:47 -0800
committerIan Rogers <irogers@google.com>2012-02-27 16:08:56 -0800
commit1984651929744dd603fd082e23eacd877b9bc177 (patch)
treeffa10973a88f0f2743f3fbfaf5e7e4235d5f262d /src/runtime.h
parentf3c01c530ab3a645bd5a980522df4d396dcbf228 (diff)
downloadart-1984651929744dd603fd082e23eacd877b9bc177.zip
art-1984651929744dd603fd082e23eacd877b9bc177.tar.gz
art-1984651929744dd603fd082e23eacd877b9bc177.tar.bz2
Invoke static/direct dispatch change.
There was a subtle race in static/direct dispatch via the code and methods table. This patch removes the table in preparation of architectures like x86 which will more aggressively sink loads. Removes unused fields, code.. Brings back resolved methods table short-cut and associated fast paths to use this (such as in Proxy). Adds a resolution method that is used as the trampoline for static and direct methods. Add source file and line number to Throwable::Dump. MethodHelper knowledge of runtime methods. Change-Id: Ieae1b74c24072e6327a5bb2cad466f04e3c46c4d
Diffstat (limited to 'src/runtime.h')
-rw-r--r--src/runtime.h8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/runtime.h b/src/runtime.h
index af44948..fb1cd03 100644
--- a/src/runtime.h
+++ b/src/runtime.h
@@ -193,6 +193,12 @@ class Runtime {
ByteArray* GetResolutionStubArray(TrampolineType type) const;
void SetResolutionStubArray(ByteArray* resolution_stub_array, TrampolineType type);
+ // Returns a special method to trampoline into runtime resolution
+ Method* CreateResolutionMethod();
+ bool HasResolutionMethod() const;
+ Method* GetResolutionMethod() const;
+ void SetResolutionMethod(Method* method);
+
// Returns a special method that describes all callee saves being spilled to the stack.
enum CalleeSaveType {
kSaveAll,
@@ -284,6 +290,8 @@ class Runtime {
Method* callee_save_method_[kLastCalleeSaveType];
+ Method* resolution_method_;
+
// As returned by ClassLoader.getSystemClassLoader()
ClassLoader* system_class_loader_;