summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/1919-vminit-thread-start-timing/vminit.cc4
-rw-r--r--test/1940-ddms-ext/ddm_ext.cc207
-rw-r--r--test/1940-ddms-ext/expected.txt7
-rw-r--r--test/1940-ddms-ext/info.txt1
-rwxr-xr-xtest/1940-ddms-ext/run17
-rw-r--r--test/1940-ddms-ext/src-art/art/Test1940.java101
-rw-r--r--test/1940-ddms-ext/src/Main.java21
-rw-r--r--test/1940-ddms-ext/src/art/Test1940.java23
-rw-r--r--test/530-checker-lse/src/Main.java54
-rw-r--r--test/626-checker-arm64-scratch-register/smali/Smali.smali2119
-rw-r--r--test/626-checker-arm64-scratch-register/src/Main.java61
-rw-r--r--test/901-hello-ti-agent/basics.cc2
-rw-r--r--test/904-object-allocation/tracking.cc2
-rw-r--r--test/912-classes/classes.cc4
-rw-r--r--test/912-classes/classes_art.cc2
-rw-r--r--test/924-threads/threads.cc2
-rw-r--r--test/Android.bp6
-rw-r--r--test/Android.run-test.mk2
-rwxr-xr-xtest/etc/default-build2
19 files changed, 485 insertions, 2152 deletions
diff --git a/test/1919-vminit-thread-start-timing/vminit.cc b/test/1919-vminit-thread-start-timing/vminit.cc
index c492e8bb62..109c61f05c 100644
--- a/test/1919-vminit-thread-start-timing/vminit.cc
+++ b/test/1919-vminit-thread-start-timing/vminit.cc
@@ -16,8 +16,8 @@
#include "1919-vminit-thread-start-timing/vminit.h"
-#include <mutex> // NOLINT [build/c++11] [5]
-#include <thread> // NOLINT [build/c++11] [5]
+#include <mutex>
+#include <thread>
#include <vector>
#include <jni.h>
diff --git a/test/1940-ddms-ext/ddm_ext.cc b/test/1940-ddms-ext/ddm_ext.cc
new file mode 100644
index 0000000000..cc29df9a49
--- /dev/null
+++ b/test/1940-ddms-ext/ddm_ext.cc
@@ -0,0 +1,207 @@
+/*
+ * Copyright (C) 2013 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "jvmti.h"
+
+// Test infrastructure
+#include "jvmti_helper.h"
+#include "nativehelper/scoped_local_ref.h"
+#include "nativehelper/scoped_primitive_array.h"
+#include "test_env.h"
+
+namespace art {
+namespace Test1940DdmExt {
+
+typedef jvmtiError (*DdmHandleChunk)(jvmtiEnv* env,
+ jint type_in,
+ jint len_in,
+ const jbyte* data_in,
+ jint* type_out,
+ jint* len_data_out,
+ jbyte** data_out);
+
+struct DdmsTrackingData {
+ DdmHandleChunk send_ddm_chunk;
+ jclass test_klass;
+ jmethodID publish_method;
+};
+
+template <typename T>
+static void Dealloc(T* t) {
+ jvmti_env->Deallocate(reinterpret_cast<unsigned char*>(t));
+}
+
+template <typename T, typename ...Rest>
+static void Dealloc(T* t, Rest... rs) {
+ Dealloc(t);
+ Dealloc(rs...);
+}
+
+extern "C" JNIEXPORT jobject JNICALL Java_art_Test1940_processChunk(JNIEnv* env,
+ jclass,
+ jobject chunk) {
+ DdmsTrackingData* data = nullptr;
+ if (JvmtiErrorToException(
+ env, jvmti_env, jvmti_env->GetEnvironmentLocalStorage(reinterpret_cast<void**>(&data)))) {
+ return nullptr;
+ }
+ CHECK(chunk != nullptr);
+ CHECK(data != nullptr);
+ CHECK(data->send_ddm_chunk != nullptr);
+ ScopedLocalRef<jclass> chunk_class(env, env->FindClass("org/apache/harmony/dalvik/ddmc/Chunk"));
+ if (env->ExceptionCheck()) {
+ return nullptr;
+ }
+ jfieldID type_field_id = env->GetFieldID(chunk_class.get(), "type", "I");
+ jfieldID offset_field_id = env->GetFieldID(chunk_class.get(), "offset", "I");
+ jfieldID length_field_id = env->GetFieldID(chunk_class.get(), "length", "I");
+ jfieldID data_field_id = env->GetFieldID(chunk_class.get(), "data", "[B");
+ jint type = env->GetIntField(chunk, type_field_id);
+ jint off = env->GetIntField(chunk, offset_field_id);
+ jint len = env->GetIntField(chunk, length_field_id);
+ ScopedLocalRef<jbyteArray> chunk_buf(
+ env, reinterpret_cast<jbyteArray>(env->GetObjectField(chunk, data_field_id)));
+ if (env->ExceptionCheck()) {
+ return nullptr;
+ }
+ ScopedByteArrayRO byte_data(env, chunk_buf.get());
+ jint out_type;
+ jint out_size;
+ jbyte* out_data;
+ if (JvmtiErrorToException(env, jvmti_env, data->send_ddm_chunk(jvmti_env,
+ type,
+ len,
+ &byte_data[off],
+ /*out*/&out_type,
+ /*out*/&out_size,
+ /*out*/&out_data))) {
+ return nullptr;
+ } else {
+ ScopedLocalRef<jbyteArray> chunk_data(env, env->NewByteArray(out_size));
+ env->SetByteArrayRegion(chunk_data.get(), 0, out_size, out_data);
+ Dealloc(out_data);
+ ScopedLocalRef<jobject> res(env, env->NewObject(chunk_class.get(),
+ env->GetMethodID(chunk_class.get(),
+ "<init>",
+ "(I[BII)V"),
+ out_type,
+ chunk_data.get(),
+ 0,
+ out_size));
+ return res.release();
+ }
+}
+
+static void DeallocParams(jvmtiParamInfo* params, jint n_params) {
+ for (jint i = 0; i < n_params; i++) {
+ Dealloc(params[i].name);
+ }
+}
+
+static void JNICALL PublishCB(jvmtiEnv* jvmti, JNIEnv* jnienv, jint type, jint size, jbyte* bytes) {
+ DdmsTrackingData* data = nullptr;
+ if (JvmtiErrorToException(jnienv, jvmti,
+ jvmti->GetEnvironmentLocalStorage(reinterpret_cast<void**>(&data)))) {
+ return;
+ }
+ ScopedLocalRef<jbyteArray> res(jnienv, jnienv->NewByteArray(size));
+ jnienv->SetByteArrayRegion(res.get(), 0, size, bytes);
+ jnienv->CallStaticVoidMethod(data->test_klass, data->publish_method, type, res.get());
+}
+
+extern "C" JNIEXPORT void JNICALL Java_art_Test1940_initializeTest(JNIEnv* env,
+ jclass,
+ jclass method_klass,
+ jobject publish_method) {
+ void* old_data = nullptr;
+ if (JvmtiErrorToException(env, jvmti_env, jvmti_env->GetEnvironmentLocalStorage(&old_data))) {
+ return;
+ } else if (old_data != nullptr) {
+ ScopedLocalRef<jclass> rt_exception(env, env->FindClass("java/lang/RuntimeException"));
+ env->ThrowNew(rt_exception.get(), "Environment already has local storage set!");
+ return;
+ }
+ DdmsTrackingData* data = nullptr;
+ if (JvmtiErrorToException(env,
+ jvmti_env,
+ jvmti_env->Allocate(sizeof(DdmsTrackingData),
+ reinterpret_cast<unsigned char**>(&data)))) {
+ return;
+ }
+ memset(data, 0, sizeof(DdmsTrackingData));
+ data->test_klass = reinterpret_cast<jclass>(env->NewGlobalRef(method_klass));
+ data->publish_method = env->FromReflectedMethod(publish_method);
+ if (env->ExceptionCheck()) {
+ return;
+ }
+ // Get the extensions.
+ jint n_ext = 0;
+ jvmtiExtensionFunctionInfo* infos = nullptr;
+ if (JvmtiErrorToException(env, jvmti_env, jvmti_env->GetExtensionFunctions(&n_ext, &infos))) {
+ return;
+ }
+ for (jint i = 0; i < n_ext; i++) {
+ jvmtiExtensionFunctionInfo* cur_info = &infos[i];
+ if (strcmp("com.android.art.internal.ddm.process_chunk", cur_info->id) == 0) {
+ data->send_ddm_chunk = reinterpret_cast<DdmHandleChunk>(cur_info->func);
+ }
+ // Cleanup the cur_info
+ DeallocParams(cur_info->params, cur_info->param_count);
+ Dealloc(cur_info->id, cur_info->short_description, cur_info->params, cur_info->errors);
+ }
+ // Cleanup the array.
+ Dealloc(infos);
+ if (data->send_ddm_chunk == nullptr) {
+ ScopedLocalRef<jclass> rt_exception(env, env->FindClass("java/lang/RuntimeException"));
+ env->ThrowNew(rt_exception.get(), "Unable to find memory tracking extensions.");
+ return;
+ }
+ if (JvmtiErrorToException(env, jvmti_env, jvmti_env->SetEnvironmentLocalStorage(data))) {
+ return;
+ }
+
+ jint event_index = -1;
+ bool found_event = false;
+ jvmtiExtensionEventInfo* events = nullptr;
+ if (JvmtiErrorToException(env, jvmti_env, jvmti_env->GetExtensionEvents(&n_ext, &events))) {
+ return;
+ }
+ for (jint i = 0; i < n_ext; i++) {
+ jvmtiExtensionEventInfo* cur_info = &events[i];
+ if (strcmp("com.android.art.internal.ddm.publish_chunk", cur_info->id) == 0) {
+ found_event = true;
+ event_index = cur_info->extension_event_index;
+ }
+ // Cleanup the cur_info
+ DeallocParams(cur_info->params, cur_info->param_count);
+ Dealloc(cur_info->id, cur_info->short_description, cur_info->params);
+ }
+ // Cleanup the array.
+ Dealloc(events);
+ if (!found_event) {
+ ScopedLocalRef<jclass> rt_exception(env, env->FindClass("java/lang/RuntimeException"));
+ env->ThrowNew(rt_exception.get(), "Unable to find ddms extension event.");
+ return;
+ }
+ JvmtiErrorToException(env,
+ jvmti_env,
+ jvmti_env->SetExtensionEventCallback(
+ event_index, reinterpret_cast<jvmtiExtensionEvent>(PublishCB)));
+ return;
+}
+
+} // namespace Test1940DdmExt
+} // namespace art
diff --git a/test/1940-ddms-ext/expected.txt b/test/1940-ddms-ext/expected.txt
new file mode 100644
index 0000000000..cf4ad50e90
--- /dev/null
+++ b/test/1940-ddms-ext/expected.txt
@@ -0,0 +1,7 @@
+Sending data [1, 2, 3, 4, 5, 6, 7, 8]
+MyDdmHandler: Chunk received: Chunk(Type: 0xDEADBEEF, Len: 8, data: [1, 2, 3, 4, 5, 6, 7, 8])
+MyDdmHandler: Putting value 0x800025
+MyDdmHandler: Chunk returned: Chunk(Type: 0xFADE7357, Len: 8, data: [0, 0, 0, 0, 0, -128, 0, 37])
+JVMTI returned chunk: Chunk(Type: 0xFADE7357, Len: 8, data: [0, 0, 0, 0, 0, -128, 0, 37])
+Sending chunk: Chunk(Type: 0xDEADBEEF, Len: 8, data: [9, 10, 11, 12, 13, 14, 15, 16])
+Chunk published: Chunk(Type: 0xDEADBEEF, Len: 8, data: [9, 10, 11, 12, 13, 14, 15, 16])
diff --git a/test/1940-ddms-ext/info.txt b/test/1940-ddms-ext/info.txt
new file mode 100644
index 0000000000..e1d35ae026
--- /dev/null
+++ b/test/1940-ddms-ext/info.txt
@@ -0,0 +1 @@
+Tests the jvmti-extension to get allocated memory snapshot.
diff --git a/test/1940-ddms-ext/run b/test/1940-ddms-ext/run
new file mode 100755
index 0000000000..c6e62ae6cd
--- /dev/null
+++ b/test/1940-ddms-ext/run
@@ -0,0 +1,17 @@
+#!/bin/bash
+#
+# Copyright 2016 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+./default-run "$@" --jvmti
diff --git a/test/1940-ddms-ext/src-art/art/Test1940.java b/test/1940-ddms-ext/src-art/art/Test1940.java
new file mode 100644
index 0000000000..f0ee7102a9
--- /dev/null
+++ b/test/1940-ddms-ext/src-art/art/Test1940.java
@@ -0,0 +1,101 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package art;
+
+import org.apache.harmony.dalvik.ddmc.*;
+
+import java.lang.reflect.Method;
+import java.util.Arrays;
+import java.util.zip.Adler32;
+import java.nio.*;
+
+public class Test1940 {
+ public static final int DDMS_TYPE_INDEX = 0;
+ public static final int DDMS_LEN_INDEX = 4;
+ public static final int DDMS_HEADER_LENGTH = 8;
+ public static final int MY_DDMS_TYPE = 0xDEADBEEF;
+ public static final int MY_DDMS_RESPONSE_TYPE = 0xFADE7357;
+
+ public static final class TestError extends Error {
+ public TestError(String s) { super(s); }
+ }
+
+ private static void checkEq(Object a, Object b) {
+ if (!a.equals(b)) {
+ throw new TestError("Failure: " + a + " != " + b);
+ }
+ }
+
+ private static String printChunk(Chunk k) {
+ byte[] out = new byte[k.length];
+ System.arraycopy(k.data, k.offset, out, 0, k.length);
+ return String.format("Chunk(Type: 0x%X, Len: %d, data: %s)",
+ k.type, k.length, Arrays.toString(out));
+ }
+
+ private static final class MyDdmHandler extends ChunkHandler {
+ public void connected() {}
+ public void disconnected() {}
+ public Chunk handleChunk(Chunk req) {
+ // For this test we will simply calculate the checksum
+ checkEq(req.type, MY_DDMS_TYPE);
+ System.out.println("MyDdmHandler: Chunk received: " + printChunk(req));
+ ByteBuffer b = ByteBuffer.wrap(new byte[8]);
+ Adler32 a = new Adler32();
+ a.update(req.data, req.offset, req.length);
+ b.order(ByteOrder.BIG_ENDIAN);
+ long val = a.getValue();
+ b.putLong(val);
+ System.out.printf("MyDdmHandler: Putting value 0x%X\n", val);
+ Chunk ret = new Chunk(MY_DDMS_RESPONSE_TYPE, b.array(), 0, 8);
+ System.out.println("MyDdmHandler: Chunk returned: " + printChunk(ret));
+ return ret;
+ }
+ }
+
+ public static final ChunkHandler SINGLE_HANDLER = new MyDdmHandler();
+
+ public static void HandlePublish(int type, byte[] data) {
+ System.out.println("Chunk published: " + printChunk(new Chunk(type, data, 0, data.length)));
+ }
+
+ public static void run() throws Exception {
+ initializeTest(
+ Test1940.class,
+ Test1940.class.getDeclaredMethod("HandlePublish", Integer.TYPE, new byte[0].getClass()));
+ // Test sending chunk directly.
+ DdmServer.registerHandler(MY_DDMS_TYPE, SINGLE_HANDLER);
+ DdmServer.registrationComplete();
+ byte[] data = new byte[] { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08 };
+ System.out.println("Sending data " + Arrays.toString(data));
+ Chunk res = processChunk(data);
+ System.out.println("JVMTI returned chunk: " + printChunk(res));
+
+ // Test sending chunk through DdmServer#sendChunk
+ Chunk c = new Chunk(
+ MY_DDMS_TYPE, new byte[] { 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10 }, 0, 8);
+ System.out.println("Sending chunk: " + printChunk(c));
+ DdmServer.sendChunk(c);
+ }
+
+ private static Chunk processChunk(byte[] val) {
+ return processChunk(new Chunk(MY_DDMS_TYPE, val, 0, val.length));
+ }
+
+ private static native void initializeTest(Class<?> k, Method m);
+ private static native Chunk processChunk(Chunk val);
+}
diff --git a/test/1940-ddms-ext/src/Main.java b/test/1940-ddms-ext/src/Main.java
new file mode 100644
index 0000000000..1fd4cd3e41
--- /dev/null
+++ b/test/1940-ddms-ext/src/Main.java
@@ -0,0 +1,21 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+public class Main {
+ public static void main(String[] args) throws Exception {
+ art.Test1940.run();
+ }
+}
diff --git a/test/1940-ddms-ext/src/art/Test1940.java b/test/1940-ddms-ext/src/art/Test1940.java
new file mode 100644
index 0000000000..c8dc19ca7f
--- /dev/null
+++ b/test/1940-ddms-ext/src/art/Test1940.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package art;
+
+public class Test1940 {
+ public static void run() throws Exception {
+ throw new RuntimeException("Should not be called. Should use src-art/art/Test1940.java");
+ }
+}
diff --git a/test/530-checker-lse/src/Main.java b/test/530-checker-lse/src/Main.java
index ca8108f058..c4cc3b0121 100644
--- a/test/530-checker-lse/src/Main.java
+++ b/test/530-checker-lse/src/Main.java
@@ -949,6 +949,56 @@ public class Main {
return array[1] + array[i];
}
+ /// CHECK-START: int Main.testExitMerge(boolean) load_store_elimination (before)
+ /// CHECK: NewInstance
+ /// CHECK: InstanceFieldSet
+ /// CHECK: InstanceFieldGet
+ /// CHECK: Return
+ /// CHECK: InstanceFieldSet
+ /// CHECK: Throw
+
+ /// CHECK-START: int Main.testExitMerge(boolean) load_store_elimination (after)
+ /// CHECK-NOT: NewInstance
+ /// CHECK-NOT: InstanceFieldSet
+ /// CHECK-NOT: InstanceFieldGet
+ /// CHECK: Return
+ /// CHECK-NOT: InstanceFieldSet
+ /// CHECK: Throw
+ private static int testExitMerge(boolean cond) {
+ TestClass obj = new TestClass();
+ if (cond) {
+ obj.i = 1;
+ return obj.i + 1;
+ } else {
+ obj.i = 2;
+ throw new Error();
+ }
+ }
+
+ /// CHECK-START: int Main.testExitMerge2(boolean) load_store_elimination (before)
+ /// CHECK: NewInstance
+ /// CHECK: InstanceFieldSet
+ /// CHECK: InstanceFieldGet
+ /// CHECK: InstanceFieldSet
+ /// CHECK: InstanceFieldGet
+
+ /// CHECK-START: int Main.testExitMerge2(boolean) load_store_elimination (after)
+ /// CHECK-NOT: NewInstance
+ /// CHECK-NOT: InstanceFieldSet
+ /// CHECK-NOT: InstanceFieldGet
+ private static int testExitMerge2(boolean cond) {
+ TestClass obj = new TestClass();
+ int res;
+ if (cond) {
+ obj.i = 1;
+ res = obj.i + 1;
+ } else {
+ obj.i = 2;
+ res = obj.j + 2;
+ }
+ return res;
+ }
+
static void assertIntEquals(int result, int expected) {
if (expected != result) {
throw new Error("Expected: " + expected + ", found: " + result);
@@ -1039,6 +1089,10 @@ public class Main {
assertIntEquals(testStoreStore().j, 43);
assertIntEquals(testStoreStoreWithDeoptimize(new int[4]), 4);
+ assertIntEquals(testExitMerge(true), 2);
+ assertIntEquals(testExitMerge2(true), 2);
+ assertIntEquals(testExitMerge2(false), 2);
+
int ret = testNoSideEffects(iarray);
assertIntEquals(iarray[0], 101);
assertIntEquals(iarray[1], 102);
diff --git a/test/626-checker-arm64-scratch-register/smali/Smali.smali b/test/626-checker-arm64-scratch-register/smali/Smali.smali
deleted file mode 100644
index e6943cf717..0000000000
--- a/test/626-checker-arm64-scratch-register/smali/Smali.smali
+++ /dev/null
@@ -1,2119 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-.class public LSmali;
-.super Ljava/lang/Object;
-.field b00:Z
-.field b01:Z
-.field b02:Z
-.field b03:Z
-.field b04:Z
-.field b05:Z
-.field b06:Z
-.field b07:Z
-.field b08:Z
-.field b09:Z
-.field b10:Z
-.field b11:Z
-.field b12:Z
-.field b13:Z
-.field b14:Z
-.field b15:Z
-.field b16:Z
-.field b17:Z
-.field b18:Z
-.field b19:Z
-.field b20:Z
-.field b21:Z
-.field b22:Z
-.field b23:Z
-.field b24:Z
-.field b25:Z
-.field b26:Z
-.field b27:Z
-.field b28:Z
-.field b29:Z
-.field b30:Z
-.field b31:Z
-.field b32:Z
-.field b33:Z
-.field b34:Z
-.field b35:Z
-.field b36:Z
-
-.field conditionA:Z
-.field conditionB:Z
-.field conditionC:Z
-
-.method public constructor <init>()V
- .registers 1
- invoke-direct {p0}, Ljava/lang/Object;-><init>()V
- return-void
-.end method
-
-## CHECK-START-ARM64: void Smali.test() register (after)
-## CHECK: begin_block
-## CHECK: name "B0"
-## CHECK: <<This:l\d+>> ParameterValue
-## CHECK: end_block
-## CHECK: begin_block
-## CHECK: successors "<<ThenBlock:B\d+>>" "<<ElseBlock:B\d+>>"
-## CHECK: <<CondB:z\d+>> InstanceFieldGet [<<This>>] field_name:Smali.conditionB
-## CHECK: If [<<CondB>>]
-## CHECK: end_block
-## CHECK: begin_block
-## CHECK: name "<<ElseBlock>>"
-## CHECK: ParallelMove moves:[40(sp)->d0,24(sp)->32(sp),28(sp)->36(sp),d0->d3,d3->d4,d2->d5,d4->d6,d5->d7,d6->d18,d7->d19,d18->d20,d19->d21,d20->d22,d21->d23,d22->d10,d23->d11,16(sp)->24(sp),20(sp)->28(sp),d10->d14,d11->d12,d12->d13,d13->d1,d14->d2,32(sp)->16(sp),36(sp)->20(sp)]
-## CHECK: end_block
-
-## CHECK-START-ARM64: void Smali.test() disassembly (after)
-## CHECK: begin_block
-## CHECK: name "B0"
-## CHECK: <<This:l\d+>> ParameterValue
-## CHECK: end_block
-## CHECK: begin_block
-## CHECK: successors "<<ThenBlock:B\d+>>" "<<ElseBlock:B\d+>>"
-## CHECK: <<CondB:z\d+>> InstanceFieldGet [<<This>>] field_name:Smali.conditionB
-## CHECK: If [<<CondB>>]
-## CHECK: end_block
-## CHECK: begin_block
-## CHECK: name "<<ElseBlock>>"
-## CHECK: ParallelMove moves:[invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid]
-## CHECK: fmov d31, d2
-## CHECK: ldr s2, [sp, #36]
-## CHECK: ldr w16, [sp, #16]
-## CHECK: str w16, [sp, #36]
-## CHECK: str s14, [sp, #16]
-## CHECK: ldr s14, [sp, #28]
-## CHECK: str s1, [sp, #28]
-## CHECK: ldr s1, [sp, #32]
-## CHECK: str s31, [sp, #32]
-## CHECK: ldr s31, [sp, #20]
-## CHECK: str s31, [sp, #40]
-## CHECK: str s12, [sp, #20]
-## CHECK: fmov d12, d11
-## CHECK: fmov d11, d10
-## CHECK: fmov d10, d23
-## CHECK: fmov d23, d22
-## CHECK: fmov d22, d21
-## CHECK: fmov d21, d20
-## CHECK: fmov d20, d19
-## CHECK: fmov d19, d18
-## CHECK: fmov d18, d7
-## CHECK: fmov d7, d6
-## CHECK: fmov d6, d5
-## CHECK: fmov d5, d4
-## CHECK: fmov d4, d3
-## CHECK: fmov d3, d13
-## CHECK: ldr s13, [sp, #24]
-## CHECK: str s3, [sp, #24]
-## CHECK: ldr s3, pc+{{\d+}} (addr {{0x[0-9a-f]+}}) (100)
-## CHECK: end_block
-.method public test()V
- .registers 45
-
- const-string v39, ""
-
- move-object/from16 v0, p0
-
- iget-boolean v0, v0, LSmali;->b17:Z
-
- move/from16 v42, v0
-
- if-eqz v42, :cond_367
-
- const/16 v19, 0x0
-
- :goto_c
- move-object/from16 v0, p0
-
- iget-boolean v0, v0, LSmali;->b16:Z
-
- move/from16 v42, v0
-
- if-eqz v42, :cond_36b
-
- const/16 v18, 0x0
-
- :goto_16
- move-object/from16 v0, p0
-
- iget-boolean v0, v0, LSmali;->b18:Z
-
- move/from16 v42, v0
-
- if-eqz v42, :cond_36f
-
- const/16 v20, 0x0
-
- :goto_20
- move-object/from16 v0, p0
-
- iget-boolean v0, v0, LSmali;->b19:Z
-
- move/from16 v42, v0
-
- if-eqz v42, :cond_373
-
- const/16 v21, 0x0
-
- :goto_2a
- move-object/from16 v0, p0
-
- iget-boolean v0, v0, LSmali;->b20:Z
-
- move/from16 v42, v0
-
- if-eqz v42, :cond_377
-
- const/16 v22, 0x0
-
- :goto_34
- move-object/from16 v0, p0
-
- iget-boolean v0, v0, LSmali;->b21:Z
-
- move/from16 v42, v0
-
- if-eqz v42, :cond_37b
-
- const/16 v23, 0x0
-
- :goto_3e
- move-object/from16 v0, p0
-
- iget-boolean v0, v0, LSmali;->b15:Z
-
- move/from16 v42, v0
-
- if-eqz v42, :cond_37f
-
- const/16 v17, 0x0
-
- :goto_48
- move-object/from16 v0, p0
-
- iget-boolean v0, v0, LSmali;->b00:Z
-
- move/from16 v42, v0
-
- if-eqz v42, :cond_383
-
- const/4 v2, 0x0
-
- :goto_51
- move-object/from16 v0, p0
-
- iget-boolean v0, v0, LSmali;->b22:Z
-
- move/from16 v42, v0
-
- if-eqz v42, :cond_387
-
- const/16 v24, 0x0
-
- :goto_5b
- move-object/from16 v0, p0
-
- iget-boolean v0, v0, LSmali;->b23:Z
-
- move/from16 v42, v0
-
- if-eqz v42, :cond_38b
-
- const/16 v25, 0x0
-
- :goto_65
- move-object/from16 v0, p0
-
- iget-boolean v0, v0, LSmali;->b24:Z
-
- move/from16 v42, v0
-
- if-eqz v42, :cond_38f
-
- const/16 v26, 0x0
-
- :goto_6f
- move-object/from16 v0, p0
-
- iget-boolean v0, v0, LSmali;->b25:Z
-
- move/from16 v42, v0
-
- if-eqz v42, :cond_393
-
- const/16 v27, 0x0
-
- :goto_79
- move-object/from16 v0, p0
-
- iget-boolean v0, v0, LSmali;->b26:Z
-
- move/from16 v42, v0
-
- if-eqz v42, :cond_397
-
- const/16 v28, 0x0
-
- :goto_83
- move-object/from16 v0, p0
-
- iget-boolean v0, v0, LSmali;->b27:Z
-
- move/from16 v42, v0
-
- if-eqz v42, :cond_39b
-
- const/16 v29, 0x0
-
- :goto_8d
- move-object/from16 v0, p0
-
- iget-boolean v0, v0, LSmali;->b29:Z
-
- move/from16 v42, v0
-
- if-eqz v42, :cond_39f
-
- const/16 v31, 0x0
-
- :goto_97
- move-object/from16 v0, p0
-
- iget-boolean v0, v0, LSmali;->b28:Z
-
- move/from16 v42, v0
-
- if-eqz v42, :cond_3a3
-
- const/16 v30, 0x0
-
- :goto_a1
- move-object/from16 v0, p0
-
- iget-boolean v0, v0, LSmali;->b01:Z
-
- move/from16 v42, v0
-
- if-eqz v42, :cond_3a7
-
- const/4 v3, 0x0
-
- :goto_aa
- move-object/from16 v0, p0
-
- iget-boolean v0, v0, LSmali;->b02:Z
-
- move/from16 v42, v0
-
- if-eqz v42, :cond_3ab
-
- const/4 v4, 0x0
-
- :goto_b3
- move-object/from16 v0, p0
-
- iget-boolean v0, v0, LSmali;->b03:Z
-
- move/from16 v42, v0
-
- if-eqz v42, :cond_3af
-
- const/4 v5, 0x0
-
- :goto_bc
- move-object/from16 v0, p0
-
- iget-boolean v0, v0, LSmali;->b04:Z
-
- move/from16 v42, v0
-
- if-eqz v42, :cond_3b3
-
- const/4 v6, 0x0
-
- :goto_c5
- move-object/from16 v0, p0
-
- iget-boolean v0, v0, LSmali;->b05:Z
-
- move/from16 v42, v0
-
- if-eqz v42, :cond_3b7
-
- const/4 v7, 0x0
-
- :goto_ce
- move-object/from16 v0, p0
-
- iget-boolean v0, v0, LSmali;->b07:Z
-
- move/from16 v42, v0
-
- if-eqz v42, :cond_3bb
-
- const/4 v9, 0x0
-
- :goto_d7
- move-object/from16 v0, p0
-
- iget-boolean v0, v0, LSmali;->b06:Z
-
- move/from16 v42, v0
-
- if-eqz v42, :cond_3bf
-
- const/4 v8, 0x0
-
- :goto_e0
- move-object/from16 v0, p0
-
- iget-boolean v0, v0, LSmali;->b30:Z
-
- move/from16 v42, v0
-
- if-eqz v42, :cond_3c3
-
- const/16 v32, 0x0
-
- :goto_ea
- move-object/from16 v0, p0
-
- iget-boolean v0, v0, LSmali;->b31:Z
-
- move/from16 v42, v0
-
- if-eqz v42, :cond_3c7
-
- const/16 v33, 0x0
-
- :goto_f4
- move-object/from16 v0, p0
-
- iget-boolean v0, v0, LSmali;->b32:Z
-
- move/from16 v42, v0
-
- if-eqz v42, :cond_3cb
-
- const/16 v34, 0x0
-
- :goto_fe
- move-object/from16 v0, p0
-
- iget-boolean v0, v0, LSmali;->b33:Z
-
- move/from16 v42, v0
-
- if-eqz v42, :cond_3cf
-
- const/16 v35, 0x0
-
- :goto_108
- move-object/from16 v0, p0
-
- iget-boolean v0, v0, LSmali;->b34:Z
-
- move/from16 v42, v0
-
- if-eqz v42, :cond_3d3
-
- const/16 v36, 0x0
-
- :goto_112
- move-object/from16 v0, p0
-
- iget-boolean v0, v0, LSmali;->b36:Z
-
- move/from16 v42, v0
-
- if-eqz v42, :cond_3d7
-
- const/16 v38, 0x0
-
- :goto_11c
- move-object/from16 v0, p0
-
- iget-boolean v0, v0, LSmali;->b35:Z
-
- move/from16 v42, v0
-
- if-eqz v42, :cond_3db
-
- const/16 v37, 0x0
-
- :goto_126
- move-object/from16 v0, p0
-
- iget-boolean v0, v0, LSmali;->b08:Z
-
- move/from16 v42, v0
-
- if-eqz v42, :cond_3df
-
- const/4 v10, 0x0
-
- :goto_12f
- move-object/from16 v0, p0
-
- iget-boolean v0, v0, LSmali;->b09:Z
-
- move/from16 v42, v0
-
- if-eqz v42, :cond_3e3
-
- const/4 v11, 0x0
-
- :goto_138
- move-object/from16 v0, p0
-
- iget-boolean v0, v0, LSmali;->b10:Z
-
- move/from16 v42, v0
-
- if-eqz v42, :cond_3e7
-
- const/4 v12, 0x0
-
- :goto_141
- move-object/from16 v0, p0
-
- iget-boolean v0, v0, LSmali;->b11:Z
-
- move/from16 v42, v0
-
- if-eqz v42, :cond_3eb
-
- const/4 v13, 0x0
-
- :goto_14a
- move-object/from16 v0, p0
-
- iget-boolean v0, v0, LSmali;->b12:Z
-
- move/from16 v42, v0
-
- if-eqz v42, :cond_3ef
-
- const/4 v14, 0x0
-
- :goto_153
- move-object/from16 v0, p0
-
- iget-boolean v0, v0, LSmali;->b14:Z
-
- move/from16 v42, v0
-
- if-eqz v42, :cond_3f3
-
- const/16 v16, 0x0
-
- :goto_15d
- move-object/from16 v0, p0
-
- iget-boolean v0, v0, LSmali;->b13:Z
-
- move/from16 v42, v0
-
- if-eqz v42, :cond_3f7
-
- const/4 v15, 0x0
-
- :goto_166
- move-object/from16 v0, p0
-
- iget-boolean v0, v0, LSmali;->conditionA:Z
-
- move/from16 v42, v0
-
- if-eqz v42, :cond_202
-
- const/high16 v42, 0x447a0000 # 1000.0f
-
- div-float v18, v18, v42
-
- const/high16 v42, 0x447a0000 # 1000.0f
-
- div-float v19, v19, v42
-
- const/high16 v42, 0x447a0000 # 1000.0f
-
- div-float v20, v20, v42
-
- const/high16 v42, 0x447a0000 # 1000.0f
-
- div-float v21, v21, v42
-
- const/high16 v42, 0x447a0000 # 1000.0f
-
- div-float v22, v22, v42
-
- const/high16 v42, 0x447a0000 # 1000.0f
-
- div-float v23, v23, v42
-
- const/high16 v42, 0x447a0000 # 1000.0f
-
- div-float v17, v17, v42
-
- const/high16 v42, 0x447a0000 # 1000.0f
-
- div-float v10, v10, v42
-
- const/high16 v42, 0x447a0000 # 1000.0f
-
- div-float v11, v11, v42
-
- const/high16 v42, 0x447a0000 # 1000.0f
-
- div-float v12, v12, v42
-
- const/high16 v42, 0x447a0000 # 1000.0f
-
- div-float v13, v13, v42
-
- const/high16 v42, 0x447a0000 # 1000.0f
-
- div-float v14, v14, v42
-
- const/high16 v42, 0x447a0000 # 1000.0f
-
- div-float v32, v32, v42
-
- const/high16 v42, 0x447a0000 # 1000.0f
-
- div-float v33, v33, v42
-
- const/high16 v42, 0x447a0000 # 1000.0f
-
- div-float v34, v34, v42
-
- const/high16 v42, 0x447a0000 # 1000.0f
-
- div-float v35, v35, v42
-
- const/high16 v42, 0x447a0000 # 1000.0f
-
- div-float v36, v36, v42
-
- const/high16 v42, 0x447a0000 # 1000.0f
-
- div-float v3, v3, v42
-
- const/high16 v42, 0x447a0000 # 1000.0f
-
- div-float v4, v4, v42
-
- const/high16 v42, 0x447a0000 # 1000.0f
-
- div-float v5, v5, v42
-
- const/high16 v42, 0x447a0000 # 1000.0f
-
- div-float v6, v6, v42
-
- const/high16 v42, 0x447a0000 # 1000.0f
-
- div-float v7, v7, v42
-
- const/high16 v42, 0x447a0000 # 1000.0f
-
- div-float v25, v25, v42
-
- const/high16 v42, 0x447a0000 # 1000.0f
-
- div-float v26, v26, v42
-
- const/high16 v42, 0x447a0000 # 1000.0f
-
- div-float v27, v27, v42
-
- const/high16 v42, 0x447a0000 # 1000.0f
-
- div-float v28, v28, v42
-
- const/high16 v42, 0x447a0000 # 1000.0f
-
- div-float v29, v29, v42
-
- const/high16 v42, 0x447a0000 # 1000.0f
-
- div-float v24, v24, v42
-
- const/high16 v42, 0x447a0000 # 1000.0f
-
- div-float v2, v2, v42
-
- const/high16 v42, 0x447a0000 # 1000.0f
-
- div-float v16, v16, v42
-
- const/high16 v42, 0x447a0000 # 1000.0f
-
- div-float v15, v15, v42
-
- const/high16 v42, 0x447a0000 # 1000.0f
-
- div-float v38, v38, v42
-
- const/high16 v42, 0x447a0000 # 1000.0f
-
- div-float v37, v37, v42
-
- const/high16 v42, 0x447a0000 # 1000.0f
-
- div-float v9, v9, v42
-
- const/high16 v42, 0x447a0000 # 1000.0f
-
- div-float v8, v8, v42
-
- const/high16 v42, 0x447a0000 # 1000.0f
-
- div-float v31, v31, v42
-
- const/high16 v42, 0x447a0000 # 1000.0f
-
- div-float v30, v30, v42
-
- :cond_202
- move-object/from16 v0, p0
-
- iget-boolean v0, v0, LSmali;->conditionB:Z
-
- move/from16 v42, v0
-
- if-eqz v42, :cond_29e
-
- const/high16 v42, 0x42c80000 # 100.0f
-
- div-float v18, v18, v42
-
- const/high16 v42, 0x42c80000 # 100.0f
-
- div-float v19, v19, v42
-
- const/high16 v42, 0x42c80000 # 100.0f
-
- div-float v20, v20, v42
-
- const/high16 v42, 0x42c80000 # 100.0f
-
- div-float v21, v21, v42
-
- const/high16 v42, 0x42c80000 # 100.0f
-
- div-float v22, v22, v42
-
- const/high16 v42, 0x42c80000 # 100.0f
-
- div-float v23, v23, v42
-
- const/high16 v42, 0x42c80000 # 100.0f
-
- div-float v17, v17, v42
-
- const/high16 v42, 0x42c80000 # 100.0f
-
- div-float v10, v10, v42
-
- const/high16 v42, 0x42c80000 # 100.0f
-
- div-float v11, v11, v42
-
- const/high16 v42, 0x42c80000 # 100.0f
-
- div-float v12, v12, v42
-
- const/high16 v42, 0x42c80000 # 100.0f
-
- div-float v13, v13, v42
-
- const/high16 v42, 0x42c80000 # 100.0f
-
- div-float v14, v14, v42
-
- const/high16 v42, 0x42c80000 # 100.0f
-
- div-float v32, v32, v42
-
- const/high16 v42, 0x42c80000 # 100.0f
-
- div-float v33, v33, v42
-
- const/high16 v42, 0x42c80000 # 100.0f
-
- div-float v34, v34, v42
-
- const/high16 v42, 0x42c80000 # 100.0f
-
- div-float v35, v35, v42
-
- const/high16 v42, 0x42c80000 # 100.0f
-
- div-float v36, v36, v42
-
- const/high16 v42, 0x42c80000 # 100.0f
-
- div-float v3, v3, v42
-
- const/high16 v42, 0x42c80000 # 100.0f
-
- div-float v4, v4, v42
-
- const/high16 v42, 0x42c80000 # 100.0f
-
- div-float v5, v5, v42
-
- const/high16 v42, 0x42c80000 # 100.0f
-
- div-float v6, v6, v42
-
- const/high16 v42, 0x42c80000 # 100.0f
-
- div-float v7, v7, v42
-
- const/high16 v42, 0x42c80000 # 100.0f
-
- div-float v25, v25, v42
-
- const/high16 v42, 0x42c80000 # 100.0f
-
- div-float v26, v26, v42
-
- const/high16 v42, 0x42c80000 # 100.0f
-
- div-float v27, v27, v42
-
- const/high16 v42, 0x42c80000 # 100.0f
-
- div-float v28, v28, v42
-
- const/high16 v42, 0x42c80000 # 100.0f
-
- div-float v29, v29, v42
-
- const/high16 v42, 0x42c80000 # 100.0f
-
- div-float v24, v24, v42
-
- const/high16 v42, 0x42c80000 # 100.0f
-
- div-float v2, v2, v42
-
- const/high16 v42, 0x42c80000 # 100.0f
-
- div-float v16, v16, v42
-
- const/high16 v42, 0x42c80000 # 100.0f
-
- div-float v15, v15, v42
-
- const/high16 v42, 0x42c80000 # 100.0f
-
- div-float v38, v38, v42
-
- const/high16 v42, 0x42c80000 # 100.0f
-
- div-float v37, v37, v42
-
- const/high16 v42, 0x42c80000 # 100.0f
-
- div-float v9, v9, v42
-
- const/high16 v42, 0x42c80000 # 100.0f
-
- div-float v8, v8, v42
-
- const/high16 v42, 0x42c80000 # 100.0f
-
- div-float v31, v31, v42
-
- const/high16 v42, 0x42c80000 # 100.0f
-
- div-float v30, v30, v42
-
- :cond_29e
- move-object/from16 v0, p0
-
- iget-boolean v0, v0, LSmali;->conditionC:Z
-
- move/from16 v42, v0
-
- if-eqz v42, :cond_33a
-
- const/high16 v42, 0x41400000 # 12.0f
-
- div-float v18, v18, v42
-
- const/high16 v42, 0x41400000 # 12.0f
-
- div-float v19, v19, v42
-
- const/high16 v42, 0x41400000 # 12.0f
-
- div-float v20, v20, v42
-
- const/high16 v42, 0x41400000 # 12.0f
-
- div-float v21, v21, v42
-
- const/high16 v42, 0x41400000 # 12.0f
-
- div-float v22, v22, v42
-
- const/high16 v42, 0x41400000 # 12.0f
-
- div-float v23, v23, v42
-
- const/high16 v42, 0x41400000 # 12.0f
-
- div-float v17, v17, v42
-
- const/high16 v42, 0x41400000 # 12.0f
-
- div-float v10, v10, v42
-
- const/high16 v42, 0x41400000 # 12.0f
-
- div-float v11, v11, v42
-
- const/high16 v42, 0x41400000 # 12.0f
-
- div-float v12, v12, v42
-
- const/high16 v42, 0x41400000 # 12.0f
-
- div-float v13, v13, v42
-
- const/high16 v42, 0x41400000 # 12.0f
-
- div-float v14, v14, v42
-
- const/high16 v42, 0x41400000 # 12.0f
-
- div-float v32, v32, v42
-
- const/high16 v42, 0x41400000 # 12.0f
-
- div-float v33, v33, v42
-
- const/high16 v42, 0x41400000 # 12.0f
-
- div-float v34, v34, v42
-
- const/high16 v42, 0x41400000 # 12.0f
-
- div-float v35, v35, v42
-
- const/high16 v42, 0x41400000 # 12.0f
-
- div-float v36, v36, v42
-
- const/high16 v42, 0x41400000 # 12.0f
-
- div-float v3, v3, v42
-
- const/high16 v42, 0x41400000 # 12.0f
-
- div-float v4, v4, v42
-
- const/high16 v42, 0x41400000 # 12.0f
-
- div-float v5, v5, v42
-
- const/high16 v42, 0x41400000 # 12.0f
-
- div-float v6, v6, v42
-
- const/high16 v42, 0x41400000 # 12.0f
-
- div-float v7, v7, v42
-
- const/high16 v42, 0x41400000 # 12.0f
-
- div-float v25, v25, v42
-
- const/high16 v42, 0x41400000 # 12.0f
-
- div-float v26, v26, v42
-
- const/high16 v42, 0x41400000 # 12.0f
-
- div-float v27, v27, v42
-
- const/high16 v42, 0x41400000 # 12.0f
-
- div-float v28, v28, v42
-
- const/high16 v42, 0x41400000 # 12.0f
-
- div-float v29, v29, v42
-
- const/high16 v42, 0x41400000 # 12.0f
-
- div-float v24, v24, v42
-
- const/high16 v42, 0x41400000 # 12.0f
-
- div-float v2, v2, v42
-
- const/high16 v42, 0x41400000 # 12.0f
-
- div-float v16, v16, v42
-
- const/high16 v42, 0x41400000 # 12.0f
-
- div-float v15, v15, v42
-
- const/high16 v42, 0x41400000 # 12.0f
-
- div-float v38, v38, v42
-
- const/high16 v42, 0x41400000 # 12.0f
-
- div-float v37, v37, v42
-
- const/high16 v42, 0x41400000 # 12.0f
-
- div-float v9, v9, v42
-
- const/high16 v42, 0x41400000 # 12.0f
-
- div-float v8, v8, v42
-
- const/high16 v42, 0x41400000 # 12.0f
-
- div-float v31, v31, v42
-
- const/high16 v42, 0x41400000 # 12.0f
-
- div-float v30, v30, v42
-
- :cond_33a
- const/16 v41, 0x0
-
- const/high16 v42, 0x42c80000 # 100.0f
-
- mul-float v42, v42, v41
-
- invoke-static/range {v42 .. v42}, Ljava/lang/Math;->round(F)I
-
- move-result v42
-
- move/from16 v0, v42
-
- int-to-float v0, v0
-
- move/from16 v42, v0
-
- const/high16 v43, 0x42c80000 # 100.0f
-
- div-float v41, v42, v43
-
- new-instance v42, Ljava/lang/StringBuilder;
-
- invoke-direct/range {v42 .. v42}, Ljava/lang/StringBuilder;-><init>()V
-
- move-object/from16 v0, v42
-
- move/from16 v1, v41
-
- invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(F)Ljava/lang/StringBuilder;
-
- move-result-object v42
-
- move-object/from16 v0, v42
-
- move-object/from16 v1, v39
-
- invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
-
- move-result-object v42
-
- invoke-virtual/range {v42 .. v42}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
-
- move-result-object v40
-
- return-void
-
- :cond_367
- const/high16 v19, 0x3f800000 # 1.0f
-
- goto/16 :goto_c
-
- :cond_36b
- const/high16 v18, 0x3f800000 # 1.0f
-
- goto/16 :goto_16
-
- :cond_36f
- const/high16 v20, 0x3f800000 # 1.0f
-
- goto/16 :goto_20
-
- :cond_373
- const/high16 v21, 0x3f800000 # 1.0f
-
- goto/16 :goto_2a
-
- :cond_377
- const/high16 v22, 0x3f800000 # 1.0f
-
- goto/16 :goto_34
-
- :cond_37b
- const/high16 v23, 0x3f800000 # 1.0f
-
- goto/16 :goto_3e
-
- :cond_37f
- const/high16 v17, 0x3f800000 # 1.0f
-
- goto/16 :goto_48
-
- :cond_383
- const/high16 v2, 0x3f800000 # 1.0f
-
- goto/16 :goto_51
-
- :cond_387
- const/high16 v24, 0x3f800000 # 1.0f
-
- goto/16 :goto_5b
-
- :cond_38b
- const/high16 v25, 0x3f800000 # 1.0f
-
- goto/16 :goto_65
-
- :cond_38f
- const/high16 v26, 0x3f800000 # 1.0f
-
- goto/16 :goto_6f
-
- :cond_393
- const/high16 v27, 0x3f800000 # 1.0f
-
- goto/16 :goto_79
-
- :cond_397
- const/high16 v28, 0x3f800000 # 1.0f
-
- goto/16 :goto_83
-
- :cond_39b
- const/high16 v29, 0x3f800000 # 1.0f
-
- goto/16 :goto_8d
-
- :cond_39f
- const/high16 v31, 0x3f800000 # 1.0f
-
- goto/16 :goto_97
-
- :cond_3a3
- const/high16 v30, 0x3f800000 # 1.0f
-
- goto/16 :goto_a1
-
- :cond_3a7
- const/high16 v3, 0x3f800000 # 1.0f
-
- goto/16 :goto_aa
-
- :cond_3ab
- const/high16 v4, 0x3f800000 # 1.0f
-
- goto/16 :goto_b3
-
- :cond_3af
- const/high16 v5, 0x3f800000 # 1.0f
-
- goto/16 :goto_bc
-
- :cond_3b3
- const/high16 v6, 0x3f800000 # 1.0f
-
- goto/16 :goto_c5
-
- :cond_3b7
- const/high16 v7, 0x3f800000 # 1.0f
-
- goto/16 :goto_ce
-
- :cond_3bb
- const/high16 v9, 0x3f800000 # 1.0f
-
- goto/16 :goto_d7
-
- :cond_3bf
- const/high16 v8, 0x3f800000 # 1.0f
-
- goto/16 :goto_e0
-
- :cond_3c3
- const/high16 v32, 0x3f800000 # 1.0f
-
- goto/16 :goto_ea
-
- :cond_3c7
- const/high16 v33, 0x3f800000 # 1.0f
-
- goto/16 :goto_f4
-
- :cond_3cb
- const/high16 v34, 0x3f800000 # 1.0f
-
- goto/16 :goto_fe
-
- :cond_3cf
- const/high16 v35, 0x3f800000 # 1.0f
-
- goto/16 :goto_108
-
- :cond_3d3
- const/high16 v36, 0x3f800000 # 1.0f
-
- goto/16 :goto_112
-
- :cond_3d7
- const/high16 v38, 0x3f800000 # 1.0f
-
- goto/16 :goto_11c
-
- :cond_3db
- const/high16 v37, 0x3f800000 # 1.0f
-
- goto/16 :goto_126
-
- :cond_3df
- const/high16 v10, 0x3f800000 # 1.0f
-
- goto/16 :goto_12f
-
- :cond_3e3
- const/high16 v11, 0x3f800000 # 1.0f
-
- goto/16 :goto_138
-
- :cond_3e7
- const/high16 v12, 0x3f800000 # 1.0f
-
- goto/16 :goto_141
-
- :cond_3eb
- const/high16 v13, 0x3f800000 # 1.0f
-
- goto/16 :goto_14a
-
- :cond_3ef
- const/high16 v14, 0x3f800000 # 1.0f
-
- goto/16 :goto_153
-
- :cond_3f3
- const/high16 v16, 0x3f800000 # 1.0f
-
- goto/16 :goto_15d
-
- :cond_3f7
- const/high16 v15, 0x3f800000 # 1.0f
-
- goto/16 :goto_166
-.end method
-
-## CHECK-START-ARM64: void Smali.testD8() register (after)
-## CHECK: begin_block
-## CHECK: name "B0"
-## CHECK: <<This:l\d+>> ParameterValue
-## CHECK: end_block
-
-## CHECK: begin_block
-## CHECK: successors "<<ThenBlockA:B\d+>>" "<<ElseBlockA:B\d+>>"
-## CHECK: <<CondA:z\d+>> InstanceFieldGet [<<This>>] field_name:Smali.conditionA
-## CHECK: If [<<CondA>>]
-## CHECK: end_block
-
-## CHECK: begin_block
-## CHECK: name "<<ThenBlockA>>"
-## CHECK: end_block
-## CHECK: begin_block
-## CHECK: name "<<ElseBlockA>>"
-## CHECK: ParallelMove moves:[d2->d0,40(sp)->d17,d20->d26,d19->d27,d27->d1,d26->d2,d14->d20,d13->d19,d17->d14,d0->d13]
-## CHECK: end_block
-
-## CHECK: begin_block
-## CHECK: successors "<<ThenBlockB:B\d+>>" "<<ElseBlockB:B\d+>>"
-## CHECK: <<CondB:z\d+>> InstanceFieldGet [<<This>>] field_name:Smali.conditionB
-## CHECK: If [<<CondB>>]
-## CHECK: end_block
-
-## CHECK: begin_block
-## CHECK: name "<<ThenBlockB>>"
-## CHECK: end_block
-## CHECK: begin_block
-## CHECK: name "<<ElseBlockB>>"
-## CHECK: ParallelMove moves:[#100->d13,16(sp)->d1,20(sp)->d2,28(sp)->d19,24(sp)->d20,36(sp)->d14,32(sp)->16(sp),d1->20(sp),d2->24(sp),d20->28(sp),d19->32(sp),d14->36(sp),d13->40(sp)]
-## CHECK: end_block
-
-## CHECK-START-ARM64: void Smali.testD8() disassembly (after)
-## CHECK: begin_block
-## CHECK: name "B0"
-## CHECK: <<This:l\d+>> ParameterValue
-## CHECK: end_block
-
-## CHECK: begin_block
-## CHECK: successors "<<ThenBlockA:B\d+>>" "<<ElseBlockA:B\d+>>"
-## CHECK: <<CondA:z\d+>> InstanceFieldGet [<<This>>] field_name:Smali.conditionA
-## CHECK: If [<<CondA>>]
-## CHECK: end_block
-
-## CHECK: begin_block
-## CHECK: name "<<ThenBlockA>>"
-## CHECK: end_block
-## CHECK: begin_block
-## CHECK: name "<<ElseBlockA>>"
-## CHECK: end_block
-
-## CHECK: begin_block
-## CHECK: successors "<<ThenBlockB:B\d+>>" "<<ElseBlockB:B\d+>>"
-## CHECK: <<CondB:z\d+>> InstanceFieldGet [<<This>>] field_name:Smali.conditionB
-## CHECK: If [<<CondB>>]
-## CHECK: end_block
-
-## CHECK: begin_block
-## CHECK: name "<<ThenBlockB>>"
-## CHECK: end_block
-## CHECK: begin_block
-## CHECK: name "<<ElseBlockB>>"
-## CHECK: ParallelMove moves:[invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid]
-## CHECK: ldr w16, [sp, #32]
-## CHECK: str s19, [sp, #32]
-## CHECK: ldr s19, [sp, #28]
-## CHECK: str s20, [sp, #28]
-## CHECK: ldr s20, [sp, #24]
-## CHECK: str s2, [sp, #24]
-## CHECK: ldr s2, [sp, #20]
-## CHECK: str s1, [sp, #20]
-## CHECK: ldr s1, [sp, #16]
-## CHECK: str w16, [sp, #16]
-## CHECK: fmov d31, d14
-## CHECK: ldr s14, [sp, #36]
-## CHECK: str s31, [sp, #36]
-## CHECK: str s13, [sp, #40]
-## CHECK: ldr s13, pc+580 (addr 0x61c) (100)
-## CHECK: end_block
-.method public testD8()V
- .registers 47
-
- move-object/from16 v0, p0
-
- const-string v1, ""
-
- iget-boolean v2, v0, LSmali;->b17:Z
-
- if-eqz v2, :cond_a
-
- const/4 v2, 0x0
-
- goto :goto_c
-
- :cond_a
- const/high16 v2, 0x3f800000 # 1.0f
-
- :goto_c
- iget-boolean v5, v0, LSmali;->b16:Z
-
- if-eqz v5, :cond_12
-
- const/4 v5, 0x0
-
- goto :goto_14
-
- :cond_12
- const/high16 v5, 0x3f800000 # 1.0f
-
- :goto_14
- iget-boolean v6, v0, LSmali;->b18:Z
-
- if-eqz v6, :cond_1a
-
- const/4 v6, 0x0
-
- goto :goto_1c
-
- :cond_1a
- const/high16 v6, 0x3f800000 # 1.0f
-
- :goto_1c
- iget-boolean v7, v0, LSmali;->b19:Z
-
- if-eqz v7, :cond_22
-
- const/4 v7, 0x0
-
- goto :goto_24
-
- :cond_22
- const/high16 v7, 0x3f800000 # 1.0f
-
- :goto_24
- iget-boolean v8, v0, LSmali;->b20:Z
-
- if-eqz v8, :cond_2a
-
- const/4 v8, 0x0
-
- goto :goto_2c
-
- :cond_2a
- const/high16 v8, 0x3f800000 # 1.0f
-
- :goto_2c
- iget-boolean v9, v0, LSmali;->b21:Z
-
- if-eqz v9, :cond_32
-
- const/4 v9, 0x0
-
- goto :goto_34
-
- :cond_32
- const/high16 v9, 0x3f800000 # 1.0f
-
- :goto_34
- iget-boolean v10, v0, LSmali;->b15:Z
-
- if-eqz v10, :cond_3a
-
- const/4 v10, 0x0
-
- goto :goto_3c
-
- :cond_3a
- const/high16 v10, 0x3f800000 # 1.0f
-
- :goto_3c
- iget-boolean v11, v0, LSmali;->b00:Z
-
- if-eqz v11, :cond_42
-
- const/4 v11, 0x0
-
- goto :goto_44
-
- :cond_42
- const/high16 v11, 0x3f800000 # 1.0f
-
- :goto_44
- iget-boolean v12, v0, LSmali;->b22:Z
-
- if-eqz v12, :cond_4a
-
- const/4 v12, 0x0
-
- goto :goto_4c
-
- :cond_4a
- const/high16 v12, 0x3f800000 # 1.0f
-
- :goto_4c
- iget-boolean v13, v0, LSmali;->b23:Z
-
- if-eqz v13, :cond_52
-
- const/4 v13, 0x0
-
- goto :goto_54
-
- :cond_52
- const/high16 v13, 0x3f800000 # 1.0f
-
- :goto_54
- iget-boolean v14, v0, LSmali;->b24:Z
-
- if-eqz v14, :cond_5a
-
- const/4 v14, 0x0
-
- goto :goto_5c
-
- :cond_5a
- const/high16 v14, 0x3f800000 # 1.0f
-
- :goto_5c
- iget-boolean v15, v0, LSmali;->b25:Z
-
- if-eqz v15, :cond_62
-
- const/4 v15, 0x0
-
- goto :goto_64
-
- :cond_62
- const/high16 v15, 0x3f800000 # 1.0f
-
- :goto_64
- iget-boolean v3, v0, LSmali;->b26:Z
-
- if-eqz v3, :cond_6a
-
- const/4 v3, 0x0
-
- goto :goto_6c
-
- :cond_6a
- const/high16 v3, 0x3f800000 # 1.0f
-
- :goto_6c
- iget-boolean v4, v0, LSmali;->b27:Z
-
- if-eqz v4, :cond_72
-
- const/4 v4, 0x0
-
- goto :goto_74
-
- :cond_72
- const/high16 v4, 0x3f800000 # 1.0f
-
- :goto_74
- move-object/from16 v18, v1
-
- iget-boolean v1, v0, LSmali;->b29:Z
-
- if-eqz v1, :cond_7c
-
- const/4 v1, 0x0
-
- goto :goto_7e
-
- :cond_7c
- const/high16 v1, 0x3f800000 # 1.0f
-
- :goto_7e
- move/from16 v19, v1
-
- iget-boolean v1, v0, LSmali;->b28:Z
-
- if-eqz v1, :cond_86
-
- const/4 v1, 0x0
-
- goto :goto_88
-
- :cond_86
- const/high16 v1, 0x3f800000 # 1.0f
-
- :goto_88
- move/from16 v20, v1
-
- iget-boolean v1, v0, LSmali;->b01:Z
-
- if-eqz v1, :cond_90
-
- const/4 v1, 0x0
-
- goto :goto_92
-
- :cond_90
- const/high16 v1, 0x3f800000 # 1.0f
-
- :goto_92
- move/from16 v21, v11
-
- iget-boolean v11, v0, LSmali;->b02:Z
-
- if-eqz v11, :cond_9a
-
- const/4 v11, 0x0
-
- goto :goto_9c
-
- :cond_9a
- const/high16 v11, 0x3f800000 # 1.0f
-
- :goto_9c
- move/from16 v22, v12
-
- iget-boolean v12, v0, LSmali;->b03:Z
-
- if-eqz v12, :cond_a4
-
- const/4 v12, 0x0
-
- goto :goto_a6
-
- :cond_a4
- const/high16 v12, 0x3f800000 # 1.0f
-
- :goto_a6
- move/from16 v23, v4
-
- iget-boolean v4, v0, LSmali;->b04:Z
-
- if-eqz v4, :cond_ae
-
- const/4 v4, 0x0
-
- goto :goto_b0
-
- :cond_ae
- const/high16 v4, 0x3f800000 # 1.0f
-
- :goto_b0
- move/from16 v24, v3
-
- iget-boolean v3, v0, LSmali;->b05:Z
-
- if-eqz v3, :cond_b8
-
- const/4 v3, 0x0
-
- goto :goto_ba
-
- :cond_b8
- const/high16 v3, 0x3f800000 # 1.0f
-
- :goto_ba
- move/from16 v25, v15
-
- iget-boolean v15, v0, LSmali;->b07:Z
-
- if-eqz v15, :cond_c2
-
- const/4 v15, 0x0
-
- goto :goto_c4
-
- :cond_c2
- const/high16 v15, 0x3f800000 # 1.0f
-
- :goto_c4
- move/from16 v26, v15
-
- iget-boolean v15, v0, LSmali;->b06:Z
-
- if-eqz v15, :cond_cc
-
- const/4 v15, 0x0
-
- goto :goto_ce
-
- :cond_cc
- const/high16 v15, 0x3f800000 # 1.0f
-
- :goto_ce
- move/from16 v27, v15
-
- iget-boolean v15, v0, LSmali;->b30:Z
-
- if-eqz v15, :cond_d6
-
- const/4 v15, 0x0
-
- goto :goto_d8
-
- :cond_d6
- const/high16 v15, 0x3f800000 # 1.0f
-
- :goto_d8
- move/from16 v28, v14
-
- iget-boolean v14, v0, LSmali;->b31:Z
-
- if-eqz v14, :cond_e0
-
- const/4 v14, 0x0
-
- goto :goto_e2
-
- :cond_e0
- const/high16 v14, 0x3f800000 # 1.0f
-
- :goto_e2
- move/from16 v29, v13
-
- iget-boolean v13, v0, LSmali;->b32:Z
-
- if-eqz v13, :cond_ea
-
- const/4 v13, 0x0
-
- goto :goto_ec
-
- :cond_ea
- const/high16 v13, 0x3f800000 # 1.0f
-
- :goto_ec
- move/from16 v30, v3
-
- iget-boolean v3, v0, LSmali;->b33:Z
-
- if-eqz v3, :cond_f4
-
- const/4 v3, 0x0
-
- goto :goto_f6
-
- :cond_f4
- const/high16 v3, 0x3f800000 # 1.0f
-
- :goto_f6
- move/from16 v31, v4
-
- iget-boolean v4, v0, LSmali;->b34:Z
-
- if-eqz v4, :cond_fe
-
- const/4 v4, 0x0
-
- goto :goto_100
-
- :cond_fe
- const/high16 v4, 0x3f800000 # 1.0f
-
- :goto_100
- move/from16 v32, v12
-
- iget-boolean v12, v0, LSmali;->b36:Z
-
- if-eqz v12, :cond_108
-
- const/4 v12, 0x0
-
- goto :goto_10a
-
- :cond_108
- const/high16 v12, 0x3f800000 # 1.0f
-
- :goto_10a
- move/from16 v33, v12
-
- iget-boolean v12, v0, LSmali;->b35:Z
-
- if-eqz v12, :cond_112
-
- const/4 v12, 0x0
-
- goto :goto_114
-
- :cond_112
- const/high16 v12, 0x3f800000 # 1.0f
-
- :goto_114
- move/from16 v34, v12
-
- iget-boolean v12, v0, LSmali;->b08:Z
-
- if-eqz v12, :cond_11c
-
- const/4 v12, 0x0
-
- goto :goto_11e
-
- :cond_11c
- const/high16 v12, 0x3f800000 # 1.0f
-
- :goto_11e
- move/from16 v35, v11
-
- iget-boolean v11, v0, LSmali;->b09:Z
-
- if-eqz v11, :cond_126
-
- const/4 v11, 0x0
-
- goto :goto_128
-
- :cond_126
- const/high16 v11, 0x3f800000 # 1.0f
-
- :goto_128
- move/from16 v36, v1
-
- iget-boolean v1, v0, LSmali;->b10:Z
-
- if-eqz v1, :cond_130
-
- const/4 v1, 0x0
-
- goto :goto_132
-
- :cond_130
- const/high16 v1, 0x3f800000 # 1.0f
-
- :goto_132
- move/from16 v37, v4
-
- iget-boolean v4, v0, LSmali;->b11:Z
-
- if-eqz v4, :cond_13a
-
- const/4 v4, 0x0
-
- goto :goto_13c
-
- :cond_13a
- const/high16 v4, 0x3f800000 # 1.0f
-
- :goto_13c
- move/from16 v38, v3
-
- iget-boolean v3, v0, LSmali;->b12:Z
-
- if-eqz v3, :cond_144
-
- const/4 v3, 0x0
-
- goto :goto_146
-
- :cond_144
- const/high16 v3, 0x3f800000 # 1.0f
-
- :goto_146
- move/from16 v39, v13
-
- iget-boolean v13, v0, LSmali;->b14:Z
-
- if-eqz v13, :cond_14e
-
- const/4 v13, 0x0
-
- goto :goto_150
-
- :cond_14e
- const/high16 v13, 0x3f800000 # 1.0f
-
- :goto_150
- move/from16 v40, v13
-
- iget-boolean v13, v0, LSmali;->b13:Z
-
- if-eqz v13, :cond_159
-
- const/16 v16, 0x0
-
- goto :goto_15b
-
- :cond_159
- const/high16 v16, 0x3f800000 # 1.0f
-
- :goto_15b
- move/from16 v13, v16
-
- move/from16 v41, v13
-
- iget-boolean v13, v0, LSmali;->conditionA:Z
-
- if-eqz v13, :cond_1a2
-
- const/high16 v13, 0x447a0000 # 1000.0f
-
- div-float/2addr v5, v13
-
- div-float/2addr v2, v13
-
- div-float/2addr v6, v13
-
- div-float/2addr v7, v13
-
- div-float/2addr v8, v13
-
- div-float/2addr v9, v13
-
- div-float/2addr v10, v13
-
- div-float/2addr v12, v13
-
- div-float/2addr v11, v13
-
- div-float/2addr v1, v13
-
- div-float/2addr v4, v13
-
- div-float/2addr v3, v13
-
- div-float/2addr v15, v13
-
- div-float/2addr v14, v13
-
- div-float v16, v39, v13
-
- div-float v38, v38, v13
-
- div-float v37, v37, v13
-
- div-float v36, v36, v13
-
- div-float v35, v35, v13
-
- div-float v32, v32, v13
-
- div-float v31, v31, v13
-
- div-float v30, v30, v13
-
- div-float v29, v29, v13
-
- div-float v28, v28, v13
-
- div-float v25, v25, v13
-
- div-float v24, v24, v13
-
- div-float v23, v23, v13
-
- div-float v22, v22, v13
-
- div-float v21, v21, v13
-
- div-float v39, v40, v13
-
- div-float v40, v41, v13
-
- div-float v33, v33, v13
-
- div-float v34, v34, v13
-
- div-float v26, v26, v13
-
- div-float v27, v27, v13
-
- div-float v19, v19, v13
-
- div-float v13, v20, v13
-
- goto :goto_1aa
-
- :cond_1a2
- move/from16 v13, v20
-
- move/from16 v16, v39
-
- move/from16 v39, v40
-
- move/from16 v40, v41
-
- :goto_1aa
- move/from16 v42, v13
-
- iget-boolean v13, v0, LSmali;->conditionB:Z
-
- const/high16 v20, 0x42c80000 # 100.0f
-
- if-eqz v13, :cond_1fd
-
- div-float v5, v5, v20
-
- div-float v2, v2, v20
-
- div-float v6, v6, v20
-
- div-float v7, v7, v20
-
- div-float v8, v8, v20
-
- div-float v9, v9, v20
-
- div-float v10, v10, v20
-
- div-float v12, v12, v20
-
- div-float v11, v11, v20
-
- div-float v1, v1, v20
-
- div-float v4, v4, v20
-
- div-float v3, v3, v20
-
- div-float v15, v15, v20
-
- div-float v14, v14, v20
-
- div-float v16, v16, v20
-
- div-float v38, v38, v20
-
- div-float v37, v37, v20
-
- div-float v36, v36, v20
-
- div-float v35, v35, v20
-
- div-float v32, v32, v20
-
- div-float v31, v31, v20
-
- div-float v30, v30, v20
-
- div-float v29, v29, v20
-
- div-float v28, v28, v20
-
- div-float v25, v25, v20
-
- div-float v24, v24, v20
-
- div-float v23, v23, v20
-
- div-float v22, v22, v20
-
- div-float v21, v21, v20
-
- div-float v39, v39, v20
-
- div-float v40, v40, v20
-
- div-float v33, v33, v20
-
- div-float v34, v34, v20
-
- div-float v26, v26, v20
-
- div-float v27, v27, v20
-
- div-float v19, v19, v20
-
- div-float v13, v42, v20
-
- goto :goto_1ff
-
- :cond_1fd
- move/from16 v13, v42
-
- :goto_1ff
- move/from16 v43, v13
-
- iget-boolean v13, v0, LSmali;->conditionC:Z
-
- if-eqz v13, :cond_244
-
- const/high16 v13, 0x41400000 # 12.0f
-
- div-float/2addr v5, v13
-
- div-float/2addr v2, v13
-
- div-float/2addr v6, v13
-
- div-float/2addr v7, v13
-
- div-float/2addr v8, v13
-
- div-float/2addr v9, v13
-
- div-float/2addr v10, v13
-
- div-float/2addr v12, v13
-
- div-float/2addr v11, v13
-
- div-float/2addr v1, v13
-
- div-float/2addr v4, v13
-
- div-float/2addr v3, v13
-
- div-float/2addr v15, v13
-
- div-float/2addr v14, v13
-
- div-float v16, v16, v13
-
- div-float v38, v38, v13
-
- div-float v37, v37, v13
-
- div-float v36, v36, v13
-
- div-float v35, v35, v13
-
- div-float v32, v32, v13
-
- div-float v31, v31, v13
-
- div-float v30, v30, v13
-
- div-float v29, v29, v13
-
- div-float v28, v28, v13
-
- div-float v25, v25, v13
-
- div-float v24, v24, v13
-
- div-float v23, v23, v13
-
- div-float v22, v22, v13
-
- div-float v21, v21, v13
-
- div-float v39, v39, v13
-
- div-float v40, v40, v13
-
- div-float v33, v33, v13
-
- div-float v34, v34, v13
-
- div-float v26, v26, v13
-
- div-float v27, v27, v13
-
- div-float v19, v19, v13
-
- div-float v13, v43, v13
-
- goto :goto_246
-
- :cond_244
- move/from16 v13, v43
-
- :goto_246
- const/16 v17, 0x0
-
- mul-float v0, v20, v17
-
- invoke-static {v0}, Ljava/lang/Math;->round(F)I
-
- move-result v0
-
- int-to-float v0, v0
-
- div-float v0, v0, v20
-
- move/from16 v44, v1
-
- new-instance v1, Ljava/lang/StringBuilder;
-
- invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
-
- invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(F)Ljava/lang/StringBuilder;
-
- move/from16 v45, v0
-
- move-object/from16 v0, v18
-
- invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
-
- invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
-
- move-result-object v1
-
- return-void
-.end method
diff --git a/test/626-checker-arm64-scratch-register/src/Main.java b/test/626-checker-arm64-scratch-register/src/Main.java
index cf94b87666..139491769e 100644
--- a/test/626-checker-arm64-scratch-register/src/Main.java
+++ b/test/626-checker-arm64-scratch-register/src/Main.java
@@ -13,8 +13,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-import java.lang.reflect.Constructor;
-import java.lang.reflect.Method;
public class Main {
@@ -65,17 +63,14 @@ public class Main {
/// CHECK: name "B0"
/// CHECK: <<This:l\d+>> ParameterValue
/// CHECK: end_block
-
- /// CHECK: begin_block
- /// CHECK: successors "<<ThenBlockA:B\d+>>" "<<ElseBlockA:B\d+>>"
- /// CHECK: <<CondA:z\d+>> InstanceFieldGet [<<This>>] field_name:Main.conditionA
- /// CHECK: If [<<CondA>>]
- /// CHECK: end_block
-
/// CHECK: begin_block
- /// CHECK: successors "<<ThenBlockB:B\d+>>" "<<ElseBlockB:B\d+>>"
+ /// CHECK: successors "<<ThenBlock:B\d+>>" "<<ElseBlock:B\d+>>"
/// CHECK: <<CondB:z\d+>> InstanceFieldGet [<<This>>] field_name:Main.conditionB
/// CHECK: If [<<CondB>>]
+ /// CHECK: end_block
+ /// CHECK: begin_block
+ /// CHECK: name "<<ElseBlock>>"
+ /// CHECK: ParallelMove moves:[40(sp)->d0,24(sp)->32(sp),28(sp)->36(sp),d0->d3,d3->d4,d2->d5,d4->d6,d5->d7,d6->d18,d7->d19,d18->d20,d19->d21,d20->d22,d21->d23,d22->d10,d23->d11,16(sp)->24(sp),20(sp)->28(sp),d10->d14,d11->d12,d12->d13,d13->d1,d14->d2,32(sp)->16(sp),36(sp)->20(sp)]
/// CHECK: end_block
/// CHECK-START-ARM64: void Main.test() disassembly (after)
@@ -87,6 +82,39 @@ public class Main {
/// CHECK: successors "<<ThenBlock:B\d+>>" "<<ElseBlock:B\d+>>"
/// CHECK: <<CondB:z\d+>> InstanceFieldGet [<<This>>] field_name:Main.conditionB
/// CHECK: If [<<CondB>>]
+ /// CHECK: end_block
+ /// CHECK: begin_block
+ /// CHECK: name "<<ElseBlock>>"
+ /// CHECK: ParallelMove moves:[invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid]
+ /// CHECK: fmov d31, d2
+ /// CHECK: ldr s2, [sp, #36]
+ /// CHECK: ldr w16, [sp, #16]
+ /// CHECK: str w16, [sp, #36]
+ /// CHECK: str s14, [sp, #16]
+ /// CHECK: ldr s14, [sp, #28]
+ /// CHECK: str s1, [sp, #28]
+ /// CHECK: ldr s1, [sp, #32]
+ /// CHECK: str s31, [sp, #32]
+ /// CHECK: ldr s31, [sp, #20]
+ /// CHECK: str s31, [sp, #40]
+ /// CHECK: str s12, [sp, #20]
+ /// CHECK: fmov d12, d11
+ /// CHECK: fmov d11, d10
+ /// CHECK: fmov d10, d23
+ /// CHECK: fmov d23, d22
+ /// CHECK: fmov d22, d21
+ /// CHECK: fmov d21, d20
+ /// CHECK: fmov d20, d19
+ /// CHECK: fmov d19, d18
+ /// CHECK: fmov d18, d7
+ /// CHECK: fmov d7, d6
+ /// CHECK: fmov d6, d5
+ /// CHECK: fmov d5, d4
+ /// CHECK: fmov d4, d3
+ /// CHECK: fmov d3, d13
+ /// CHECK: ldr s13, [sp, #24]
+ /// CHECK: str s3, [sp, #24]
+ /// CHECK: ldr s3, pc+{{\d+}} (addr {{0x[0-9a-f]+}}) (100)
/// CHECK: end_block
public void test() {
@@ -261,20 +289,9 @@ public class Main {
String res = s + r;
}
- public static void main(String[] args) throws Exception {
+ public static void main(String[] args) {
Main main = new Main();
main.test();
-
- Class<?> cl = Class.forName("Smali");
- Constructor<?> cons = cl.getConstructor();
- Object o = cons.newInstance();
-
- Method test = cl.getMethod("test");
- test.invoke(o);
-
- Method testD8 = cl.getMethod("testD8");
- testD8.invoke(o);
-
System.out.println("passed");
}
}
diff --git a/test/901-hello-ti-agent/basics.cc b/test/901-hello-ti-agent/basics.cc
index 11b32e46c3..472f2b768e 100644
--- a/test/901-hello-ti-agent/basics.cc
+++ b/test/901-hello-ti-agent/basics.cc
@@ -16,7 +16,7 @@
#include "901-hello-ti-agent/basics.h"
-#include <thread> // NOLINT [build/c++11] [5]
+#include <thread>
#include <jni.h>
#include <stdio.h>
diff --git a/test/904-object-allocation/tracking.cc b/test/904-object-allocation/tracking.cc
index 81d1b2cda9..9d2592a675 100644
--- a/test/904-object-allocation/tracking.cc
+++ b/test/904-object-allocation/tracking.cc
@@ -18,7 +18,7 @@
#include <cstdio>
#include <iostream>
-#include <mutex> // NOLINT [build/c++11] [5]
+#include <mutex>
#include <vector>
#include "android-base/logging.h"
diff --git a/test/912-classes/classes.cc b/test/912-classes/classes.cc
index a84747289f..1f6954ef99 100644
--- a/test/912-classes/classes.cc
+++ b/test/912-classes/classes.cc
@@ -16,8 +16,8 @@
#include <stdio.h>
-#include <condition_variable> // NOLINT [build/c++11] [5]
-#include <mutex> // NOLINT [build/c++11] [5]
+#include <condition_variable>
+#include <mutex>
#include <vector>
#include "android-base/macros.h"
diff --git a/test/912-classes/classes_art.cc b/test/912-classes/classes_art.cc
index 92a3ba0c97..de2e456a53 100644
--- a/test/912-classes/classes_art.cc
+++ b/test/912-classes/classes_art.cc
@@ -16,7 +16,7 @@
#include <stdio.h>
-#include <mutex> // NOLINT [build/c++11] [5]
+#include <mutex>
#include <vector>
#include "android-base/macros.h"
diff --git a/test/924-threads/threads.cc b/test/924-threads/threads.cc
index 8330179fbf..8caff768c1 100644
--- a/test/924-threads/threads.cc
+++ b/test/924-threads/threads.cc
@@ -16,7 +16,7 @@
#include <stdio.h>
-#include <mutex> // NOLINT [build/c++11] [5]
+#include <mutex>
#include <string>
#include <vector>
diff --git a/test/Android.bp b/test/Android.bp
index 17ef1141df..ba24119e9c 100644
--- a/test/Android.bp
+++ b/test/Android.bp
@@ -263,7 +263,10 @@ art_cc_defaults {
shared_libs: [
"libbase",
],
- header_libs: ["libopenjdkjvmti_headers"],
+ header_libs: [
+ "libnativehelper_header_only",
+ "libopenjdkjvmti_headers",
+ ],
include_dirs: ["art/test/ti-agent"],
}
@@ -282,6 +285,7 @@ art_cc_defaults {
"912-classes/classes_art.cc",
"936-search-onload/search_onload.cc",
"983-source-transform-verify/source_transform.cc",
+ "1940-ddms-ext/ddm_ext.cc",
],
}
diff --git a/test/Android.run-test.mk b/test/Android.run-test.mk
index 8755f04320..fe4a327a1f 100644
--- a/test/Android.run-test.mk
+++ b/test/Android.run-test.mk
@@ -27,7 +27,7 @@ TEST_ART_RUN_TEST_DEPENDENCIES := \
# Add d8 dependency, if enabled.
ifeq ($(USE_D8),true)
TEST_ART_RUN_TEST_DEPENDENCIES += \
- $(HOST_OUT_EXECUTABLES)/d8
+ $(HOST_OUT_EXECUTABLES)/d8-compat-dx
endif
# Convert's a rule name to the form used in variables, e.g. no-relocate to NO_RELOCATE
diff --git a/test/etc/default-build b/test/etc/default-build
index f14424ecf9..5c8257f210 100755
--- a/test/etc/default-build
+++ b/test/etc/default-build
@@ -294,7 +294,7 @@ function make_dex() {
local dexer="${DX}"
if [ ${USE_D8} = "true" ]; then
- dexer="${ANDROID_HOST_OUT}/bin/d8"
+ dexer="${ANDROID_HOST_OUT}/bin/d8-compat-dx"
fi
# Make dex file from desugared JAR.