summaryrefslogtreecommitdiffstats
path: root/test/MyClassNatives
diff options
context:
space:
mode:
authorVladimir Kostyukov <vladimir.kostyukov@intel.com>2014-04-02 18:42:20 +0700
committerAndreas Gampe <agampe@google.com>2014-04-07 09:39:16 -0700
commit1dd61ba3081a52c3e2efdc78d64f5c134eea7895 (patch)
tree3d708c62ffacf62d1ecd2019ea7a183411ff5787 /test/MyClassNatives
parent427ca38b0a6c6fd7dc0dbb380619e2b91b56cf1c (diff)
downloadart-1dd61ba3081a52c3e2efdc78d64f5c134eea7895.tar.gz
art-1dd61ba3081a52c3e2efdc78d64f5c134eea7895.tar.bz2
art-1dd61ba3081a52c3e2efdc78d64f5c134eea7895.zip
ART: A workaround for a wrongly-read caller's frame
The quick-trampoline treats caller's frame in a different way then it was formed by quck-invoke stub for hard float ABI targets such as x86_64 and aarch64. The patch workarounds the issue of wrongly-read stack arguments due to no contract between quick-invoke stub and quick-trampoline/shadow-frame-builder regarding the reg- spill area. Change-Id: I302f212b4ea5e38632527a5ace03f136b21ef806 Signed-off-by: Vladimir Kostyukov <vladimir.kostyukov@intel.com>
Diffstat (limited to 'test/MyClassNatives')
-rw-r--r--test/MyClassNatives/MyClassNatives.java12
1 files changed, 12 insertions, 0 deletions
diff --git a/test/MyClassNatives/MyClassNatives.java b/test/MyClassNatives/MyClassNatives.java
index 09f1783780..b5e0204ab8 100644
--- a/test/MyClassNatives/MyClassNatives.java
+++ b/test/MyClassNatives/MyClassNatives.java
@@ -80,4 +80,16 @@ class MyClassNatives {
Object o248, Object o249, Object o250, Object o251, Object o252, Object o253);
native void withoutImplementation();
+
+ native static void stackArgsIntsFirst(int i1, int i2, int i3, int i4, int i5, int i6, int i7,
+ int i8, int i9, int i10, float f1, float f2, float f3, float f4, float f5, float f6,
+ float f7, float f8, float f9, float f10);
+
+ native static void stackArgsFloatsFirst(float f1, float f2, float f3, float f4, float f5,
+ float f6, float f7, float f8, float f9, float f10, int i1, int i2, int i3, int i4, int i5,
+ int i6, int i7, int i8, int i9, int i10);
+
+ native static void stackArgsMixed(int i1, float f1, int i2, float f2, int i3, float f3, int i4,
+ float f4, int i5, float f5, int i6, float f6, int i7, float f7, int i8, float f8, int i9,
+ float f9, int i10, float f10);
}